asp.net全局变量
admin 发表于 2010-04-21 | 来源:互联网 | 阅读:
C# code
namespace myweb { public partial class test : System.Web.UI.Page { int a; protected void Page_Load(object sender, EventArgs e) { } protected void Button1_Click(object sender, EventArgs e) { a=100; } protected void Button2_Click(object sender, EventArgs e) { int b; b=a; /// b的值为什么不是100 } } } }

 b的值为什么不是100
这是asp.net里的

已经有12 个评论
  1. WOOMYWOODY 说:

    因为,btn提交了,页面又加载了次想要b的值为100    static int a;   protected void Page_Load(object sender, EventArgs e)   {       }

  2. lchz 说:

    服务端不保存a的变化,要不你需要在前台缓存,可以使viewstate

  3. dbb123 说:

    页面回传  public int a{get{return (int)ViewState["a"];}set{ViewState["a"]=value;}}

  4. wuwei04 说:

    在asp.net中,你没点一次Button就发送一次请求到后台,这个时候系统就会创建一个test页面对象。这里,你在Button1里设定a=100,但是在你点击button2的时候,test对象是重新生成的,a的值为0

  5. doing7 说:

    int a;改成int a{get{if(ViewState["a"]==null)  return 0;else  return (int)ViewState["a"];}set{ViewState["a"]=value}}

  6. rongxin 说:

    用ViewState保存:C# code
    private int a
    {
    get
    {
    return ViewState["a"] == null ? 0 : Convert.ToInt32(ViewState["a"]);
    }
    set
    {
    ViewState["a"] = value;
    }
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
    a = 100;
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
    int b;
    b = a; /// b的值现在就是100了
    }

  7. doing7 说:

    客户端和服务端的连接是连接,下载,断开这样的你触发Button1_Click后a的值就消失了因为每次服务器响应的时候并不能记录前一次是哪个浏览器,或者谁访问的获取前一次的值的方式只能用Session,Cookie和ViewState,或Application并且Cookie和ViewState是存在客户端的Session和Application存在服务端,但是Application是对所有浏览器通用的,所以Application是全局的而Session是通过浏览器Cookie记录的SessionID来确定是哪个浏览器或是谁访问所以只有Application才是全局的,你那个变量是局部的Application的数据创建可以新建*.asax文件来实现建议lz去看看网络连接机制

  8. 546914408 说:

    页面重新加载了 保存到viewstate

  9. xiaobao520 说:

    错误 29 当前上下文中不存在名称“ViewState”

  10. 546914408 说:

    你这是两个不同的按钮啊 服务端的按钮提交一次就会刷新的呀 呵呵呵

  11. yyyy6 说:

    6楼代码 可以实现

  12. sbamd 说:

    谢谢各位

我要评论

评论功能因故关闭!

请加入我们的QQ群一起参与讨论:群号59400482(500人超级群)


返回首页 | 关于我们 | 联系我们 | 广告合作 | 网站地图 | 友情链接 | 版权声明