什麼是asp.net的Web Forms
Asp.net Web Forms 頁面架構是可升級的通用語言運行時刻(CLR)程式模型,用來在伺服器端動態產生WEB頁面。(美國人說話就是彆扭,其實Web Forms就是asp.net編寫的頁面)
作為ASP的合理演化(ASP.NET對現存的ASP提供文法相容),ASP.NET Web Forms架構的設計目的,是用來解決ASP模式的不足。它提供:
· 建立和使用可重用的使用者介面控制項,封裝常用的功能,減少頁面開發人員書寫代碼的工作量。
· 為開發人員提供結構清晰、風格井然的頁面邏輯(而不是“意大利麵條”的結構)。
· 提供強大的所見即所得 (WYSIWYG)(WYSIWYG)的頁面開發工具(ASP代碼對於工具是不透明的)
本教材的這一部分內容提供高水平的代碼,對ASP.NET WEB FORMS的關鍵功能做一個初步介紹。後續的章節將更深入地剖析ASP.NET WEB FORMS的功能
書寫第一個Web Forms頁面
ASP.NET Web Forms 頁面是以aspx為副檔名的文字檔。他們可以通過IIS虛擬根目錄樹來進行配置。當瀏覽器用戶端請求.aspx資源的時候,ASP.NET運行時刻庫分析和編譯目標檔案,形成.NET架構類。這個類能夠用來動態處理即將開始的請求。(注意:.aspx檔案只有在第一次被訪問的時候編譯;編譯後的結果在以後的請求中被重複利用)。
可以簡單的把HTML檔案的副檔名改為aspx,從而得到一個asp.net檔案(不需要修改任何代碼)。例如,下面的例子示範一個HTML頁,它收集使用者的姓名和分類偏好,然後在按下按鈕的時候提交表單。
C# Intro1.aspx
重要提示:注意點擊Lookup 按鈕的時候什麼也不會發生。這是因為.aspx檔案僅僅包含靜態HTML(沒有任何動態內容)。因此,同樣的HTML將在每一次往返的的時候,返回給用戶端,表單的欄位內容在提交過程中丟失。
使用ASP的<% %>引用標誌
ASP.NET對現有的ASP頁面提供文法相容。這種相容包括<% %>代碼引用塊,在.aspx檔案中,它可以和HTML內容混合使用。這些代碼塊在引用的時候從上倒下執行。
下面的例子示範了在HTML塊中,如何使用<% %>引用標誌來實現迴圈(依次增大字型尺寸)
C# Intro2.aspx
重要提示:與ASP不同,上面<% %>塊中使用的代碼是真正編譯過的,而不是指令碼引擎的解釋執行。因此提高了運行時的執行效率。
ASP.NET頁面開發人員可以利用<% %>代碼塊動態修改HTML的輸出,就像使用ASP一樣。例如,下面的例子示範了如何使用<% %>實現響應用戶端提交的結果。
C# Intro3.aspx
重要提示:<% %>代碼塊提供了一種有力的方法,可以實現從ASP.NET頁面定製和操作文本輸出,但是,卻沒有提供結構清晰的程式模式。正如上面的例子,開發人員僅僅使用<% %>代碼塊,就必須在請求發送往返中,自己管理頁面狀態,自己管理解釋後送出的值。
ASP.NET伺服器控制項介紹
除了使用(或者說作為一種代替)<% %>來編動態內容的程式以外,asp.net頁面開發人員可以使用ASP.NET 伺服器控制項來設計WEB頁面程式。
在.aspx檔案中聲明伺服器空間的時候,使用asp.net特定的標籤或者使用包含 runat="server" 屬性的html標籤。HTML標籤作為控制項使用的情況,在名稱空間System.Web.UI.HtmlControls中定義。任何不能映射到控制項的標籤,被賦值為System.Web.UI.HtmlControls.HtmlGenericControl類型。
下面的例子使用了4個伺服器控制項:<form runat=server>, <asp:textbox runat=server>, <asp:dropdownlist runat=server>, 和 <asp:button runat=server>。在運行時刻,這些伺服器控制項自動產生HTML內容。
C# Intro4.aspx
重要提示:在傳遞到伺服器端的迴圈往返(Rount Trips-----我不知道如何準確的翻譯這個詞彙,他的意思是從用戶端提交資料到伺服器,然後從伺服器返回資料的過程)過程中,這些伺服器控制項自動保持任何用戶端輸入的值(它代替了迴圈往返的時候,表單欄位儲存在<input type="hidden">中的做法)。另外請注意,ASP.NET中保持資料不需要任何用戶端的指令碼支援除了支援標準的html輸入控制項之外,ASP.NET允許開發人員在頁面中使用更豐富的定製控制項。例如,下面的例子示範了如何在頁面上使用<asp:adrotator>控制項,實現動態輪顯廣告C# Intro5.aspx