请问各位高人,在asp.net中如何定义某一页的全局变量 public class ThePage : System.Web.UI.Page{ private static int TheValue = 0; // 这里赋初值,如果你要外面也可以访问,改成public ...//其他的代码不写了}在页面里面定义一个静态变量 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 或者定义一个变量public class ThePage : System.Web.UI.Page{ private int TheValue { get{ object v = ViewState["TheValue"]; return v==null?0:(int)v; } set{ ViewState["TheValue"] = value; } } private void Page_Load( object sender,EventArgs e ) { if( !IsPostBack ) { TheValue = SomeValue; // 赋初值 } }} 同一页用什么Session,用ViewState就好了 把变量声明放在方法外面.在page_load()中初始化,在需要的方法中对其赋值. 要在postback后仍保存该值,用viewstate[].在页面设置ViewState["变量"],下一页就可以使用. 相信我,用ViewState是最方便的,如果是全局的,当然是用静态的变量 用static的各位,那不是静态变量吗?我一开始想过,但是,总感觉不太劲啊。我试试。qz4365(冷风清扬) ,你说的放在page_load()中初始化,是要放到!(ispostback)的块内吗?谢谢 public class ThePage : System.Web.UI.Page{ private int TheValue { get{ object v = ViewState["TheValue"]; return v==null?0:(int)v; } set{ ViewState["TheValue"] = value; } } private void Page_Load( object sender,EventArgs e ) { if( !IsPostBack ) { TheValue = SomeValue; // 赋初值,放到!(ispostback)中保证不会每次都赋值 } }}像这样,这不是静态变量啊,这是一个属性,把值保存到当前页面的ViewState中 谢谢各位了,你们的方法都很好,其实像这样的,我以前一直是用viewstate的,但因为这个问题涉及到了asp.net页的执行过程,也就是我的第二个问题,所以我还是想问问。一阵给分。 回发的时候不光执行Page_Init实际上这个页面对象都是重新new出来的因为对于服务器,它并不知道客户端会不会回发,不可能把页面的实例保存在服务器,只可能是每一次请求的时候都重新生成这个实例,然后按顺序调用: 构造器 Init 事件(OnInit 方法) LoadViewState 方法 LoadPostData 方法 (如果已实现 IPostBackDataHandler) Load 事件 (OnLoad 方法) RaisePostDataChangedEvent 方法 (如果已实现 IPostBackDataHandler) RaisePostBackEvent 方法 (如果已实现 IPostBackEventHandler) PreRender 事件 (OnPreRender 方法) SaveViewState 方法 Render 方法 Dispose 方法 UnLoad 事件(On UnLoad 方法) 1、其实同一页面保存变量还可以用Label来保存2、会执行 非常感谢timmy3310(tim) ,那么,那个LoadPostData方法是什么意思呢? LoadPostData是处理回发数据的方法,原型如下:public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection)自定义的控件可以重写这个方法,来判断控件的状态是否改变,如果改变可以返回True这个方法是由ASP.Net页面框架调用的,如果返回True,会调用对应控件的RaisePostDataChangedEvent方法来抛出服务器端的事件;换句话说,自定义的控件可以在RaisePostDataChangedEvent方法中引发自定义的事件。 如何把当前用户名写入选定行的列里面谢谢 读出数据库数据问题 如何获取经过重写的url,而不是原始url? 本地数据库为什么只有联网才能访问 请问:System.UnauthorizedAccessException:如何解决? 如何该上Web.Config文件被下载 谁有类似电子邮件里通讯录导入导出的代码? 求一算法(在线等) C/S中 使用RitchTextBox添加的内容(包含图片信息),在BS页面中如何显示啊? 高手请进,急,急,急!!!!!!!!!! 用什么方法实现 http://wyd.163.com (在线) 能不能把数据库中的image字段绑定到Image控件上?
public class ThePage : System.Web.UI.Page
{
private int TheValue
{
get{
object v = ViewState["TheValue"];
return v==null?0:(int)v;
}
set{
ViewState["TheValue"] = value;
}
} private void Page_Load( object sender,EventArgs e )
{
if( !IsPostBack )
{
TheValue = SomeValue; // 赋初值
}
}
}
qz4365(冷风清扬) ,你说的放在page_load()中初始化,是要放到!(ispostback)的块内吗?
谢谢
{
private int TheValue
{
get{
object v = ViewState["TheValue"];
return v==null?0:(int)v;
}
set{
ViewState["TheValue"] = value;
}
} private void Page_Load( object sender,EventArgs e )
{
if( !IsPostBack )
{
TheValue = SomeValue; // 赋初值,放到!(ispostback)中保证不会每次都赋值
}
}
}像这样,这不是静态变量啊,这是一个属性,把值保存到当前页面的ViewState中
一阵给分。
实际上这个页面对象都是重新new出来的
因为对于服务器,它并不知道客户端会不会回发,不可能把页面的实例保存在服务器,只可能是每一次请求的时候都重新生成这个实例,然后按顺序调用:
构造器
Init 事件(OnInit 方法)
LoadViewState 方法
LoadPostData 方法
(如果已实现 IPostBackDataHandler)
Load 事件
(OnLoad 方法)
RaisePostDataChangedEvent 方法
(如果已实现 IPostBackDataHandler)
RaisePostBackEvent 方法
(如果已实现 IPostBackEventHandler)
PreRender 事件
(OnPreRender 方法)
SaveViewState 方法
Render 方法
Dispose 方法
UnLoad 事件(On UnLoad 方法)
2、会执行
public virtual bool LoadPostData(string postDataKey, NameValueCollection postCollection)
自定义的控件可以重写这个方法,来判断控件的状态是否改变,如果改变可以返回True这个方法是由ASP.Net页面框架调用的,如果返回True,会调用对应控件的RaisePostDataChangedEvent方法来抛出服务器端的事件;换句话说,自定义的控件可以在RaisePostDataChangedEvent方法中引发自定义的事件。