錯誤:
每個頁面的生命周期為用戶的訪問開始到結束,也就是說程序中的全局變量同時生存到用戶的訪問結束.
正確:
每個頁面的生命周期為用戶的每一次訪問,也就是說每一次客戶端與服務器之間的一個往返過程.全局變量的生命周期在此之間.
例:
string gb_string;
void Page_Load()
{
if(!IsPostBack)
{
//第一次被訪問的代碼
gb_string ="Test!";
}
}
void BTnSubmit_Click(Object sender, EventArgs e)
{
//在這裡gb_string 為空,是這一次postback新建的字符串
//跟第一次那個被賦值的字符串不是同一對象.
}
ASP.Net 頁面生命周期
1. Page_Init();
2. Load VIEwState and Postback data;
3. Page_Load();
4. Handle control events;
5. Page_PreRender();
6. Page_Render();
7. Unload event;
8. Dispose method called;
總結:
在Page_Load()中執行的初始化工作
1.一般都是初始化web控件,因為這些控件的狀態(值),由系統自動保存(__VIEWSTATE),
下次返回時,自動賦值,這是ASP.Net保存"web控件"狀態的特性.
2.但是初始的如果是程序中用到的全局變量,就應該注意他的生命周期的問題.如果函數都在一個生命周期中,全局變量的值當然是一致的.但是如果在"由客戶激發"的事件中,這就不同了,每個客戶事件的激發,都會導致新的頁面生命周期的產生,全局變量的值會丟失,因為它們不在同一頁面生命周期(就像上面出現的錯誤1).