在两个ASP.NET页面之间传递变量

页面传值---ASP.NET之5种全局变量!页面间传值方法!. 立即下载

 

ASP.NET提供了事件驱动编程模型,使开发者简化了应用程序的总体设计,但是这个也造成了它固有的一些问题,例如,在传统的ASP里,我们可以通过使用POST方法很容易地实现页面间传递变量,同样的事情,在使用事件驱动编程模型ASP.NET就要麻烦一些,但是我们仍然有一些方法可以实现同样的功能。笔者在这里将包含使用querystring,session变量以及server.Transfer方法来实现页面间的变量传递。

 

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

使用这种方法包括如下的步骤:
a
,使用控件创建web表单(form
b
,创建可以返回表单的按钮和链接按钮
c
,在按钮或链接按钮的单击事件里创建一个保存URL的字符变量
d
,在保存的URL里添加QueryString参数
e
,使用Response.Redirect重定向到上面保存的URL
下面的代码片断演示了如何实现这个方法:
 
源页面代码:
private void Button1_Click (object sender, System.EventArgs e)

          string url;
          url="webform1.aspx?var1=" + TextBox1.Text + "&var2=" + TextBox2.Text;
          Response.Redirect(url);
}
 
目标页面代码:
 private void Page_Load (object sender, System.EventArgs e)

            Label1.Text=Request.QueryString["var1"];

// Label1.Text=Request.QueryString["var1"] 也可以直写为 Label1.Text=Request["var1"]下面的语句也是一样可以简写
            Label2.Text=Request.QueryString["var2"];
}


使用Session变量
 
使用Session变量是可以在页面间传递值的的另一种方式,在本例中我们把控件中的值存在Session变量中,然后在另一个页面中使用它,以不同页面间实现值传递的目的。但是,需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该慎重,当然了,我们也应该使用一些清理动作来去除一些不需要的session来降低资源的无谓消耗。使用Session变量传递值的一般步骤如下:
a
,在页面里添加必要的控件
b
,创建可以返回表单的按钮和链接按钮
c
,在按钮或链接按钮的单击事件里,把控件的值添加到session变量里
d
,使用Response.Redirect方法重定向到另一个页面
e
,在另一个页面提取session的值,在确定不需要使用该session时,要显式清除它

在开始使用前,首先看一下如何的使用SESSION,和ASP中相差不多
写入SESSION变量:

C#:
Session["username"])="aa";

VB:

Session("username")="aa"
读取SESSINN变量:

C#
string username= Session["username"];
VB:

dim username=Session("username")

下面的是一段使用session的程序代码
  
源页面代码:
private void Button1_Click (object sender, System.EventArgs e)
{
          Session["var1"]=TextBox1.Text;
          Session["var2"]=TextBox2.Text;
          Server.Transfer("webform1.aspx");
}
 
目标页面代码:
private void Page_Load (object sender, System.EventArgs e)
{
         Label1.Text=Session["var1"].ToString();
         Label2.Text=Session["var2"].ToString();
         Session.Remove("var1");
         Session.Remove("var2");
}

 

使用Server.Transfer
 
这个方法相比上面介绍的方法稍微复杂一点,但在页面间变量传递中却是特别有用的,使用该方法你可以在另一个页面以对象属性的方式来存取显露的,当然了,使用这种方法,你需要额外写一些代码以创建一些属性以便可以在另一个页面访问它,但是,这个方式带来的好处也是显而易见的。总体来说,使用这种方法是简洁的同时又是面向对象的。使用这种方法的整个过程如下:
a
,在页面里添加必要的控件
b
,创建返回值的Get属性过程
c
,创建可以返回表单的按钮和链接按钮
d
,在按钮单击事件处理程序中调用Server.Transfer方法转移到指定的页面
e
,在第二个页面中,我们就可以使用Context.Handler属性来获得前一个页面实例对象的引用,通过它,就可以使用存取前一个页面的控件的值了
以下代码综合实现上述步骤过程的代码:
 
源页面代码:
   
把以下的代码添加到页面中
   public string Var1

{
        get
        { 
              return TextBox1.Text;
         }
}

public string Var2
{
         get
        {
             return TextBox2.Text;
        }
}
 
然后调用Server.Transfer方法
private void Button1_Click (object sender, System.EventArgs e)
{
          Server.Transfer("webform1.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.Var1;
         Label2.Text=wf1.Var2;
}

 

后记:

笔者在上面使用不同的方法实现了ASP.NET页面间变量传递,这三种方法是:QueryString,Session和Server.Transfer,或许你还可以找到其他的办法来实现ASP.NET页面间变量传递,实际上你稍想点办法也可以将变量传递给页面自己(页面刷新特别是换页显示传递新的页号等时比较常用)。

这里特别提下request. QueryString 中的request对象实际上操作system.web 命名空间中的类httprequest。当客户发出请求执行asp.net时,CLR会将客户端请求信息包装在Request对象中。这些请求信息包括请求报头、客户端基本信息(浏览器信息、浏览器版本号、用户所用的语言、编码方式等)、请求方法(post、get)、参数名、参数值等。Request对象的调用方法为:

Request.collection[“variable”]

其中collection包括QueryString、Form、Cookies、ServerVariables四种集合,我们上面曾提到可以将Request.QueryString["var1"]写为Request["var1"]看起来比较简洁,但这样作其实不是一种好的方法,因为省掉collection选项后,Request会按照QueryString、Form、Cookies、ServerVariables的顺序进行搜索直到发现“variable”所指的关键字并返回其值,没有找到则返回(null)。因此为了提供程序的执行效率,最好还是指定collection,过多地搜索会影响程序执行的效率。置于Cookies、ServerVariables等我将在以后的文章详细说明。

ASP.Net页面变量传递的方法 页面传值是学习asp.net初期都会面临的一个问题,这篇文章主要介绍了ASP.Net页面变量传递的方法,详细的介绍了几种方法,非常具有实用价值,需要的朋友可以参考下 立即下载

相关推荐

ASP.NET之5种全局变量! 页面间传值的方法

转载自品略图书馆:http://www.pinlue.com/article/2020/03/0904/5810000440837.html 1. 使用QueryString变量   QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了...

yihuliunian的博客 2477

asp.net 页面static变量问题

下面引用 http://www.cnblogs.com/meyer/archive/2004/04/27/7846.html 在C#中,static变量表示该变量属于类,而不是类的实例。可以说是该类的所有实例共享一个static变量asp.net页面就是一个类,我们访问一个页面。就会在服务器上实例化一个该类的实例,来响应我们的请求。“所有实例共享一个static变量” 这就意味着,所有的客户...

weixin_33985679的博客 248

asp.net 全局变量共享 实例

1. 使用QueryString变量 QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。 如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。 下面是一个例子: a.aspx的C#代码 private void Button1_Click(object sender, System.

大步朝前 8635

两个ASP.NET页面之间传递变量【转】

ASP.NET提供了事件驱动编程模型,使开发者简化了应用程序的总体设计,但是这个也造成了它固有的一些问题,例如,在传统的ASP里,我们可以通过使用POST方法很容易地实现页面传递变量,同样的事情,在使用事件驱动编程模型的ASP.NET就要麻烦一些,但是我们仍然有一些方法可以实现同样的功能。笔者在这里将包含使用querystring,session变量以及server.Transfer方法来实现页...

weixin_33883178的博客 112

两个ASP.NET页面之间传递变量 (QueryString,Session和Server.Transfer)

ASP.NET提供了事件驱动编程模型,使开发者简化了应用程序的总体设计,但是这个也造成了它固有的一些问题,例如,在传统的ASP里,我们可以通过使用POST方法很容易地实现页面传递变量,同样的事情,在使用事件驱动编程模型的ASP.NET就要麻烦一些,但是我们仍然有一些方法可以实现同样的功能。笔者在这里将包含使用querystring,session变量以及server.Transfer方法来实现页面间的变量传递。<br />使用QueryString<br />使用QuerySting在页面传递值已经是一

renxingxingge的专栏 807

[网络收集]在两个ASP.NET页面之间传递变量 (QueryString,SessionCookies Application)

ASP.NET状态管理之一(概括篇) 摘自:http://www.cnblogs.com/aierong/archive/2004/07/14/23950.htmlASP.NET提供了事件驱动编程模型,使开发者简化了应用程序的总体设计,但是这个也造成了它固有的一些问题,例如,在传统的ASP里,我们可以通过使用POST方法很容易地实现页面传递变量,同样的事情,在使用事件驱动编程模型的ASP....

weixin_30765505的博客 203

也来说说asp.net页面之间传递数据 Vs ColdFusion

Asp.Net页面之间传递数据大致有这么几种方式: 1.GET方式:   即通过URL加上自定义的name-value集合,这个一般大家都在用,也很方便,而且客户可以直接通过URL访问特定的页面。 2.POST方式:   即通过提交Form来传递Form里的数据,可以在Form中添加Hidden字段来自定义数据。 3.Application域变量:   多个页面访问或修改全...

weixin_30846599的博客 71

.NET页面之间传值的方法总结

转载自 http://blog.csdn.net/liutianfeiyun/article/details/3126157   ASP.NET页面之间传值的方法,我试过的有5种方法,现在总结如下: 注意:如果谁还知道别的方法,不妨说来,共同交流一下。   1.使用session变量 使用这个方法是最常见的方法,在此中方式不仅可以把值传递到下一个页面,还可以交叉传递到多个页面,直至把S

jiong_1988的专栏 794

ASP.NET 页面之间传递值的几种方式。

35:列举ASP.NET 页面之间传递值的几种方式。   答. 1.使用QueryString,       源页面       string url;        url="anotherwebform.aspx?name=" + TextBox1.Text        Response.Redirect(url);       目标页面        Label1.Text=

357

WEB页面传参有哪些方式

<br />  <br />Asp.Net页面之间传递数据大致有这么几种方式:     <br />  1.GET方式:     <br />    即通过URL加上自定义的name-value集合,这个一般大家都在用,也很方便,而且客户可以直接通过URL访问特定的页面。     <br />  2.POST方式:     <br />    即通过提交Form来传递Form里的数据,可以在Form中添加Hidden字段来自定义数据。     <br />  3.Application域变量:     <b

fxhflower的专栏 3466

ASP.NET页面之间传递值的几种方式

列举 ASP.NET页面之间传递值的几种方式 a. 使用 QueryString, 如…?id=1;response.Redirect()… b. 使用 Session 变量 c. 使用 Server.Transfer d. Cookie 传值 e. Application 传值 f. PreviosPage g. Server.Transfer 和 Response.Redirect 的区别:Server.Transfer 是服务器内部的转接,浏览器不知晓; Response.Redirect 是有浏览器

Style_Rx的博客 479

javascript 调用c#变量实例

分两步:1. asp.net  页面类中public string tmp;  //必须为publicprivate void Page_Load(object sender, System.EventArgs e){      tmp = "test string";}2. javascrip 代码     var tmp = ""; //给脚本变量赋值    funct

wangjun2003的专栏 665

asp.net page中用ViewState读取用户控件中的属性

转自:http://www.cxyclub.cn/post/page-ViewState-UserContorl-GetValue.html 用户控件类名:WebUserControl属性:private DataTable dt //这里用public protected private都行,关键是ViewState是Protected的,...

aidang8943的博客 189
上一篇: event.srcElement 说明 方法 技巧
下一篇: Form表单提交方法
weinideai
博客等级 码龄19年 79粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值