`
流星剑
  • 浏览: 94682 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ASP.NET跨页面传值技巧总结

    博客分类:
  • .net
阅读更多

ASP.NET跨页面传值技巧总结

在ASP.NET中两个网页传递变量

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页面间变量传递,实际上你稍想点办法也可以将变量传递给页面自己(页面刷新特别是换页显示时传递新的页号等时比较常用)。

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

Request.collection[“variable”]

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

 

分享到:
评论

相关推荐

    ASP.NET跨页面传值技巧总结.

    ASP.NET跨页面传值是Web开发中的常见需求,本文将介绍五种常用的方法,帮助开发者在不同的场景下选择合适的方式。 1. **使用QueryString变量**: QueryString是最直观的传值方式,它通过URL参数传递数据。适用于...

    ASP.NET跨页面传值技巧

    以下将详细介绍几种常用的ASP.NET跨页面传值技巧。 1. **使用QueryString变量**: QueryString是通过URL参数来传递数据的方式。在a.aspx页面上,可以将Label1的文本内容添加到URL中,然后通过Response.Redirect...

    ASP.NET跨页面传值技巧总结.mht

    使用QueryString变量 使用Application 对象变量 使用Session变量 使用Cookie对象变量 使用Server.Transfer方法

    ASP.NET跨页面传值技巧.

    ### ASP.NET跨页面传值技巧详解 #### 一、引言 在ASP.NET应用程序开发过程中,经常需要在不同页面之间传递数据。为了提高程序的健壮性和灵活性,掌握多种跨页面传值技巧是非常必要的。本文将详细介绍五种常用的数据...

    asp.net 父子页面传值

    每个ASP.NET页面都有自己的生命周期,包括初始化、加载事件、验证、呈现和卸载等阶段。父子页面间的通信通常发生在这些阶段中的特定时刻,以确保数据的正确传递和处理。 1. **Query String**: 最简单的父子页面间...

    ASP.NET页面传值技巧

    ASP.NET 页面传值技巧是开发 ASP.NET 应用程序时常用的技术,用于在不同页面间传递数据。这里介绍两种常见的页面传值方法:通过 `Response` 和 `Request.QueryString` 以及通过 `Session`。 1. **通过 `Response` ...

    ASPNET跨页面传值技巧

    本文将深入探讨几种ASP.NET跨页面传值的技术,以及如何在实际项目中应用这些技巧。 1. QueryString参数传递: 最简单也最常见的跨页面传值方式是通过URL的QueryString来实现。在源页面上,可以通过Response....

    ASP.net中各种传值方式

    在ASP.NET中,有多种方式可以实现页面间的数据传递,这些传值技巧是开发者必须掌握的基本技能。以下将详细阐述这些方法。 1. **Query String(查询字符串)** Query String是最常见的页面间传值方式,通过URL附加...

    ASP.NET传值方法详解

    ### ASP.NET传值方法详解 #### 一、概述 在ASP.NET开发中,页面之间的数据传递是一项基础且重要的技能。合理的数据传递不仅能够提高程序的效率,...掌握这些传值技巧,将有助于提高ASP.NET应用程序的功能性和可用性。

    Asp.Net从零开始30(页面传值2)

    通过本文的学习,您应该已经掌握了如何使用ASP.NET结合JavaScript实现页面间传值的基本技巧。这对于构建功能丰富的Web应用程序非常有帮助。当然,随着技术的发展,还有更多高效、优雅的方式来解决类似的问题,如使用...

    asp.net 页面传值的几个方法

    在这篇文章里,azamsharp 将为我们介绍一些ASP.NET页面传值的方式。本文所举的例子非常简单,仅仅包含了一个文本框和几个按钮,当按钮点击时文本框中的字符串将会以不同的方式传递到另外的页面去。 1. Response....

    asp.net不同页面间数据传递的多种方法

    1. Get(即使用QueryString显式传递)方式:在url后面跟参数。特点:简单、方便。缺点:字符串长度最长...常用技巧是把隐秘的数据存在隐藏域中由form提交。适用数据:大量数据,包括文件上传。适用范围:同Get方法用法:

    Asp.net 技巧.rar

    Asp.net 弹出窗口的几种方法 Asp.net 的几种页面传值方法 ASP.NET 简单下载的实现 Asp.net常用的三十多个代码 ASP.NET常用的三十三种实用代码 ASP.NET常用的三十三种实用代码 ASP.NET常用的三十三种实用代码 等

    asp.net wwf简单实例

    5. **工作流与ASP.NET的交互**:在实例中,主程序(ASP.NET页面或控制器)可能通过调用工作流服务来启动、暂停、恢复或终止流程。同时,工作流可以通过事件触发或回调函数与主程序交换信息,实现双向通信。 6. **...

    ASP.NET 经典常用代码

    虽然主要提及的是JavaScript技巧,但JavaScript在ASP.NET中也经常被用于增强页面交互性,因此这个资源对于增强ASP.NET页面的用户体验也很有价值。 9. **在Asp.net中如何实现弹出提示对话框.mht**: 这个网页文件...

    asp.net面试试题

    14. ASP.NET 页面传值:包括 URL 参数、Session、Cookie、Application 和 Server.Transfer 等方法。 15. 装箱与拆箱:装箱是将值类型转换为对象,拆箱则是将对象转换回原始值类型。 16. 接口继承:接口可以继承...

Global site tag (gtag.js) - Google Analytics