• ASP.NET


    页面间相互传值

    1、使用QueryString变量
         QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。
         优点:1)使用简单,对于安全性要求不高时传递数字或是文本值非常有效。
         缺点:1).缺乏安全性,由于它的值暴露在浏览器的URL地址中的。
                 2).不能传递对象。
         用途:后台管理页中,获取修改信息的ID

     

     

         实例:

         a.aspx的C#代码

    1 privatevoid Button1_Click(object sender, System.EventArgs e)
    2 {
    3 string s_url;
    4 s_url ="b.aspx?name="+ Label1.Text;
    5 Response.Redirect(s_url);
    6 }

       b.aspx中C#代码                                                                                                                            

    1 privatevoid Page_Load(object sender, EventArgs e)
    2 {
    3 Label2.Text = Request.QueryString["name"];
    4 }

     

     2、使用Application 对象变量
          Application变量在整个应用程序生命周期中都是有效的,类似于使用全局变量一样,所以可以在不同页面中对它进行存取。它和Session变量的区别在于,前者是所有的用户共用的全局变量,后者是各个用户独有的全局变量。
          举个例子来解释:
          网站访问的计数器变量一般采用Application变量,多个请求访问时共享这一个变量,均可对它进行操作,该变量可以被整个应用程序的各个页面直接使用。
          用户登陆的帐号名一般采用Session变量,多个请求访问时有各自的Session变量,只能对自己的该Session变量进行操作,整个应用程序的各个页面直接使用这个变量来获得用户的基本信息。
          优点:1).使用简单,消耗较少的服务器资源。
                  2).不仅能传递简单数据,还能传递对象。
                  3).数据量大小是不限制的。
          缺点:1).作为全局变量容易被误操作。
          用途:网站访问的计数器变量一般采用Application变量。

          实例:

          a.aspx的C#代码

     

    复制代码
    1 privatevoid Button1_Click(object sender, System.EventArgs e)
    2 {
    3 string Name1Value ="HelloName1";
    4 int Name2Value =1234567;
    5 Application["Name1"] = Name1Value;
    6 Application["Name2"] = Name2Value;
    7 }
    复制代码

     

        b.aspx中C#代码

     

    复制代码
    1 privatevoid Page_Load(object sender, System.EventArgs e)
    2 {
    3 string myName1Value;
    4 int myName2Value;
    5 myName1Value = Application["Name1"].ToString();
    6 myName2Value = (int)Application["Name2"];
    7 }
    复制代码

      

    3、使用Session变量
         这个应该是最常见的方法了!Session用于保存每个用户的专用信息.她的生存期是用户持续请求时间再加上一段时间(默认是20分钟).Session变量和Application变量非常类似,它们的区别也已经在上面关于Application变量时提到了。
         优点:1).使用简单,不仅能传递简单数据类型,还能传递对象。
                 2).数据量大小是不限制的。
         缺点:1).在Session变量存储大量的数据时会消耗较多的服务器资源。
         用途:会员和管理员登陆时的用户名采用Session变量保存,还有验证码也可采用Session变量保存,从而与用户输入的值进行比较

         实例:

     

         a.aspx的C#代码

     

    1 privatevoid Button1_Click(object sender, System.EventArgs e)
    2 {
    3 Session["name"] = Label.Text;
    4 }

     

        b.aspx中C#代码

     

    1 privatevoid Page_Load(object sender, EventArgs e)
    2 {
    3 string name;
    4 name = Session["name"].ToString();
    5 }

     

     4、使用Cookie对象变量
         这个也是大家常使用的方法,与Session一样,Cookie对象也是对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。
         优点:1).使用简单,是保持用户状态的一种非常常用的方法。
         缺点:1).常常被人认为用来收集用户隐私而遭到批评。
         用途:在购物网站中用户跨多个页面表单时可以用它来保持用户状态。

         实例:

     

         a.aspx的C#代码

     

    1 privatevoid Button1_Click(object sender, System.EventArgs e)
    2 {
    3 HttpCookie objCookie =new HttpCookie("myCookie","Hello,Cookie!");
    4 Response.Cookies.Add(objCookie);
    5 }

     

        b.aspx中C#代码

     

    1 privatevoid Page_Load(object sender, System.EventArgs e)
    2 {
    3 string myName1Value;
    4 myName1Value = Request.Cookies[ "myCookie" ].Value;
    5 }


    5、使用Server.Transfer方法
         Server.Transfer是从当前的ASPX页面转到新的ASPX页面,服务器端执行新页并输出,在新页面中通Context.Handler来获得前一个页面传递的各种数据类型的值、表单数据、QueryString.由于重定向完全在服务器端完成,所以客户端浏览器中的URL地址是不会改变的。调用Server.Transfer时,当前的ASPX页面终止执行,执行流程转入另一个ASPX页面,但新的ASPX页面仍使用前一ASPX页面创建的应答流。
         优点:1).直接在服务器端重定向,使用简单方便,减少了客户端对服务器端提出请求。
                 2).可以传递各种数据类型的值和控件的值。
         缺点:1).客户端浏览器中的URL地址是不改变,会导致在新的页面可能出现一些意想不到的问题。比如如果源页面和目的页面不在同一个虚拟目录或其子目录下,那么使用相对路径的图片、超链接都会导致错误的指向。

         实例:

     

         a.aspx的C#代码

     

    复制代码
    1 publicstring Name
    2 {
    3 get{ return Label1.Text;}
    4 }
    5  privatevoid Button1_Click(object sender, System.EventArgs e)
    6 {
    7 Server.Transfer("b.aspx");
    8 }
    复制代码

     

        b.aspx中C#代码

     

    复制代码
    1 privatevoid Page_Load(object sender, EventArgs e)
    2 {
    3 a newWeb; //实例a窗体
    4   newWeb = (source)Context.Handler;
    5 string name;
    6 name = newWeb.Name;
    7 }
    复制代码

     

     

          总结了一哈页面间传值的几种常用方法,其中70%的内容是参考以下网站:http://blog.csdn.net/lsd123/archive/2009/08/12/4440019.aspx

    http://www.chinaz.com/Program/.NET/030110J042010.html,再经本人总结,添加了一些其他的内容。

  • 相关阅读:
    mysql 百万级查询优化
    hibernate N+1
    sql 技巧
    redis做成windows服务
    jsonp 跨域
    maven+spring-data-jpa环境搭建
    通过浏览器地址进行 post get 请求
    spring-data-jpa 新增 修改 删除 查询 分页
    mybatis+springMVC
    java 基于 bootstrap_datagrid 分页
  • 原文地址:https://www.cnblogs.com/yzsfly/p/3054214.html
Copyright © 2020-2023  润新知