C# web 頁面載入順序--轉載

來源:互聯網
上載者:User

標籤:inpu   代碼   順序   led   倒數   submit   else   cte   指示   

ASP.NET頁面生命週期描述

下面是ASP.NET頁面初始的過程:
1. Page_Init();
2. Load ViewState;
3. Load Postback data;
4. Page_Load();
5. Handle control events;
6. Page_PreRender();
7. Page_Render();
8. Unload event;
9. Dispose method called; 
下面對其中的一些過程作下描述:
1. Page_Init();
這個過程主要是初始化控制項,每次頁面載入執行這個初始過程,包括第一次和以後的Postback(這裡說下Postback,其實就可以簡單理解成使用者點擊SUBMIT按鈕之類的,把表單<Form>提交給伺服器,這就是一次postback),在這裡面可以訪問控制項,但是這裡面的控制項值不是我們期待的控制項裡面的值,他只是一個控制項的初始值(預設值),舉例: 比如一個TextBox1,我們填入了"哈哈",在點擊SUBMIT提交了頁面後,在Page_Init()裡面,我們訪問到的TextBox1.Text不是我們的"哈哈",而是開始的""Null 字元串,如果TextBox1在我們設計的時候提供了預設值,這裡訪問到的也就是提供的預設值,為什麼呢,這就要看下一個過程了.

對應的事件Page.Init

2. Load ViewState
這個過程是載入VIEWSTATE和Postback資料,比如我們上面的TextBox1,這時就賦了"哈哈",所以,在Post_Init()對控制項賦值是無意義的,它都會在這個過程裡被改寫,當然第一次頁面載入例外,因為沒有VIEWSTATE資料。

沒有對應的事件

3.Load Postback data;
上面說了,Postback可以理解成使用者提交表單資料,所以這裡就是處理表單資料,當然這裡要設計到控制項的設計,一般情況不會要我們自己處理這個過程,我們暫且略過.

沒有對應的事件
4. Page_Load();
這個過程也是每次頁面載入時一定會執行的,但是注意和Page_Init的區別,上面已經涉及了,這裡注意的是一般都會用到Page.IsPostBack,該值指示該頁是否正為響應用戶端回傳而載入,或者它是否正被首次載入和訪問。
private void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
   //第一次執行的CODE HERE
}
else
{
    //使用者提交FORM(即Postback)CODE HERE
}

//每次這裡的都會執行CODE HERE
}

對應的事件Page.Load

5. Handle control events;
這個過程裡,相應具體的控制項事件,比如private void ListBox1_SelectedIndexChanged(object sender, System.EventArgs e)事件等等

沒有對應的事件(我們自己的事件函數都包括在這個過程裡比如上面的ListBox1_SelectedIndexChanged)

6. Page_PreRender();
預先呈遞對象,這裡是在向使用者程式呈現資料的倒數第二步,提供這個過程的意義,就是在這裡能對控制項屬性等等要呈現給使用者的資料進行修改,這也是最後的修改,以前的修改(比如在Page_Init裡面)都可能被覆蓋.做完這了還會進行一個操作就是儲存狀態,即SaveViewState.

對應的事件時Page.PreRender

7. Page_Render();
可以在瀏覽器裡View->Source查看到,每個頁面都有一個隱藏的<input>,其中的"__VIEWSTATE"就是伺服器寫回來的頁面狀態資訊,在這個之前,伺服器要呈現頁面(也就是構造HTML格式的檔案),就是從這個"__VIEWSTATE"裡面擷取的資料,當然也會注意到,這裡有個Page.Render事件,可以添加自己的處理代碼,也就是說在這裡又可以更改資料,不推薦在這裡修改,既然提供了PreRender,就應該在裡面做最後的修改,當然這不是必須的,只是推薦!

對應的事件Page.Render

8. Unload event;
當向伺服器請求一個對象的時候,會在記憶體裡產生一個繼承頁面對象,也就是頁面的類,它繼承自System.Web.UI.Page.
當頁面對象從記憶體中卸載時發生,將觸發該事件.

對應的事件Page.Unload

9. Dispose method called;
銷毀所有的對象.當從記憶體釋放Page時發生,這是生存期的最後階段。可能第8和9似乎有些模糊,不過我也沒怎麼搞清楚,待研究!

對應的事件Dispose

以上就是ASP.NET頁面周期的描述。

C# web 頁面載入順序--轉載

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.