<sup id="sjju3"><noscript id="sjju3"></noscript></sup>
    <big id="sjju3"></big>

  • <blockquote id="sjju3"></blockquote>
    <blockquote id="sjju3"></blockquote>

      <td id="sjju3"></td>

      <big id="sjju3"></big>
        <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
      1. 列举ASP.NET页面之间传递值的几种方式

         更新时间:2019年03月22日 08:19:28   作者:熊金宇   我要评论

        这篇文章主要介绍了列举ASP.NET 页面之间传递值的几种方式,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

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

        1).使用QueryString, 如....?id=1; response. Redirect().... 
        2).使用Session变量 
        3).使用Server.Transfer

        为了在页面之间传递变量内容,ASP.NET给了我们几个选择。一种选择是使用QueryString 属性

        一:QueryString. 可以使用查询字符串请求网页。ASP.NET中的QueryString访问此信息。当你加载file.html?x = y时,它解析“x”和“y”。 首先,我们看到一个.aspx Web窗体页面,在用户访问Default.aspx时执?#23567;?#36825;里的代码是代码隐藏部分Default.aspx.cs。

        尝试在 URL 的末尾添加字符串“ ?param = dotnet ”。Response.Write将被触发。

        基于: .NET QueryString示例:C#

        using System;
        using System.Web.UI;
        public partial class _Default : Page
        {
         protected void Page_Load(object sender, EventArgs e)
         {
          string v = Request.QueryString["param"];
          if (v != null)
          {
           Response.Write("param is ");
           Response.Write(v);
          }
         }
        }
        

        结果, Page打印param查询的值,该值是字符串值: param is dotnet 。

        两个参数。要继续,我们测试两个查询字符串URL参数。这是开发中相当普遍的要求。可能必须同时使用其中一个或两个。

        带有多个参数的QueryString示例:C#

        using System;
        using System.Web.UI;
        public partial class _Default : Page
        {
         protected void Page_Load(object sender, EventArgs e)
         {
          string v = Request.QueryString["param"];
          if (v != null)
          {
           Response.Write("param is ");
           Response.Write(v);
          }
          string x = Request.QueryString["id"];
          if (x != null)
          {
           Response.Write(" id detected");
          }
         }
        }
        

        测?#28304;?#30721;这个网址: ?param=first&id=true

        要进行测试,请在Internet浏览器(例如Internet Explorer或Firefox)的URL末尾键入测试URL。该字符串指定“param”查询等于“first”。并且“id”参数等于“true”。

        Quote:可以使用键或索引访问的关联String键和String值的集合。

        在QueryString上使用HasKeys的页面:C#

        using System;
        using System.Web.UI;
        using System.Collections.Specialized;
        public partial class _Default : Page
        {
         protected void Page_Load(object sender, EventArgs e)
         {
          // Get collection
          NameValueCollection n = Request.QueryString;
          // 查看是否存在任何查询字符串
          if (n.HasKeys())
          {
           // 获取第一个键和值
           string k = n.GetKey(0);
           string v = n.Get(0);
           // 测试不同的键
           if (k == "param")
           {
            Response.Write("param is " + v);
           }
           if (k == "id")
           {
            Response.Write("id is " + v);
           }
          }
         }
        }
        

        Request.QueryString还可以使用它们在查询字符串中的位置来检索此值。

        private void Page_Load(object sender, 
        System.EventArgs e)
        {
        this.txtBox1.Text = Request.QueryString[0];
        this.txtBox2.Text = Request.QueryString[1];
        }
        
        
        foreach( string s in Request.QueryString)
        {
        Response.Write(Request.QueryString[s]);
        }
        
        

        要么

        for (int i =0;i < Request.QueryString.Count;i++)
        {
        Response.Write(Request.QueryString[i]);
        }
        

        这种方法的缺点

        1. QueryString 有一个最大长度,如果你必须发送很多信息这种方法不起作用。
        2. QueryString 在您的浏览器的地址部?#31181;?#21487;见,因此您不应将其与敏感信息一起使用。
        3. QueryString 不能用于发送&和空格字符。

        用%20替换空格和用%26替换空格。

        private void btnSubmit_Click(object sender, System.EventArgs e)
        {
        string p1 = this.txtName.Text.Replace("&","%26");
        p1 = this.txtName.Text.Replace(" ","%20");
        string p2 = this.txtLastName.Text.Replace("&","%26");
        p2 = this.txtName.Text.Replace(" ","%20"); 
           "WebForm2.aspx?" + 
           "Name=" + p1 + 
           "&LastName=" + p2;
        Response.Redirect(p2);
        }
        

        也可以使用Server.UrlEncode。Server.UrlEncode 方法更改查询字符串,以便它们不会产生问题。

        private void btnSubmit_Click(object sender, System.EventArgs e)
        {
        Response.Redirect("WebForm2.Aspx?" + 
        "Name=" + Server.UrlEncode(this.txtName.Text) + 
        "&LastName=" + Server.UrlEncode(this.txtLastName.Text)); 
        }
        

        二、Session&Cookie

        Session 使用简单,不仅能传递简单数据类型,还能传递对象。.数据量大小是不限制的。在Session变?#30475;?#20648;大量的数据会消耗较多的服务器资源。容易丢失。在源页面的代码中创建你需要传递的名称和值构造Session变量: Session["Name"]="Value(Or Object) ";在目的页面的代码使用Session变量取出传递的值。 Result = Session["Nmae"] 注意:session不用时可以销毁它,销毁的方法是:清除一个: Session.Remove("session名") ;清除所有: Session.Clear();

        string city = "Seattle"; 
        // 保存到Web窗体页面类中的会话状态
        Session["City"] = city; 
        //从Web窗体页面类中的会话状态读取。 
        city = (string)(Session["City"]); 
        //在Web窗体页面类之外,使用HttpContext.Current。 
        HttpContext context = HttpContext.Current; 
        context.Session["FirstName"] = firstName; 
        firstName = (string)(context.Session["FirstName"]);
        

        Session类类似于键类型字符串和值类?#25237;?#35937;的?#20540;洹?#36825;允许存储任何类型的变量,并稍后通过名称引用它。

        什?#35789;荂ookies?

        Cookie是在客户端的系统或客户端浏览器内存上创建的小文件(如果是临时的)。我们可以在客户端系统中存储小块信息,并在需要时使用它。 最有趣的是它与用户?#35813;?#22320;工作 。它可以轻松地在Web应用程序的任何位置使用。 Cookies?#28304;?#25991;本格式存储信息 。如果Web应用程序使用cookie,则服务器发送cookie,客户端浏览器将存储它。然后,浏览器在下次请求页面时将cookie返回给服务器。使用cookie的最常见示例是 存储用户信息,用户首选项,密码?#19988;?#36873;项 等.Cookies?#34892;?#22810;优点和缺点。

        Cookies是如何开始的?

        当客户端向服务器请求时,服务器将cookie发送到客户端。后续请求可以引用相同的cookie。例如,如果 codeproject.com 将会话ID存储为cookie,则当客户端第一次在服务器上命中时,服务器会生成会话ID并将其作为cookie发送到客户端

        浏览器和Web服务器负责交换cookie信息。对于不同的站点,浏览器以不同的方式保留cookie 如果页面需要来自cookie的信息,?#22791;肬RL被命中时,首先它在本地系统中搜索cookie信息,然后将其移动到具有该信息的服务器。

        Cookies的优点

        以下是在Web应用程序中使用cookie的主要优点:

        它的使用和实现非常简单。

        浏览器负责发送数据。

        对于包含cookie的多个站点,浏览器会自动排列它们。

        Cookie的缺点

        它以简单的文本格式存储数据,因此根本 不安全 。

        Cookie数据有一个大小限制( 4096字节/ 4KB )。

        允许的最大cookie数量也是有限的。大多数浏览器将cookie的数量限制为20.如果新的cookie出现,旧的cookie将被丢弃。?#34892;?#27983;览器最多支持 300 个。

        如何创建Cookie

        要使用cookie,我们需要使用命名空间System.web。

        方式1(使用HttpCookies类)

        HttpCookie StudentCookies = new HttpCookie("StudentCookies");
        StudentCookies.Value = TextBox1.Text;
        StudentCookies.Expires = DateTime.Now.AddHours(1);
        Response.Cookies.Add(StudentCookies);
        

        方式2(直接使用Response)

        Response.Cookies["StudentCookies"].Value = TextBox1.Text;
        Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);
        

        方式3(同一个cookie中的多个值)

        Response.Cookies["StudentCookies"]["RollNumber"] = TextBox1.Text;
        Response.Cookies["StudentCookies"]["FirstName"] = "Abhimanyu";
        Response.Cookies["StudentCookies"]["MiddleName"] = "Kumar";
        Response.Cookies["StudentCookies"]["LastName"] = "Vatsa";
        Response.Cookies["StudentCookies"]["TotalMarks"] = "499";
        Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);
        

        查看代码,看看我们如何创建cookie并使用Web响应添加它。

        已创建的cookie将一直存在,直到浏览器关闭。我们可以坚持使用cookie。

        如何从Cookies中读取数据

        现在是时候从cookie中检索数据了。在阅读cookie之前,首先我们需要检查是否找到了cookie。在阅读cookie之前检查cookie始终是一个好习惯,因为浏览器可能已禁用c​​ookie。

        string roll = Request.Cookies["StudentCookies"].Value; //For First Way
        
        string roll = Request.Cookies["StudentCookies"].Value; //For Second Way
        
        string roll;
        roll = Request.Cookies["StudentCookies"]["RollNumber"];
        roll = roll + " " + Request.Cookies["StudentCookies"]["FirstName"];
        roll = roll + " " + Request.Cookies["StudentCookies"]["MiddleName"];
        roll = roll + " " + Request.Cookies["StudentCookies"]["LastName"];
        roll = roll + " " + Request.Cookies["StudentCookies"]["TotalMarks"];
        Label1.Text = roll;
        
        

        如何清除cookie信息?

        我们可以在cookie文件夹中清除客户端机器上的cookie信息

        设置到cookie对象的到期时间

        userInfo.Expires = DateTime.Now.AddHours(1);

        它会在一小时内清除cookie。

        三、Application对象

        Application对象的作用范围是整个全局,也就是说?#36816;?#26377;用户?#21152;行А?#23427;在整个应用程序生命周期中都是?#34892;?#30340;,类似于使用全局变量一样,所以可以在不同页面中?#36816;?#36827;行存取。它和Session变量的区别在于,前者是所有的用户共用的全局变量,后者是各个用户独有的全局变量。

        举个例子:网站访问数。多个请求访问时都可以?#36816;?#36827;行操作。

        优点:1.使用简单,消耗较少的服务器资源。

        2.不仅能传递简单数据,还能传递对象。

        3.数据量大小是不限制的。

        缺点:1.作为全局变量容易被误操作。所以单个用户使用的变量一般不能用application。

        使用方法:1.在源页面的代码中创建你需要传递的名称和值构造Application变量:Application["Nmae"]="Value(Or Object)";

        2.在目的页面的代码使用Application变量取出传递的值。Result = Application["Nmae"]

        注意:常用lock和unlock方法用来锁定和解锁,为了防止并发修改。

        string name; 
          Application.Lock(); 
          name = Application["name"].ToString(); 
          Application.UnLock();

        四、Server.Transfer

        终止当前页面的执行并开始执行当前请求的新页面。

        Server.Transfer("Logon.aspx", true);

        以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

        相关文章

        最新评论

        2018白小姐一肖中特马
        <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
        <big id="sjju3"></big>

      2. <blockquote id="sjju3"></blockquote>
        <blockquote id="sjju3"></blockquote>

          <td id="sjju3"></td>

          <big id="sjju3"></big>
            <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>
          1. <sup id="sjju3"><noscript id="sjju3"></noscript></sup>
            <big id="sjju3"></big>

          2. <blockquote id="sjju3"></blockquote>
            <blockquote id="sjju3"></blockquote>

              <td id="sjju3"></td>

              <big id="sjju3"></big>
                <code id="sjju3"><strong id="sjju3"><dl id="sjju3"></dl></strong></code>