處理伺服器控制項事件
每一個asp.net伺服器控制項都具有物件模型的特點,包含屬性、方法和事件。Asp.net開發人員可以使用這個物件模型來動態修改頁面,以及與頁面互動。
下面的例子示範了asp.net頁面開發人員如何通過處理<asp:button runat=server>控制項的OnClick事件,來操縱<asp:label runat=server> 控制項的Text 屬性。
這個簡單的例子在功能上等於前面介紹的"Intro3" 例子。然而,你卻可以發現基於伺服器控制項的這個版本是多麼的簡單而清晰!
使用自訂的伺服器端控制項
ASP.NET提供了45個內建的伺服器控制項以供使用 (詳細內容參閱 Web Forms 控制項參考)。除了使用內建的ASP.NET 控制項以外,開發人員也可以使用第三方提供的控制項。
下面的例子展示了一個簡單的日曆控制項(Calenda)。這個控制項在頁面中使用<acme:calendar runat=server>標籤來聲明。請注意在頁面頂端的<% Register %>使用TagPrefix註冊"Acme",使用Namespace說明執行控制項的名稱空間。Asp.net頁面分析器將在運行時刻使用這個名稱空間來裝載Calendar控間類的執行個體。
在這個例子中,日曆控制項被設計為在Internet Explorer 5.5以上版本中執行“進階運行”,在其他瀏覽器上執行“低級運行”。在asp.net提供的內建伺服器控制項中,都可以實現這種對瀏覽器版本的監測。對於IE5.5以上版本,他產生DHTML輸出。DHTML輸出不要求伺服器與用戶端的迴圈往複。對於其他版本的瀏覽器,這個控制項產生標準的HTML3.2文檔。在互動的時候,需要用戶端和伺服器端的迴圈往複。
重要提示:頁面設計者在編寫代碼的時候,不需要考慮瀏覽器在訪問頁面的時候,是“進階運行”還是“低級運行”。Calendar 控制項自己封裝了處理不同瀏覽器請求的能力。
列表、資料、和資料繫結
ASP.NET內建了一套資料表格和列表的控制項,可以提供自訂的使用者介面驅動,來實現對資料庫或其它資料來源的請求。例如,下面的例子示範了<asp:datagrid runat=server>控制項如何使用SQL資料庫查詢語言來實現對BOOK資訊集合的資料繫結。
<asp:datagrid runat=server> DataGrid控制項使用傳統的表格介面,提供了一種簡單而快速的顯示資料結果的途徑。此外,ASP.NET開發人員也可以使用<asp:DataList runat=server> DataList控制項以及自訂的ItemTemplate模板來定製資料的顯示方式。
注意到<asp:datalist runat=server>控制項允許終端使用者精確的控制列表中每一個項目的結構和外觀顯示(使用ItemTemplate模板屬性)。該控制項同時自動的處理兩列之間內容的換行(使用者可以通過它的RepeatColumns屬性來控制列的數目)
下面的例子提供了一種<asp:datalist runat=server>控制項隔行交替顯示的樣子。
注意這裡的控制項、資料模型和頁面使用者都與前一個例子相同。差別在於,本例在代碼中聲明了其他的模板。
表單驗證控制項
ASP.NET Web Forms 頁架構提供了一套伺服器驗證控制項,它容易使用而功能強大,用來檢查用戶端表單輸入的錯誤,並且(如果必要的話)可以向使用者顯示提示資訊。
在頁面中增加伺服器驗證控制項就像使用其他伺服器控制項一樣。不同的驗證情況有不同的驗證控制項,例如輸入範圍檢查或者模式比對等等。使用RequiredFieldValidator驗證控制項可以確保使用者不會跳過一個應該輸入資料的欄位。
下面的例子示範了如何在頁面中使用<asp:requiredfieldvalidator runat=server> 控制項來驗證TextBox 和 DropDownList 控制項的內容。
C# Intro11.aspx
[運行] | [原始碼]
注意驗證控制項也提供了“進階運行”和“低級運行”支援。高版本瀏覽器模式在伺服器端和用戶端執行(使用JAVA指令碼和DHTML),低板本瀏覽器模式僅僅在伺服器端執行驗證。兩種情況下的程式模式是一樣的。
注意,ASP.NET頁面開發人員可以在運行時可隨時檢查Page.IsValid屬性,來確定是否該頁面的所有驗證控制項都通過。這就提供了是否進行商務邏輯處理的一個簡單的方法。例如,下面的例子對特定分類執行資料庫查詢的時候,首先執行Page.IsValid檢查。
Web Forms代碼分離
ASP.NET支援兩種創作動態網頁面的方法。第一種是如前面的例子中示範的那樣,頁面代碼在同一個.aspx檔案中聲明。另一個方法----人們熟知的代碼分離,可以讓頁面代碼更加整潔,把程式碼從HTML內容中分離出來,成為一個完整的單獨的檔案。
下面的例子示範了利用代碼分離技術編寫ASP.NET頁面
本章小結
1. ASP.NET提供了一種簡單而功能強大的方法,來建立動態WEB使用者介面
2. ASP.NET Web Forms 頁可以自動適應任何瀏覽器客戶(不需要指令碼庫或者COOKIE的支援)
3. ASP.NET Web Forms 頁提供與現有ASP頁面的文法相容
4. ASP.NET 伺服器控制項提供了封裝常用功能的簡易方法。
5. ASP.NET 提供了45個內建的伺服器控制項.開發人員也可以使用第三方提供的控制項。
6. ASP.NET 伺服器控制項能夠自動設計進階動態模式和低級瀏覽器HTML模式
7. ASP.NET 模板可以輕鬆的定製列表格服務器控制項的外觀,從而定製頁面資料顯示的外觀。
8. ASP.NET 驗證控制項可以方便的進行用戶端或伺服器端資料的驗證