ASP.Net页面间变量值传递的方法

所属分类: 网络编程 / ASP.NET 阅读数: 994
收藏 0 赞 0 分享

第一种方法:通过URL链接地址传递

send.aspx: 

protected void Button1_Click( sender, EventArgs e)
 {
 Request.Redirect("Default2.aspx?username=honge");
 }

receive.aspx:

string username = Request.QueryString["username"];

第二种方法:通过post方式

receive.aspx:

string username = Ruquest.Form["receive"];

第三种方法:通过session方式

send.aspx:

protected void Button1_Click( sender, EventArgs e)
 {
 Session["username"] = "honge";
 Request.Redirect("Default2.aspx");
 }

receive.aspx:

string username = Session["username"];

第四种方法:通过Application方式

send.aspx:

protected void Button1_Click( sender, EventArgs e)
 {  
 Application["username"] = "honge";    
 Request.Redirect("Default2.aspx");
 }

receive.aspx:

string username = Application["username"];

第五种方法:通过Server.Transfer方式

send.aspx: 

public string Name 
 {    
 get
 {   
 return "honge";   
 } 
 }  
 protected void Button1_Click( sender, EventArgs e)  
 {    
 Server.Transfer("Default2.aspx");  
 }

receive.aspx: 

send d = Context.Handler as send ;    
 if (d != null)    
 {     
 Response.Write(d.Name);    
 }

如果在asp.net 2.0中还可以这样用:通过PreviousPage方式

PreviousPage d = Context.Handler as PreviousPage ;
 if (d != null)
 {
 Response.Write(d.Name);
 }

也可以这样用:

send.aspx:receive.aspx:string name = PreviousPage.Name;

如果你的页面中用到了MasterPage的话,Server.Transfer传递的PreviousPage就无效了,不知道这是什么原因。所以在用到MasterPage的话,最好用Session或是Context.Items["username"]来实现。

使用QueryString

使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,但是在传递的值少而安全性要求不高的情况下,这个方法还是一个不错的方案。使用这种方法的步骤如下:

1、使用控件创建web表单(form)

2、创建可以返回表单的按钮和链接按钮

3、在按钮或链接按钮的单击事件里创建一个保存URL的字符变量

4、在保存的URL里添加QueryString参数

5、使用Response.Redirect重定向到上面保存的URL

下面的代码片断演示了如何实现这个方法:

源页面代码:

private void Button1_Click( sender, System.EventArgs e) 
 {
 string url;
 url="anotherwebform.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text; 
 Response.Redirect(url);
 }

目标页面代码:

private void Page_Load( sender, System.EventArgs e)
 {
 Label1.Text=Request.QueryString["name"];
 Label2.Text=Request.QueryString["email"];
 }

使用Session变量

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

1、在页面里添加必要的控件

2、创建可以返回表单的按钮和链接按钮

3、在按钮或链接按钮的单击事件里,把控件的值添加到session变量里

4、使用Response.Redirect方法重定向到另一个页面

5、在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它

下面的代码片断演示了如何实现这个方法:

源页面代码:

private void Button1_Click( sender, System.EventArgs e) 
 {
 file://textbox1 and textbox2 are webform
 file://controls
 Session["name"]=TextBox1.Text;
 Session["email"]=TextBox2.Text;
 Server.Transfer("anotherwebform.aspx");
 }

目标页面代码:

private void Page_Load( sender, System.EventArgs e)  
 {
 Label1.Text=Session["name"].ToString();
 Label2.Text=Session["email"].ToString();
 Session.Remove("name");
 Session.Remove("email");
 }

使用Server.Transfer

这个方法相比上面介绍的方法稍微复杂一点,但在页面间值传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的值,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下:

1、在页面里添加必要的控件

2、创建返回值的Get属性过程

3、创建可以返回表单的按钮和链接按钮

4、在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面

5、在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前

一个页面的控件的值了

以下代码综合实现上述步骤过程的代码:

源页面代码:

把以下的代码添加到页面中

public string Name
 {
 get
 {
 return TextBox1.Text;
 }
 }
 public string EMail
 {  
 get
 {
 return TextBox2.Text;
 }
 }

然后调用Server.Transfer方法

private void Button1_Click( sender, System.EventArgs e) 
 {
 Server.Transfer("anotherwebform.aspx");
 }

目标页面代码:

private void Page_Load( sender, System.EventArgs e) 
 {file://create instance of source web form
 WebForm1 wf1;
 file://get reference to current handler instance
 wf1=(WebForm1)Context.Handler;
 Label1.Text=wf1.Name;
 Label2.Text=wf1.EMail;
 }

更多精彩内容其他人还在看

.NET Core源码解析配置文件及依赖注入

这篇文章我们设计了一些复杂的概念,因为要对ASP.NET Core的启动及运行原理、配置文件的加载过程进行分析,依赖注入,控制反转等概念的讲解等
收藏 0 赞 0 分享

.NET Corek中Git的常用命令及实战演练

这篇文章将通过故事的形式从Git的历史谈起,并讲述Git的强大之处。然后通过实战演练教你如何在Github以及码云上托管我们的代码并进行代码的版本控制
收藏 0 赞 0 分享

Asp.Net Core WebAPI使用Swagger时API隐藏和分组详解

这篇文章主要给大家介绍了关于Asp.Net Core WebAPI使用Swagger时API隐藏和分组的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Asp.Net Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

如何利用FluentMigrator实现数据库迁移

这篇文章主要给大家介绍了关于如何利用FluentMigrator实现数据库迁移的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

ASP.NET Core利用Jaeger实现分布式追踪详解

这篇文章主要给大家介绍了关于ASP.NET Core利用Jaeger实现分布式追踪的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

浅谈从ASP.NET Core2.2到3.0你可能会遇到这些问题

这篇文章主要介绍了ASP.NET Core2.2到3.0可能会遇到的问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解.net core webapi 前后端开发分离后的配置和部署

这篇文章主要介绍了.net core webapi 前后端开发分离后的配置和部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

详解ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁

这篇文章主要介绍了ASP.Net Core 中如何借助CSRedis实现一个安全高效的分布式锁,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

.net 4.5部署到docker容器的完整步骤

这篇文章主要给大家介绍了关于.net 4.5部署到docker容器的完整步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用.net4.5具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享

.net core并发下线程安全问题详解

这篇文章主要给大家介绍了关于.net core并发下线程安全问题的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用.net core具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
收藏 0 赞 0 分享
查看更多