最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解ASP.NET頁面生命周期事件

 更新時間:2013年07月25日 10:30:56   作者:  
這篇文章介紹了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();
這個過程主要是初始化控件,每次頁面載入執(zhí)行這個初始過程,包括第一次和以后的Postback(這里說下Postback,其實就可以簡單理解成用戶點擊SUBMIT按鈕之類的,把表單<Form>提交給服務(wù)器,這就是一次postback),在這里面可以訪問控件,但是這里面的控件值不是我們期待的控件里面的值,他只是一個控件的初始值(默認值),舉例: 比如一個TextBox1,我們填入了”哈哈”,在點擊SUBMIT提交了頁面后,在Page_Init()里面,我們訪問到的TextBox1.Text不是我們的”哈哈”,而是開始的”"空字符串,如果TextBox1在我們設(shè)計的時候提供了默認值,這里訪問到的也就是提供的默認值,為什么呢,這就要看下一個過程了.

對應(yīng)的事件Page.Init

2. Load ViewState
這個過程是載入VIEWSTATE和Postback數(shù)據(jù),比如我們上面的TextBox1,這時就賦了”哈哈”,所以,在Post_Init()對控件賦值是無意義的,它都會在這個過程里被改寫,當(dāng)然第一次頁面載入例外,因為沒有VIEWSTATE數(shù)據(jù)。

沒有對應(yīng)的事件

3.Load Postback data;
上面說了,Postback可以理解成用戶提交表單數(shù)據(jù),所以這里就是處理表單數(shù)據(jù),當(dāng)然這里要設(shè)計到控件的設(shè)計,一般情況不會要我們自己處理這個過程,我們暫且略過. (在以前那篇關(guān)于ASP.NET頁面生命周期的簡單描述中,把這個過程和Load ViewState放在了一起,其實那是微軟提供的生命周期過程,這里單獨提出來是為了讓大家明白這是一個單獨的過程)

沒有對應(yīng)的事件
4. Page_Load();
這個過程也是每次頁面載入時一定會執(zhí)行的,但是注意和Page_Init的區(qū)別,上面已經(jīng)涉及了,這里注意的是一般都會用到Page.IsPostBack,該值指示該頁是否正為響應(yīng)客戶端回發(fā)而加載,或者它是否正被首次加載和訪問。

復(fù)制代碼 代碼如下:

private void Page_Load(object sender, System.EventArgs e)
{
  if(!Page.IsPostBack)
  {
    //第一次執(zhí)行的CODE HERE
  }
  else
  {
    //用戶提交FORM(即Postback)CODE HERE
  }

  //每次這里的都回執(zhí)行CODE HERE
}


對應(yīng)的事件Page.Load

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

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

6. Page_
預(yù)先呈遞對象,這里是在向用戶程序呈現(xiàn)數(shù)據(jù)的倒數(shù)第二步,我估計提供這個過程的意義,也就是在這里能對控件屬性等等要呈現(xiàn)給用戶的數(shù)據(jù)進行修改,這也是最后的修改,以前的修改(比如在Page_Init里面)都可能被覆蓋.做完這了還會進行一個操作就是保存狀態(tài),即SaveViewState.

對應(yīng)的事件時Page.PreRender

7. Page_Render();
大家可以在瀏纜器里View->Source查看到,每個頁面都有一個隱藏的<input>,這里面的”__VIEWSTATE”就是我們服務(wù)器寫回來的頁面狀態(tài)信息,在這個之前,服務(wù)器要呈現(xiàn)頁面(也就是構(gòu)造HTML格式的文件),就是從這個”__VIEWSTATE”里面獲取的數(shù)據(jù),當(dāng)然大家也注意到了,這里有個Page.Render事件,我們可以添加自己的處理代碼,也就是說我們又可以更改數(shù)據(jù),不過這里推薦不要在這里修改,既然提供了PreRender,就應(yīng)該在里面做最后的修改,當(dāng)然這不是必須的,只是推薦!

對應(yīng)的事件Page.Render

8. Unload event;
大家應(yīng)該明白,當(dāng)想服務(wù)器請求一個對象的時候,就會在內(nèi)存里生成一個繼承頁面對象,也就是頁面的類,它繼承自System.Web.UI.Page.
當(dāng)頁面對象從內(nèi)存中卸載時發(fā)生,將觸發(fā)該事件.

對應(yīng)的事件Page.Unload

9. Dispose method called;
銷毀所有的對象.當(dāng)從內(nèi)存釋放Page時發(fā)生,這是生存期的最后階段??赡艿?和9似乎有些模糊,不過我也沒怎么搞清楚,待研究!

對應(yīng)的事件Dispose

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

注意上面灰色背景的文字,如果一個過程中有對應(yīng)的事件,我們可以自己定義一個函數(shù)(當(dāng)然先在MSDN中找到函數(shù)原型),然后在
InitializeComponent中向事件的鏈表上添加上去,像下面:

