【2017年整理】C#页面间传值的几种方法

上传人:豆浆 文档编号:987665 上传时间:2017-05-24 格式:DOC 页数:6 大小:40.50KB
返回 下载 相关 举报
【2017年整理】C#页面间传值的几种方法_第1页
第1页 / 共6页
【2017年整理】C#页面间传值的几种方法_第2页
第2页 / 共6页
【2017年整理】C#页面间传值的几种方法_第3页
第3页 / 共6页
【2017年整理】C#页面间传值的几种方法_第4页
第4页 / 共6页
【2017年整理】C#页面间传值的几种方法_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《【2017年整理】C#页面间传值的几种方法》由会员分享,可在线阅读,更多相关《【2017年整理】C#页面间传值的几种方法(6页珍藏版)》请在金锄头文库上搜索。

1、1。使用 QueryString使用 QuerySting 在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下:1,使用控件创建 web 表单(form)2,创建可以返回表单的按钮和链接按钮3,在按钮或链接按钮的单击事件里创建一个保存 URL 的字符变量4,在保存的 URL 里添加 QueryString 参数5,使用 Response.Redirect 重定向到上面保存的 URL下面的代码片断演

2、示了如何实现这个方法:源页面 WebForm1.aspx.cs 中的部分代码:private void Button1_Click(object sender, System.EventArgs e)string url;url=WebForm2.aspx?name= + TextBox1.Text + &email= + TextBox2.Text;Response.Redirect(url);目标页面 WebForm2.aspx.cs 中的部分代码:private void Page_Load(object sender, System.EventArgs e)Label1.Text=Re

3、quest.QueryStringname;Label2.Text=Request.QueryStringemail;2。使用 Session 变量使用 Session 变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在 Session 变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在 Session 变量存储过多的数据会消耗比较多的服务器资源,在使用 session 时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的 session 来降低资源的无谓消耗。使用Session 变量传递值的一般步骤如下:1,在页面里添加必要的控

4、件2,创建可以返回表单的按钮和链接按钮3,在按钮或链接按钮的单击事件里,把控件的值添加到 session 变量里4,使用 Response.Redirect(或 Server.Transfer)方法重定向到另一个页面5,在另一个页面提取 session 的值,在确定不需要使用该 session 时,要显式清除它下面的代码片断演示了如何实现这个方法:源页面 WebForm1.aspx.cs 中的部分代码:private void Button1_Click(object sender, System.EventArgs e) /textbox1 and textbox2 are webform/

5、controlsSessionname=TextBox1.Text;Sessionemail=TextBox2.Text;Server.Transfer(WebForm2.aspx);目标页面 WebForm2.aspx.cs 中的部分代码:private void Page_Load(object sender, System.EventArgs e)Label1.Text=Sessionname.ToString();Label2.Text=Sessionemail.ToString();Session.Remove(name);Session.Remove(email);3.使用 Ser

6、ver.Transfer这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下:1,在页面里添加必要的控件2,创建返回值的 Get 属性过程3,创建可以返回表单的按钮和链接按钮4,在按钮单击事件处理程序中调用 Server.Transfer 方法转移到指定的页面5,在第二个页面中,我们就可以使用 Context.Han

7、dler 属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了以下代码综合实现上述步骤过程的代码:源页面 WebForm1.aspx.cs 中的部分代码:把以下的代码添加到页面中public string Namegetreturn TextBox1.Text;public string EMailgetreturn TextBox2.Text; 然后调用 Server.Transfer 方法private void Button1_Click(object sender, System.EventArgs e)Server.Transfer(WebForm2.as

8、px);目标页面代码:在 WebForm2.aspx 中务必在第一句话添加或然后在 WebForm2.aspx.cs 中添加如下。private void Page_Load(object sender, System.EventArgs e)/create instance of source web formWebForm1 wf1;/get reference to current handler instancewf1=(WebForm1)Context.Handler;Label1.Text=wf1.Name;Label2.Text=wf1.EMail;如果在调试的过程中遇到错误.就

9、到C:WINDOWSMicrosoft.NETFrameworkv2.0.50727Temporary ASP.NET Files 中把新建的网站名的文件夹删掉.(要先关掉 Visual Studio 开发环境再删)4.使用PreviousPageType 指令这个指令是.net 2.0 中的一个新指令 ,用于处理 ASP.NET 2.0 提供的跨页面传送新功能.用于批定跨页面的传送过程起始于哪个页面 .包含两个属性:TypeName:设置回送时的派生类名VirtualPath:设置回送时所传送页面的地址.如下示例:源页面 WebForm1.aspx 中有一个 TextBox,ID 为 txt

10、Name.在WebForm1.aspx.cs 中设置一个属性 :public TextBox Namegetreturn this.txtName;/返回一个控件对象在目标页面的设计文件中(WebForm2.aspx)的最上方加上:,然后就能引用 WebForm1.aspx 中定义的属性了.在 WebForm2.aspx.cs 中可以有如下引用形式 (假设 WebForm2.aspx 中有一个ID 为 lblName 的 Label):lblName.Text=Hello+PreviousPage.Name.Text+;5.利用某些控件的 PostBackUrl 属性示例:仍然是源页面 Web

11、Form1.aspx 和目标页面 WebForm2.aspx.WebForm1.aspx 中的部分代码:WebForm2.aspx.cs 中的部分代码 :protected void Page_Load(object Sender,System.EventArgs e)TextBox txtName;Calendar calendar1;txtName=(TextBox)PreviousPage.FindControl(txtName);calendar1=(Calendar)PreviousPage.FindControl(Calendar1);Label.Text=Hello,+txtNa

12、me.Text+calendar1.SelectedDate.ToShortDateString();使用这种方法存在一个问题:如果在没有单击那个按钮之前 ,也就是未处理WebForm1.aspx 之前,有人请求了 WebForm2.aspx,该怎么办?这就需要在WebForm2.aspx 中的代码处理之前加一个判断.使用 IsCrossPagePostBack 属性,这与 IsPostBack 属性很相似,它允许检查请求是否来自 WebForm1.aspx.如下:protected void Page_Load(object Sender,System.EventArgs e)if(Prev

13、iousPage.IsCrossPagePostBack)TextBox txtName;Calendar calendar1;txtName=(TextBox)PreviousPage.FindControl(txtName);calendar1=(Calendar)PreviousPage.FindControl(Calendar1);Label.Text=Hello,+txtName.Text+calendar1.SelectedDate.ToShortDateString();elseResponse.Redirect(WebForm1.aspx);6. 使用 Cookie 对象变量这

14、个也是大家常使用的方法,与 Session 一样,是对每一个用户而言的,但是有个本质的区别,即 Cookie 是存放在客户端的,而 session 是存放在服务器端的。而且 Cookie 的使用要配合 ASP.NET 内置对象 Request 来使用。a.aspx 的 C#代码private void Button1_Click(object sender, System.EventArgs e)HttpCookie cookie_name = new HttpCookie(name);cookie_name.Value = Label1.Text;Reponse.AppendCookie(c

15、ookie_name);Server.Transfer(b.aspx);b.aspx 中 C#代码private void Page_Load(object sender, EventArgs e)string name;name = Request.Cookiename.Value.ToString();7. 使用 Application 对象变量Application 对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用 Lock 和 UnLock。a.aspx 的 C#代码private void Button1_Click(object sender, System.EventArgs e)Applicationname = Label1.Text;Server.Transfer(b.aspx);b.aspx 中 C#代码private void Page_Load(object sender, EventArgs e)string name;Application.Lock();name = Applicationname.ToString();Application.UnLock();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号