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

 更新时间:2018年11月04日 09:45:51   作者:森大科技  
页面传值是学习asp.net初期都会面临的一个问题,这篇文章主要介绍了ASP.Net页面间变量值传递的方法,详细的介绍了几种方法,非常具有实用价值,需要的朋友可以参考下

第一种方法:通过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;
 }

相关文章

  • 详解ASP.NET七大身份验证方式以及解决方案

    详解ASP.NET七大身份验证方式以及解决方案

    这篇文章主要为大家详细介绍了ASP.NET七大身份验证方式以及解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-08-08
  • 配置Spring.Net框架开发环境

    配置Spring.Net框架开发环境

    这篇文章介绍了配置Spring.Net框架开发环境的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-03-03
  • ASP.NET抓取网页内容的实现方法

    ASP.NET抓取网页内容的实现方法

    这篇文章主要介绍了ASP.NET抓取网页内容的实现方法,涉及使用HttpWebRequest及WebResponse抓取网页内容的技巧,需要的朋友可以参考下
    2015-02-02
  • 微信开发(一) asp.net接入

    微信开发(一) asp.net接入

    我们要进行微信公众平台的开发,第一步当然是要有公众号了。什么?不知道什么是微信公众号,看来你还要先回炉炼炼了,呵呵。通俗的说,我们微信平台就好像是一个大社会,里面有个体人,也有各种组织机构。
    2016-05-05
  • 使用vs2019加.net core 对WeiApi的创建过程详解

    使用vs2019加.net core 对WeiApi的创建过程详解

    这篇文章主要介绍了使用vs2019加.net core 对WeiApi的创建,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • 关于ListView下隐藏控件的解决方案分享

    关于ListView下隐藏控件的解决方案分享

    想实现一个功能,这个功能挺简单,就是当不是管理员用户登入的时候,那这个 删除 按钮就被隐藏掉;当是管理员用户的时候,就重新显示出来
    2012-04-04
  • .net邮箱发布邮箱信息的实例

    .net邮箱发布邮箱信息的实例

    本文介绍了.net邮箱发布邮箱信息的实例代码,需要的朋友可以参考一下
    2013-03-03
  • ASP.NET中使用IFRAME建立类Modal窗口

    ASP.NET中使用IFRAME建立类Modal窗口

    ASP.NET中使用IFRAME建立类Modal窗口...
    2006-09-09
  • C# 递归函数详细介绍及使用方法

    C# 递归函数详细介绍及使用方法

    什么是递归函数/方法?任何一个方法既可以调用其他方法也可以调用自己,而当这个方法调用自己时,我们就叫它递归函数或递归方法,接下来详细介绍需要了解的朋友可以参考下
    2012-12-12
  • ASP.NET使用GridView导出Excel实现方法

    ASP.NET使用GridView导出Excel实现方法

    这篇文章主要介绍了ASP.NET使用GridView导出Excel实现方法,是asp.net操作office文件的一个典型应用,代码中备有较为详尽的注释便于读者理解,需要的朋友可以参考下
    2014-11-11

最新评论