在asp.net中,有一个类,定义 public static a = "123";在页面webform1.aspx中,Response.Write..输出a,为"123";
然后跳转到另一个页面webform2.aspx,设置 a 为 "abc";
然后跳转到webform1.aspx,输出a,为"abc"了!为什么? 不是asp.net不保存状态的吗?!而且,更奇怪的是,关闭这些页面,再次打开 webform1.aspx,居然还是输出 "abc"! 直到系统重新启动。

解决方案 »

  1.   

    static 是静态变量!
    你应该用Session["yourData"] = ...
      

  2.   

    ******* 我设想下面这样的运行结果才是预料的 ******在asp.net中,有一个类,定义 public static a = "123";在页面webform1.aspx中,Response.Write..输出a,为"123";
    然后跳转到另一个页面webform2.aspx,设置 a 为 "abc";、然后跳转到webform1.aspx,输出a,预想还是输出 "123". 因为asp.net不保存状态,所以还是输出a的初始值 123.
    **********************************但是webform1.aspx输出的是 abc. 为什么?
      

  3.   

    一般不建议用静态常量,
    你给变态a加上关键字:const
    这样a的值就不会被改变,但是
    你在页面webform2.aspx设置 a 为 "abc"就不行了。
      

  4.   

    可能所谓静态值是对ASP。NET 程序来说的
    要得到初始直 必须重启ASP。NET
      

  5.   

    静态的变量是全局的呀,你再后来的页面改了值,当然就会改变!如果是Session的话,也是一样的呀!你第一个页面用了Session("a")="abc",再到后面的页面修改,返回已经也会变,如上所说如果不想让他变就用常量!还有你的命名 public static (这里不写数据类型)a="123";你这样也可以?
      

  6.   

    可能所谓静态值是对ASP。NET 程序来说的
    要得到初始直 必须重启ASP。NET------------------------------越来越同意!!
    刚才再次测试了一下!
    我结束aspnet_wp.exe进程,然后webform1.aspx就输出初始值,不然总是后来设置过的值。
      

  7.   

    谁说ASP.NET不保存状态了?!!只有这样的说法:HTTP是无状态的协议。