程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> asp.net 2.0中頁的生存周期(Lifecycle)和動態控件

asp.net 2.0中頁的生存周期(Lifecycle)和動態控件

編輯:關於ASP.NET

原文地址:http://www.codeproject.com/KB/aspnet/lifecycle.aspx

作者:Vivek Thakur

介紹

弄懂Page的生存周期(lifecycle)對於開發asp.net應用程序來說是非常重要的。很多.net初學者在處理動態加載控件的時候都出現過回發後丟值,丟狀態之類的問題。HTTP協議是無狀態的,這就是web程序不同與windows程序的一個天生的問題,如果要學習asp.net的話,Page的生存周期將是你最重要的基礎之一。事件的順序是怎樣的,特別是asp.net 2.0新增了母板頁後,使其變得更復雜了,本文的目的就是通過解釋每一個事件的順序及其用途讓你弄清楚這些事件到底是怎麼回事。

背景

在asp.net應用程序中,用戶總是要去請求一個.aspx頁的,讓我們感興趣的一件事就是在用戶訪問一個.aspx頁的時候,應用程序所屬的web服務器到底做了哪些事呢?弄懂事件的順序將有助於我們在恰當的事件中做我們想做的事,也可以消除我們的一些混淆,比如把一些問題歸咎給web程序的無狀態之類的。

基礎:新的編譯模型和部分類(Partial Classes)

asp.net中的每一個web form都直接或間接的繼承自System.Web.UI.Page類。一個web from包括兩部分:一個是代碼文件(WebForm.aspx.cs),它包括一些和page相關聯的事件和方法,另一個是aspx文件,它包括一些HTML控件聲明(在Visual Studio 2005的web應用程序中,我們還有一個名為WebForm.aspx.designer.cs的設計類)

在asp.net 2.0中,我們不需要再定義控件變量,也不需要再在代碼文件中寫一些事件委托,這一切都要歸功於部分類。在asp.net 1.x中,這些代碼都會自動的在InitializeComponent()裡生成。但是到了2.0版本,runtime將會創建一個部分類,這個類會包含aspx頁中的所有信息。這將使得代碼文件非常清晰並且易於管理。

這將消除VS2003中的代碼文件和aspx頁面之間的名字相互聯系的改變(如果我們要改變任意控件的ID,都不得不改變aspx頁和代碼文件)。在VS2005中所有控件的事件都定義在aspx頁裡。所以代碼文件中的事件委托和控件變量將被清除,這是比先前的VS2003方便的地方。

頁的生存周期

了解頁的生存周期中的每一個請求是非常重要的,丟值、丟狀態的問題都可能是你對頁的生存周期了解不夠造成的。當然,如果你要在asp.net保留狀態的話,可以用諸如Application,Session,Cache,或者Cookies之類的

注意:asp.net 2.0中的視圖狀態由兩部分組成,控件狀態和視圖狀態。詳細了解請參考這篇文章

http://msdn2.microsoft.com/en-us/library/1whwt1k7(VS.80).aspx

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved