在asp.net的Web表单间传值
来源:互联网 发布:日本七日游多少钱知乎 编辑:程序博客网 时间:2024/06/05 16:54
介绍 Asp.net的Web表单为开发人员提供了极佳的事件驱动编程模型,简化了应用程序的开发设计,但同时也带来了一些问题。例如,在传统ASP编程中可以 很容易地将数据用POST方法传送到另一个ASP页面去处理。但要想在Asp.net的Web表单模型中完成同样的事情却不可能。然而,可以采用其它的一 些方法来做到。本文列举了几个办法,具体来说,这些方法包括:querystring,session和Server.Transfer。
使用Querystring Querystring是页面间传值的老办法。主要的好处就是使用起来非常简单,缺点则是传送的值可以在浏览器的地址栏里看到,而且也不能传送对象。当只需传送少量值并且没有安全性要求时,这个办法尤其适合。要使用这个办法需遵循下列步骤: 创建表单,包括必要的控件 在表单中放置可将表单post到服务器的button或linkbutton控件 在button的click事件处理程序里创建包含了指向目的页面的URL字符串 将要传送的值添加到这个URL字符串里,以作为querystring的参数 使用Response.Redirect导航到指定的URL 下面是代码片段: 源表单 -------------------------------------------------------------- private void Button1_Click(object sender, System.EventArgs e) { string url; url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; Response.Redirect(url); }
目的表单 -------------------------------------------------------------- private void Page_Load(object sender, System.EventArgs e) { Label1.Text=Request.QueryString["name"]; Label2.Text=Request.QueryString["email"]; }
使用session变量 这是另一种在页面间传值的办法。利用这个办法,可以将要传送的值保存到session变量,然后在另一个Web表单中进行存取。然而,需要知道的是,将太 多的数据保存到session变量会给服务器带来额外的负担。所以,应该谨慎地使用这种方法。此外,采用这种方法可能需要在程序中以人工方式来清除不需要 的session变量。典型的用法如下: 创建Web表单,包括必要的控件 在表单中放置可将表单post到服务器的button或linkbutton控件 在button的事件处理程序里设置session变量,将要传送的值放入其中 使用Response.Redirect导航到目的表单 在目的表单存取session变量,如必要并进行清除 以下是代码片段: 源表单 -------------------------------------------------------------- private void Button1_Click(object sender, System.EventArgs e) { //textbox1 and textbox2 are webform controls Session["name"]=TextBox1.Text; Session["email"]=TextBox2.Text; Response.Redirect("anotherwebform.aspx"); }
目的表单 -------------------------------------------------------------- private void Page_Load(object sender, System.EventArgs e) { Label1.Text=Session["name"].ToString(); Label2.Text=Session["email"].ToString(); Session.Remove("name"); Session.Remove("email"); }
使用Server.Transfer 这个办法稍微复杂。做法是先将要传送的数据定义为源表单的property属性,因此需要在源表单添加些属性定义代码。然而换来的好处是代码相当清晰,而且能体现出面向对象的特点。步骤如下: 创建Web表单,包括必要的控件 创建用以返回要传送数值的Get属性 在表单中放置可将表单post到服务器的button或linkbutton控件 在button的事件处理程序里调用Server.Transer方法以导航到目的表单 在目的表单中通过Context.Handler属性取得源表单的引用。这样就可以使用在源表单创建的Get属性来存取要传送的数据 以下是代码片段: 源表单 -------------------------------------------------------------- public string Name { get { return TextBox1.Text; } }
public string EMail { get { return TextBox2.Text; } }
private void Button1_Click(object sender, System.EventArgs e) { Server.Transfer("anotherwebform.aspx"); }
目的表单 -------------------------------------------------------------- private void Page_Load(object sender, System.EventArgs e) { //create instance of source web form WebForm1 wf1; //get reference to current handler instance wf1=(WebForm1)Context.Handler; Label1.Text=wf1.Name; Label2.Text=wf1.EMail; }
小结 本文介绍了三种在Asp.net页面间传值的办法:Querystring,Session和Server.Transfer。同时也对这三种办法的优缺点进行了分析。
- 在asp.net的Web表单间传值
- 在asp.net的Web表单间传值
- 一步步学习SPD2010--第十四章节--在Web页面使用控件(6)--测试ASP.NET表单
- ASP.NET的Form表单
- ASP.NET 表单的理解
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- [转]在ASP.NET中如何用C#.NET实现基于表单的验证(一)
- [转]在ASP.NET中如何用C#.NET实现基于表单的验证(二)
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 在ASP.NET中如何用C#.NET实现基于表单的验证
- 在ASP.NET中创建安全的web站点
- 在ASP.NET中创建安全的web站点
- 在ASP.NET中创建安全的web站点
- (转) 在ASP.NET中创建安全的web站点
- 关于 Oracle数据库的备份与恢复
- 盖茨下周退休 将全数捐出近五千亿身家(图)
- Oracle数据库的备份方法探讨
- Asp.net 备份、还原Ms SQLServer及压缩Access数据库
- 新手2步把sql2000转oracle92(数据库转换)
- 在asp.net的Web表单间传值
- SQL2000无法远程连接解决方案
- 初学java的人应该从这里开始
- JAVA常用包
- C++基础之extern “C”的作用
- 欧锦赛上初露锋芒的同龄人
- [软件人生]公司选择和企业文化——对话人生选择
- 装饰者模式 The Decorator Pattern
- 如何激发软件团队的创新精神