asp.net

位置:IT落伍者 >> asp.net >> 浏览文章

ASP.NET中页面间传值各种方法介绍


发布日期:2018年09月24日
 
ASP.NET中页面间传值各种方法介绍

目前在ASPNET中页面传值共有这么几种方式

表单提交

<form action= targetaspx method = post name = form>

<input name = param value = />

<input name = param value = />

</form>

formsubmit();

此种方在ASPNET中无效因为ASPNET的表单总是提交到自身页面如果要提交到别一页面需要特殊处理

<A targetaspx?param=&param=>链接地址传送</A>

接收页面 string str = Request[param]

Session共享

发送页面Session(param) = ;

按收页面 string str = Session(param)ToString();

Application共享

发送页面 Application(param) = ;

按收页面 string str = Application(param)ToString();

此种方法不常使用因为Application在一个应用程序域范围共享所有用户可以改变及设置其值故只应用计数器等需要全局变量的地方

Cookie

ResponseRedirect()方式

ResponseRedirect(targetaspx?param=&param=)

接收页面 string str = Request[param]

ServerTransfer()方式

ServerTransfer(targetaspx?param=&param=)

接收页面 string str = Request[param]

如果在两个页面间需要大量的参数要传传递如数据查询等页面时的方法传值及其不便而第 种方法确有一独特的优势!但使用该方法时需要一定的设置现简单介绍一下该方法的使用方式

以查询数据页面为例

在查询页面中设置如下公有属性(QueryPageaspx)

public class QueryPage : SystemWebUIPage

{

protected SystemWebUIWebControlsTextBox txtStaDate;

protected SystemWebUIWebControlsTextBox txtEndDate;

/// <summary>

/// 开始时间

/// </summary>

public string StaDate

{

get { return thistxtStaDateText; }

set { thistxtStaDateText = value; }

}

/// <summary>

/// 结束时间

/// </summary>

public string EndDate

{

get { return thistxtEndDateText; }

set { thistxtEndDateText = value; }

}

private void btnEnter_Click(object sender SystemEventArgs e)

{

ServerTransfer(ResultPageaspx);

}

}

在显示查询结果页面(ResultPageaspx)

public class ResultPage : SystemWebUIPage

{

private void Page_Load(object sender SystemEventArgs e)

{

//转换一下即可获得前一页面中输入的数据

QueryPage queryPage = (QueryPage)ContextHandler;

ResponseWrite(StaDate);

ResponseWrite(queryPageStaDate);

ResponseWrite(<br/>EndDate);

ResponseWrite(queryPageEndDate);

}

}

如果有许多查询页面共用一个结果页面的设置方法

在这种方式中关键在于 QueryPage queryPage = ( QueryPage )ContextHandler; 的转换只有转换不依赖于特定的页面时即可实现

如果让所有的查询页面都继承一个接口在该接口中定义一个方法该方法的唯一作用就是让结果页面获得构建结果时所需的参数就可实现多页面共享一个结果页面操作!

先定义一个类用该类放置所有查询参数

/// <summary>

/// 结果页面中要用到的值

/// </summary>

public class QueryParams

{

private string staDate;

private string endDate;

/// <summary>

/// 开始时间

/// </summary>

public string StaDate

{

get { return thisstaDate; }

set { thisstaDate = value; }

}

/// <summary>

/// 结束时间

/// </summary>

public string EndDate

{

get { return thisendDate; }

set { thisendDate = value; }

}

}

接口定义

/// <summary>

/// 定义查询接口

/// </summary>

public interface IQueryParams

{

/// <summary>

/// 参数

/// </summary>

QueryParams Parameters { get;}

}

查询页面继承IQueryParams接口(QueryPageaspx)

/// <summary>

///查询页面继承接口

/// </summary>

public class QueryPage : SystemWebUIPage IQueryParams

{

protected SystemWebUIWebControlsTextBox txtStaDate;

protected SystemWebUIWebControlsTextBox txtEndDate;

private QueryParams queryParams;

/// <summary>

/// 结果页面用到的参数

/// </summary>

public QueryParams Parameters

{

get

{

return queryParams;

}

}

private void btnEnter_Click(object sender SystemEventArgs e)

{

//赋值

queryParams = new QueryParams();

queryParamsStaDate = thistxtStaDateText;

queryParamsEndDate = thistxtEndDateText;

ServerTransfer(ResultPageaspx);

}

}

别外的页面也如此设置

接收页面(ResultPageaspx)

public class ResultPage : SystemWebUIPage

{

private void Page_Load(object sender SystemEventArgs e)

{

QueryParams queryParams = new QueryParams();

IQueryParams queryInterface;

//实现该接口的页面

if (ContextHandler is IQueryParams)

{

queryInterface = (IQueryParams)ContextHandler;

queryParams = queryInterfaceParameters;

}

ResponseWrite(StaDate);

ResponseWrite(queryParamsStaDate);

ResponseWrite(<br/>EndDate);

ResponseWrite(queryParamsEndDate);

}

}

               

上一篇:asp.net读取数据库乱码解决方案

下一篇:ASP.NET AJAX 4.0 Preview 1