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里的

因为,btn提交了,页面又加载了次想要b的值为100 static int a; protected void Page_Load(object sender, EventArgs e) { }
服务端不保存a的变化,要不你需要在前台缓存,可以使viewstate
页面回传 public int a{get{return (int)ViewState["a"];}set{ViewState["a"]=value;}}
在asp.net中,你没点一次Button就发送一次请求到后台,这个时候系统就会创建一个test页面对象。这里,你在Button1里设定a=100,但是在你点击button2的时候,test对象是重新生成的,a的值为0
int a;改成int a{get{if(ViewState["a"]==null) return 0;else return (int)ViewState["a"];}set{ViewState["a"]=value}}
用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了
}
客户端和服务端的连接是连接,下载,断开这样的你触发Button1_Click后a的值就消失了因为每次服务器响应的时候并不能记录前一次是哪个浏览器,或者谁访问的获取前一次的值的方式只能用Session,Cookie和ViewState,或Application并且Cookie和ViewState是存在客户端的Session和Application存在服务端,但是Application是对所有浏览器通用的,所以Application是全局的而Session是通过浏览器Cookie记录的SessionID来确定是哪个浏览器或是谁访问所以只有Application才是全局的,你那个变量是局部的Application的数据创建可以新建*.asax文件来实现建议lz去看看网络连接机制
页面重新加载了 保存到viewstate
错误 29 当前上下文中不存在名称“ViewState”
你这是两个不同的按钮啊 服务端的按钮提交一次就会刷新的呀 呵呵呵
6楼代码 可以实现
谢谢各位