知识大全 ASP.NET页面间的传值的几种方法

Posted

篇首语:要让事情改变,行改变我自己,要让事情变得更好,先让自己变得更好。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET页面间的传值的几种方法相关的知识,希望对你有一定的参考价值。

ASP.NET页面间的传值的几种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  ASP NET WEB FORMS给开发者提供了极好的事件驱动开发模式 然而这种简单的应用程序开发模式却给我们带来了一些小问题 举个例子 在传统的ASP应用程序中 你能够通过POST方法很容易的把一个值或多个值从一个页面传送到另一个页面 用同样的方法在ASP NET中实现有点麻烦 在这里 我们可以通过其他方式来解决这种情形 ASP NET为我们提供了三种方式 一种是可以通过用QueryString来传送相应的值 再一种是通过session变量来传送相应的值 还有就是通过Server Transfer方法来实现 下面分别一一介绍

  一 使用Querystring  Querystring是一种非常简单的传值方式 其缺点就是会把要传送的值显示在浏览器的地址栏中 并且在此方法中不能够传递对象 如果你想传递一个安全性不是那么太重要或者是一个简单的数值时 用此方法最好不过了 下面通过一个小例子来完成传值工作 步骤如下

   创建一个web form

   在新建的web form中放置一个button 在放置两个TextBox TextBox

   为button按钮创建click事件

  代码如下   private void Button _Click  (object sender  System EventArgs e)     string url;   url= webform aspx?name=  +    TextBox Text +  &email=  +    TextBox Text;   Response Redirect(url);  

   新建一个目标页面命名为webform

   在webform 中放置两个Label Label

  在webform 的Page_Load中添加如下代码   private void Page_Load  (object sender  System EventArgs e)     Label Text=Request QueryString[ name ];   Label Text=Request QueryString[ email ];    运行 即可看到传递后的结果了

  二 使用Session变量  使用Session变量传值是一种最常见的方式了 此中方式不仅可以把值传递到下一个页面 还可以交叉传递到多个页面 直至把Session变量的值removed后 变量才会消失 举个例子看看

   创建一个web form

   在新建的web form中放置一个button 在放置两个TextBox TextBox

   为button按钮创建click事件

  代码如下   private void Button _Click  (object sender  System EventArgs e)            Session[ name ]=TextBox Text;   Session[ email ]=TextBox Text;   Response Redirect( webform aspx );  

   新建一个目标页面命名为webform

   在webform 中放置两个Label Label

  在webform 的Page_Load中添加如下代码   private void Page_Load  (object sender  System EventArgs e)     Label Text=Session[ name ] ToString();   Label Text=Session[ email ] ToString();   Session Remove( name );   Session Remove( email );    运行 即可看到传递后的结果了

  三 使用Server Transfer  虽然这种方法有点复杂 但也不失为一种在页面传值的方式

  举个例子看看

   创建一个web form

   在新建的web form中放置一个button 在放置两个TextBox TextBox

   为button按钮创建click事件

  代码如下   private void Button _Click  (object sender  System EventArgs e)     Server Transfer( webform aspx );  

   创建过程来返回TextBox TextBox 控件的值代码如下   public string Name     get       return TextBox Text;         public string EMail     get       return TextBox Text;     

   新建一个目标页面命名为webform

   在webform 中放置两个Label Label

  在webform 的Page_Load中添加如下代码   private void Page_Load  (object sender  System EventArgs e)     //创建原始窗体的实例   WebForm  wf ;   //获得实例化的句柄   wf =(WebForm )Context Handler;   Label Text=wf Name;   Label Text=wf EMail;      运行 即可看到传递后的结果了  

  一  打开新页面并传值    使用Response Redirect()    // WebForm aspx下    string Message = Server UrlEncode( 你好世界! );    Response Redirect( WebForm aspx?Msg= + Message);    //Webform aspx 接收传来的值    string strMsg = Server UrlDecode(Request QueryString[ Msg ]);

   使用脚本    //WebForm aspx下     Response Write(    <script>window open( WebForm aspx?Msg= + Message + )</script> );      // WebForm axpx    string strMsg=Request QueryString[ Msg ];

  二 使用Server Transfer()传递值     假设将WebForm aspx上的TextBox 的Text传递到WebForm aspx 则可以这样     在WebForm aspx上加一Button 用来转向WebForm aspx     Clieck事件内增加代码:    Server Transfer( WebForm aspx true);     在WebForm aspx上接受WebForm aspx上的值:    string text=Request Form[ TextBox ] ;

  

  使用QueryString使用QuerySting在页面间传递值已经是一种很老的机制了 这种方法的主要优点是实现起来非常简单 然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全) 同时又不能传递对象 但是在传递的值少而安全性要求不高的情况下 这个方法还是一个不错的方案 使用这种方法的步骤如下: 使用控件创建web表单(form) 创建可以返回表单的按钮和链接按钮 在按钮或链接按钮的单击事件里创建一个保存URL的字符变量 在保存的URL里添加QueryString参数 使用Response Redirect重定向到上面保存的URL下面的代码片断演示了如何实现这个方法 源页面代码 private void Button _Click(object sender System EventArgs e)string url;url= anotherwebform aspx?name= + TextBox Text + &email= + TextBox Text;Response Redirect(url);目标页面代码 private void Page_Load(object sender System EventArgs e)Label Text=Request QueryString[ name ];Label Text=Request QueryString[ email ];

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

  要显式清除它下面的代码片断演示了如何实现这个方法 源页面代码 private void Button _Click(object sender System EventArgs e)//textbox and textbox are webform//controlsSession[ name ]=TextBox Text;Session[ email ]=TextBox Text;Server Transfer( anotherwebform aspx );目标页面代码 private void Page_Load(object sender System EventArgs e)Label Text=Session[ name ] ToString();Label Text=Session[ email ] ToString();Session Remove( name );Session Remove( email );

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

  public string EMailgetreturn TextBox Text;然后调用Server Transfer方法private void Button _Click(object sender System EventArgs e)Server Transfer( anotherwebform aspx );目标页面代码 private void Page_Load(object sender System EventArgs e)//create instance of source web formWebForm wf ;//get reference to current handler instancewf =(WebForm )Context Handler;Label Text=wf Name;Label Text=wf EMail; 

  在ASP NET 中启用了跨页面传送功能 其功能和用法在以后在做介绍!页面之间传递值

  方式     在接收页 的代码里加上一行 <%@ Reference Page = WebForm aspx %>                     WebForm fp=(WebForm )Context Handler;    this TextBox Text=fp name;   //name 是第一页的public变量

  Context  提供对整个当前上下文(包括请求对象)的访问 您可以使用此类共享页之间的信息

  方式 GET方式    在发送页      public int sum= ;

  int i =int Parse(this TextBox Text)* ;

  Server Transfer( WebForm aspx?sum= +i);

  接收页        this TextBox Text=Request[ sum ] ToString();    or  this TextBox Text=Request Params[ sum ] ToString();        this TextBox Text=Request QueryString[ sum ];

  方法 全局变量

  发送页        Application[ sum ]=this TextBox Text;       Server Transfer( WebForm aspx );

  接收页        this TextBox Text=(string)Application[ sum ];

  Application实质上是整个虚拟目录中所有文件的集合 如果想在整个应用范围内使用某个变量值 Application对象将是最佳的选择

  在这里用Session[ ]的方法雷同

  方法

  发送页     定义静态变量   public static string str= ;    str=this TextBox Text;       Server Transfer( webform aspx ); 接收页     引入第一页的命名空间 using WebApplication ;      this TextBox Text=WebForm str;

   使用session

   把Visual Studio Net的当前窗口切换到WebForm 页面的代码编辑窗口 即 WebForm aspx cs文件的编辑窗口 用下列代码替换WebForm aspx cs中的Button 组件的Click事件对应的处理代码 下列代码的功能是使用Session实现源页面向目标页面传递数据

  private void Button _Click ( object sender System EventArgs e )Session [ name ] = TextBox Text ;//创建Session变量 用以存放TextBox 组件中的数据Session [ email ] = TextBox Text ;//创建Session变量 用以存放TextBox 组件中的数据Server Transfer ( WebForm aspx ) ;//向目标页面传递数据 如果你是其他页面则替换上面的WebForm aspx

   把Visual Studio Net的当前窗口切换到WebForm 页面的代码编辑窗口 即 WebForm aspx cs文件的编辑窗口 用下列代码替换WebForm aspx cs中Page的Load事件对应的处理代码 下列代码的功能是从源页面中接收数据 并通过相应组件显示接收到的数据 并清除创建的Session变量

  private void Page_Load ( object sender System EventArgs e )Label Text = Session [ name ] ToString ( ) ;Label Text = Session [ email ] ToString ( ) ;//从源页面中接收数据 显示出来Session Remove ( name ) ;Session Remove ( email ) ;//清除创建的Session的变量// 在此处放置用户代码以初始化页面

   使用QueryString   把Visual Studio Net的当前窗口切换到WebForm 页面的代码编辑窗口 即 WebForm aspx cs文件的编辑窗口 用下列代码替换WebForm aspx cs中的Button 组件的Click事件对应的处理代码 下列代码的功能是实现源页面向目标页面传递数据

  private void Button _Click ( object sender System EventArgs e )string sUrl;//定义一个字符串 此字符串中包含源页面向目标传递的数据sUrl = WebForm aspx?name= + TextBox Text + &email= + TextBox Text ;//从源页面中获得传递的数据Response Redirect ( sUrl ) ;//向目标页面传递数据

   把Visual Studio Net的当前窗口切换到WebForm 页面的代码编辑窗口 即 WebForm aspx cs文件的编辑窗口 用下列代码替换WebForm aspx cs中Page的Load事件对应的处理代码 下列代码的功能是从源页面中接收数据 并通过相应组件显示接收到的数据

  private void Page_Load ( object sender System EventArgs e )Label Text = Request QueryString [ name ] ;//使用QueryString从源页面中接收name变量数据 并通过Label 显示Label Text = Request QueryString [ email ] ;//使用QueryString从源页面中接收email变量数据 并通过Label 显示// 在此处放置用户代码以初始化页面  总结起来就是QueryString相当简单 Session相对复杂 QueryString安全性差 Session安全性高 QueryString可实现各Web页面简单数据传递 一般就是字符串类型 Session可实现各Web页面间复杂类型数据的传递等等

  在页面之间传递值得过程中 多处应用了超链接传值的方式 但是当传递的参数中含有中文字符时 在调用Request QueryString[]方法接收参数时 总是出现错误 而且错误的出现总是随机的 表现为接收的中文参数不全 后加通配符 ? 或者把中文参数后的那个参数和中文参数混在一起 不加区分

cha138/Article/program/net/201311/13566

相关参考

知识大全 ASP.NET页面间的传值的几种方法[2]

ASP.NET页面间的传值的几种方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 ASP.NET中页面传值的几种方法

ASP.NET中页面传值的几种方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!表单提交 

知识大全 ASP.NET实现页面传值的几种方法[1]

ASP.NET实现页面传值的几种方法[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第一种

知识大全 ASP.NET实现页面传值的几种方法[3]

ASP.NET实现页面传值的几种方法[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  下面的

知识大全 ASP.NET实现页面传值的几种方法[2]

ASP.NET实现页面传值的几种方法[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第五种

知识大全 ASP.NET实现页面传值的几种方法[4]

ASP.NET实现页面传值的几种方法[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用S

知识大全 ASP.NET的几种页面传值方法

ASP.NET的几种页面传值方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使用QueryS

知识大全 ASP.NET页面之间传递值的几种方式

ASP.NET页面之间传递值的几种方式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 ASP.NET 窗体间传值的方法

ASP.NET窗体间传值的方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!这篇文章介绍了ASPN

知识大全 Asp.net 页面导航的几种方法与比较

Asp.net页面导航的几种方法与比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!在ASPNET