ASP.NET中页面传值的几种方法
### ASP.NET中页面传值的几种方法 在ASP.NET开发中,页面间的传值是非常重要的一个环节,这对于实现用户交互、数据处理等功能至关重要。本文将详细介绍ASP.NET中常见的几种页面传值方法,并对其进行深入解析。 #### 一、表单提交(Form Post) 这是最常见的一种传值方式,通过HTML中的`<form>`标签来实现。具体做法是在当前页面构建一个表单,并设置其`action`属性为目标页面的URL,`method`属性为“post”或“get”,然后将需要传递的数据以`<input>`标签的形式添加到表单中,最后调用`submit()`方法来提交表单。 **示例代码**: ```html <form action="target.aspx" method="post" name="form1"> <input name="param1" value="1111"/> <input name="param2" value="2222"/> </form> form1.submit(); ``` #### 二、URL参数 通过在目标页面的URL后附加查询字符串的方式传递参数。这种方式简单易用,但可能暴露敏感信息。 **示例代码**: ```html <a href="target.aspx?param1=1111¶m2=2222">链接</a> ``` 在目标页面中可以通过`Request.QueryString`来获取这些参数的值。 #### 三、Session对象 `Session`对象用于存储特定用户的会话所需的信息,即服务器上的变量可用来存储与特定用户会话有关的信息。 **设置Session值**: ```csharp Session["param1"] = "1111"; ``` **获取Session值**: ```csharp string str = (string)Session["param1"]; ``` 这种方法适用于需要在多个页面间共享数据的情况,但需要注意的是,过多地使用`Session`可能会导致服务器内存占用过高。 #### 四、Application对象 `Application`对象类似于`Session`对象,但是它存储的信息被所有用户共享。因此,通常用于存储那些不经常改变且对所有用户都相同的数据。 **设置Application值**: ```csharp Application["param1"] = "1111"; ``` **获取Application值**: ```csharp string str = (string)Application["param1"]; ``` 由于所有用户都可以访问`Application`中的数据,所以在使用时要格外小心。 #### 五、Cookie `Cookie`是一种存储在客户端的小型文本文件,用于保存某些需要记住的信息,例如用户名等。 **设置Cookie值**: ```csharp HttpCookie cookie = new HttpCookie("param1"); cookie.Value = "1111"; cookie.Expires = DateTime.Now.AddYears(1); // 设置有效期 Response.Cookies.Add(cookie); ``` **获取Cookie值**: ```csharp if (Request.Cookies["param1"] != null) { string str = Request.Cookies["param1"].Value; } ``` #### 六、使用`Response.Redirect()` 通过`Response.Redirect()`方法重定向到另一个页面,并在URL中携带参数。 **示例代码**: ```csharp Response.Redirect("target.aspx?param1=1111¶m2=2222"); ``` 在目标页面中可以通过`Request.QueryString`来获取这些参数的值。 #### 七、使用`Server.Transfer()` 与`Response.Redirect()`不同,`Server.Transfer()`不会在浏览器地址栏中改变URL,而是在服务器端进行页面跳转,同时可以保持当前请求上下文不变。 **示例代码**: ```csharp Server.Transfer("target.aspx?param1=1111¶m2=2222"); ``` 在目标页面中可以通过`Request.QueryString`来获取这些参数的值。 #### 八、对象传递(Context Handler) 这是一种比较高级的方法,适用于两个页面之间需要传递复杂对象的情况。例如,在查询页面(QueryPage.aspx)和结果页面(ResultPage.aspx)之间传递对象。 **示例代码**: **QueryPage.aspx.cs**: ```csharp public class QueryPage : System.Web.UI.Page { public string StaDate { get; set; } public string EndDate { get; set; } protected void btnEnter_Click(object sender, EventArgs e) { Server.Transfer("ResultPage.aspx"); } } ``` **ResultPage.aspx.cs**: ```csharp public class ResultPage : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { QueryPage queryPage = (QueryPage)Context.Handler; Response.Write("StaDate: " + queryPage.StaDate); Response.Write("<br/>EndDate: " + queryPage.EndDate); } } ``` 通过这种方式,可以在不同的页面之间传递复杂的对象,提高了代码的复用性和灵活性。 #### 总结 以上就是在ASP.NET中常用的几种页面传值方法。每种方法都有其适用场景和优缺点,在实际开发过程中可以根据具体需求选择合适的方式来实现页面间的传值功能。合理运用这些方法,可以帮助我们更高效地完成Web应用的开发工作。



























<form action= "target.aspx" method = "post" name = "form1">
<input name = "param1" value = "1111"/>
<input name = "param2" value = "2222"/>
</form>
....
form1.submit();
....
此种方在ASP。NET中无效,因为ASP。NET的表单总是提交到自身页面,如果要提交到别一页面,需要特殊处理。
2、<A href="target.aspx?param1=1111¶m2=2222">链接地址传送</A>
接收页面: string str = Request["param1"]
3、Session共享
发送页面:Session("param1") = "1111";
按收页面 string str = Session("param1").ToString();
4、Application共享
发送页面: Application("param1") = "1111";
按收页面: string str = Application("param1").ToString();
此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
5、Cookie
6、Response.Redirect()方式
Response.Redirect("target.aspx?param1=1111¶m2=2222")
接收页面: string str = Request["param1"]
7、Server.Transfer()方式。
Server.Transfer("target.aspx?param1=1111¶m2=2222")
二、如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用1 - 6的方法传值及其不便,而第 7 种方法确有一独特的优势!但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式:
以查询数据页面为例:
在查询页面中设置如下公有属性(QueryPage.aspx):
public class QueryPage : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtStaDate;
protected System.Web.UI.WebControls.TextBox txtEndDate;
...
/// <summary>
/// 开始时间
/// </summary>
public string StaDate
{
get{ return this.txtStaDate.Text;}
set{this.txtStaDate.Text = value;}
}
/// <summary>
/// 结束时间
/// </summary>
public string EndDate
{
get{ return this.txtEndDate.Text;}
set{this.txtEndDate.Text = value;}
}
....
private void btnEnter_Click(object sender, System.EventArgs e)
{
Server.Transfer("ResultPage.aspx");
剩余5页未读,继续阅读


- 粉丝: 0
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 浅析互联网对乡村小学数学教育的作用.docx
- 金融大数据平台建设方案.docx
- 谈对综合布线系统电气保护的分析与应用.docx
- 中国医卫行业信息化建设与IT应用趋势研究报告.pdf
- 云计算在卫生职业教育资源共享中的应用.docx
- 配电网自动化建设与运行管理问题探讨1.docx
- 安防监控常用软件你知道多少.doc
- 网络科技有限公司章程范本.doc
- 图像处理中直方图双向均衡技术研究分析报告.doc
- linu操作系统讲解.ppt
- 顺利通过PMP的备考心得.docx
- 互联网监管与网络道德建设试题及复习资料.doc
- 基于PLC实现搬运机械手的控制研究设计.doc
- 附表四计划开、竣工日期和施工进度网络图.xls
- 从社会语言学的角度看网络语言.docx
- 网络视频监控在小型超市中的应用-公共场所其他.docx


