在ASP.NET 2.0中,一個ASP.NET頁面的生命週期主要爲

 

  1. 在ASP.NET 2.0中,一個ASP.NET頁面的生命週期主要爲: 
  2. 客戶端請求頁面 
  3. 預初始化(OnPreInit) 
  4. 初始化(OnInit) 
  5. 完成初始化(OnInitComplete) 
  6. 載入ViewState(LoadViewState) 
  7. 處理回送數據(IPostBackDataHandler) 
  8. Page_OnPreLoad—》Page_OnLoad 
  9. 回發更改通知(RaisePostDataChangedEvent) 
  10. 處理回發事件(RaisePostBackEvent) 
  11. Page_OnLoadComplete 
  12. 預呈現(OnPreRender) 
  13. 完成預呈現(OnPreRenderComplete) 
  14. 保存ControlState(SaveControlState) 
  15. 保存ViewState(SaveViewState) 
  16. 呈現(Render) 
  17. Page_UnLoad。  
  18.  
  19. OnPreInit:在初始化頁面OnInit事件前觸發。在這個階段裏,可以進行定義站點主題(Theme)或加載站點個性化所需要的數據信息等操作。  
  20. OnInitComplete:完成初始化頁面OnInit事件後觸發。  
  21. OnPreLoad:在加載頁面OnLoad事件前觸發。  
  22. OnLoadComplete:完成頁面加載OnLoad事件後觸發。  
  23. OnPreRenderComplete:在完成預呈現OnPreRender事件後觸發。這是完成頁面呈現的最後一道關卡,在此之後,頁面將無法再進行任何呈現上的改動。  
  24. SaveControlState:保存控件狀態ControlState。ControlState是ASP.NET2.0控件新增的一個屬性,類似ViewState作用,但它們區別在於ControlState用於保存更加重要的控件狀態信息,以保證在禁用ViewState的情況下還可以對控件狀態進行讀寫操作。  
  25. 增加對頁面Header的控制:  
  26. System.Web.UI.Page類新增加了Header屬性,用於對HTML頁面頭區域裏數據的操作。通過對Header屬性的跟蹤,可以發現,Header屬性保存着一個實現IPageHeader接口的對象(該對象有LinkedStyleSheets、Metadata、StyleSheet和Title四個屬性),實際上正是通過這個對象實現對HTML頁面頭區域裏數據的操作的。 
  27. 例如:  
  28. <script runat="server">  
  29. void Page_Load(object sender, System.EventArgs e)  
  30. {  
  31. this.Header.Metadata.Add("author""brooks");  
  32. }  
  33. </script> 
  34. 其運行結果爲:  
  35. <html>  
  36. <head> <title>Untitled Page</title>  
  37. <meta name="author" content="brooks" />  
  38. </head>  
  39. 定義表單中的默認按鈕:  
  40. 在ASP.NET1.0中,我就爲了設置表單中的默認按鈕而一籌莫展。幸好ASP.NET2.0把這個功能補上了,現在可以非常方便的設置表單中的默認按鈕了。  
  41. <%@ page language="C#" %>  
  42. <script runat="server">  
  43. void Button1_Click(object sender, System.EventArgs e)  
  44. {  
  45. this.LB_Message.Text = "You clicked button1";  
  46. }  
  47. </script>  
  48. <html>  
  49. <head runat="server">  
  50. <title>Untitled Page</title>  
  51. </head>  
  52. <body>  
  53. <form runat="server" defaultbutton="Button1">  
  54. <asp:textbox id="Textbox1" runat="server"></asp:textbox>  
  55. <asp:button id="Button1" runat="server" text="Button" onclick="Button1_Click" />  
  56. <asp:label id="LB_Message" runat="server"></asp:label>  
  57. </form>  
  58. </body>  
  59. </html>  
  60. 設置焦點:  
  61. 現在假設爲TextBox1控件設置焦點,在ASP.NET 2.0中可以這樣實現:  
  62. this.Textbox1.Focus(); 或 this.SetFocus(this.Textbox1); 即可爲TextBox1控件設置焦點。  
  63. 如果打算也爲表單設置個默認焦點控件,讓光標默認停留在TextBox1上:  
  64. <form runat="server" defaultfocus="TextBox1">  
  65. 跨頁面數據發送:  
  66. 如果你需要多個頁面發送數據到同一個表單程序進行處理,或者數據在多個頁面之間傳輸處理的話,你就可以使用ASP.NET 2.0這個新特性。例如,我打算把Default.aspx頁裏TextBox1裏的文本數據發送到Default2.aspx頁面進行處理:  
  67. Default.aspx頁:  
  68. <%@ Page Language="C#" %>  
  69. <script runat="server">  
  70. void Button2_Click(object sender, EventArgs e)  
  71. {  
  72. Label1.Text = "Hi," + TextBox1.Text + ". This is Default.aspx";  
  73. }  
  74. </script> 
  75. <html xmlns="http://www.w3.org/1999/xhtml" >  
  76. <head runat="server">  
  77. <title>Untitled Page</title>  
  78. </head>  
  79. <body>  
  80. <form id="form1" runat="server">  
  81. <asp:TextBox ID="TextBox1" Runat="server"></asp:TextBox>  
  82. <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />  
  83. <asp:Button ID="Button2" Runat="server" Text="PostToSelf" OnClick="Button2_Click" />  
  84. <br />  
  85. <asp:Label ID="Label1" Runat="server" Text="Label"></asp:Label>  
  86. </form>  
  87. </body>  
  88. </html>  
  89. Default2.aspx頁:  
  90. <%@ Page Language="C#" %>  
  91. <script runat="server">  
  92. void Page_Load(object sender, System.EventArgs e)  
  93. {  
  94. TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");  
  95. this.Label1.Text = "Hi," + textBox1.Text + ". This is Default2.aspx!";  
  96. }  
  97. </script>  
  98. <html xmlns="http://www.w3.org/1999/xhtml" >  
  99. <head runat="server">  
  100. <title>Untitled Page</title>  
  101. </head>  
  102. <body>  
  103. <form id="form1" runat="server">  
  104. <asp:label id="Label1" runat="server"></asp:label>  
  105. </form>  
  106. </body>  
  107. </html> 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章