zoukankan      html  css  js  c++  java
  • asp.net 页面static变量问题

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

    由于我们每次访问asp.net页面都是一个全新的对象,而不是我们上一次访问的对象。所以上次页面访问时我们对页面中变量的改动都没有保留。遇到这个问题的时候,很多初学者的直觉就是将这个变量申明为static,自己在测试的时候发现还真的保留住了页面的状态。

    测试代码如下:

    View Code
    public partial class _Default : System.Web.UI.Page
    {
    private static string str;
    protected void Page_Load(object sender, EventArgs e)
    {
    if(!IsPostBack)
    {
    str
    = "这是个static变量赋值"+DateTime.Now;
    }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    this.TextBox1.Text = str;
    }
    }

    我用火狐连续打开3个页面点击按钮显示的值都是同样的(把连接赋值到IE下值就变了)

    View Code
    public partial class _Default : System.Web.UI.Page
    {
    //private static string str;
    protected void Page_Load(object sender, EventArgs e)
    {
    if(!IsPostBack)
    {
    //str = "这是个static变量赋值"+DateTime.Now;
    ViewState["Key"] = "这是个static变量赋值" + DateTime.Now;
    }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    this.TextBox1.Text = ViewState["Key"].ToString();
    }
    }

    改为ViewState正常

  • 相关阅读:
    Java类加载机制
    DAY18
    DAY17
    DAY16
    DAY15
    DAY14
    DAY13
    DAY12
    DAY11
    DAY10
  • 原文地址:https://www.cnblogs.com/freexiaoyu/p/2151367.html
Copyright © 2011-2022 走看看