復(fù)制代碼 代碼如下:

private void InitializeComponent()
{  
  this.Unload += new System.EventHandler(this.MainWebForm_Unload);
  this.Load += new System.EventHandler(this.Page_Load);
  this.Init += new System.EventHandler(this.Page_Init);
  this.PreRender += new System.EventHandler(this.My_PreRender);
}

對于幾個沒有對應(yīng)事件的過程,比如2.Load ViewState,我們可以重載Page的虛函數(shù)protected override void LoadViewState(object savedState);來添加自己的控制代碼,不過切忌掉用基類的對應(yīng)方法,比如:
復(fù)制代碼 代碼如下:

protected override void LoadViewState(object savedState)
{
  //自己處理VIEWSTATE
  base.LoadViewState (savedState);
}

相關(guān)文章

  • aspx后臺傳遞Json到前臺的兩種接收方法推薦

    aspx后臺傳遞Json到前臺的兩種接收方法推薦

    下面小編就為大家?guī)硪黄猘spx后臺傳遞Json到前臺的兩種接收方法推薦。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • C# XML操作 代碼大全(讀XML,寫XML,更新,刪除節(jié)點,與dataset結(jié)合等)

    C# XML操作 代碼大全(讀XML,寫XML,更新,刪除節(jié)點,與dataset結(jié)合等)

    C#操作XML(讀XML,寫XML,更新,刪除節(jié)點,與dataset結(jié)合等),以下就是操作XML的所有方法,相信可以滿足很大一部份的使用了。
    2009-06-06
  • .NET工廠方法模式講解

    .NET工廠方法模式講解

    這篇文章主要為大家詳細介紹了ASP.NET工廠方法模式的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • .Net Core配置與自動更新的實現(xiàn)方法

    .Net Core配置與自動更新的實現(xiàn)方法

    下面小編就為大家分享一篇.Net Core配置與自動更新的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • asp.net實現(xiàn)根據(jù)城市獲取天氣預(yù)報的方法

    asp.net實現(xiàn)根據(jù)城市獲取天氣預(yù)報的方法

    這篇文章主要介紹了asp.net實現(xiàn)根據(jù)城市獲取天氣預(yù)報的方法,涉及asp.net調(diào)用新浪接口獲取天氣預(yù)報信息的實現(xiàn)技巧,非常簡單實用,需要的朋友可以參考下
    2015-12-12
  • net core下鏈路追蹤skywalking安裝和簡單使用教程

    net core下鏈路追蹤skywalking安裝和簡單使用教程

    本文將從0開始搭建兩個webapi項目,使用Skywalking來追蹤他們之間的調(diào)用關(guān)系及響應(yīng)時間,開發(fā)環(huán)境為VisualStudio2019,對net core 鏈路追蹤skywalking安裝和使用教程感興趣的朋友一起看看吧
    2021-10-10
  • 最詳細的ASP.NET微信JS-SDK支付代碼

    最詳細的ASP.NET微信JS-SDK支付代碼

    這篇文章主要為大家介紹了最詳細的ASP.NET微信JS-SDK支付代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • ASP.NET Core與NLog集成的完整步驟

    ASP.NET Core與NLog集成的完整步驟

    NLog是一個免費的日志記錄框架,專門為.net平臺下的框架提供日志功能,下面這篇文章主要給大家介紹了關(guān)于ASP.NET Core與NLog集成的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2018-07-07
  • ASP.NET MVC4中使用Html.DropDownListFor的方法示例

    ASP.NET MVC4中使用Html.DropDownListFor的方法示例

    這篇文章主要介紹了ASP.NET MVC4中使用Html.DropDownListFor的方法,結(jié)合實例形式分析了控制器數(shù)據(jù)源及Html.DropDownListFor顯示操作的相關(guān)技巧,需要的朋友可以參考下
    2016-08-08
  • ASP.NET Core依賴注入DI容器的方法實現(xiàn)

    ASP.NET Core依賴注入DI容器的方法實現(xiàn)

    本文主要介紹了ASP.NET Core依賴注入DI容器的方法實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03

最新評論

安乡县| 石城县| 车致| 芜湖市| 古交市| 衡山县| 云龙县| 文安县| 闽侯县| 鄂州市| 樟树市| 永定县| 鄂伦春自治旗| 潍坊市| 石景山区| 应用必备| 清水县| 仪陇县| 沾化县| 阿拉尔市| 清苑县| 仁寿县| 山西省| 鹤山市| 黄大仙区| 永胜县| 抚顺县| 江永县| 义马市| 赤城县| 浮梁县| 洛南县| 依兰县| 泗水县| 晴隆县| 葵青区| 洮南市| 郯城县| 郧西县| 福州市| 微山县|