已創(chuàng)建的 ASP.NET Web 頁面類似于靜態(tài) HTML Web 頁面(即不包括基于服務器端處理的頁面),但是它們包括了被 ASP.NET 所認可的額外元素,并且在頁面運行的時候進行處理。ASP.NET Web 頁面區(qū)別于靜態(tài) HTML(或者其他)頁面的特征如下:
以下部分分別為這些元素提供了更多的細節(jié)。 你可以把任何 HTML 頁面的名稱都改成 .aspx 文件名擴展并且會被當成 ASP.NET Web 頁面來運行。但是,如果頁面沒有包括服務器端處理,那么你就不需要再添加 .aspx 文件擴展名,因為這樣做會增加頁面的處理時間。 ASP.NET Web 頁面范例以下代碼示范了一個頁面,該頁面包含了一些用來組成 ASP.NET Web 頁面的基本元素。該頁面包含了你想要在 HTML 頁面中所使用的靜態(tài)文字,并且與特定的 ASP.NET 元素一起被使用。代碼中的 ASP.NET 專用的元素被高亮顯示。 提示:為了更加清楚,這個范例頁面并沒有遵循 XHTML 標準。詳細內(nèi)容請參考[ASP.NET 與 XHTML]。 安全提示:這個范例頁面包含一個文本輸入框用來接收用戶輸入,然而這是一個潛在的安全威脅。默認時,ASP.NET Web 頁面會驗證用戶輸入中是否包含腳本與 HTML 元素。更多信息請參考[腳本開發(fā)概覽]。 <%@ Page Language="C#" %> <html> <script runat="server"> void Button1_Click(Object sender, EventArgs e) Label1.Text = "歡迎," + TextBox1.Text; End Sub </script> <head runat="server"> <title>基本的 ASP.NET Web 頁面</title> </head> <body> <form id="form1" runat="server"> <h1>歡迎使用 ASP.NET</h1> <p>輸入你的名字然后點擊按鈕。</p> <p> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="Click" OnClick="Button1_Click" /> </p> <p> <asp:Label ID="Label1" runat="server"></asp:Label> </p> </form> </body> @ 指令ASP.NET 頁面通常會包含一些指令以允許你為頁面指定頁面屬性和配置信息。這些指令被用來指示 ASP.NET 如何對頁面進行處理,但是它們并不會被呈現(xiàn)成標記的一部分也不會被發(fā)送到瀏覽器。 最常被使用的指令就是 @ Page,它允許你為頁面指定許多配置選項,其中包括:
如果你沒有在頁面中包含一個 @ Page 指令,或者如果該指令沒有包含特定的設(shè)置,那么這些設(shè)置就會從 Web 應用程序的配置文件(Web.config 文件)或者從站點配置文件(Machine.config 文件)中得到繼承。 除了包含 @ Page 指令之外,你也可以包含支持額外的頁面選項的其他指令。這些公共指令如下:
有些特定類型的 ASP.NET 文件需要使用到除 @ Page 之外的其他指令。例如,ASP.NET 控制頁就會使用一個 @ Master 指令,而 ASP.NET 用戶控件則會使用一個 @ Control 指令。每種指令都允許你為適當?shù)奈募付ú煌倪x項。 詳細信息請參考[ASP.NET Master Page 概覽和 ASP.NET 用戶控件]。 窗體元素如果你的頁面包含了允許用戶進行交互并且可被提交的控件,那么這個頁面就必須包含一個 form 元素。你可以使用 HTML 的 form 元素,但是必須應用特定的規(guī)則。使用 form 元素的規(guī)則如下:
Web 服務器端控件在多數(shù) ASP.NET 頁面中,你需要添加控件以允許用戶與頁面進行交互,包括按鈕、文本輸入框,列表等等。這些 Web 服務器控件與 HTML 按鈕與輸入元素是類似的。無論如何,它們都是在服務器端被處理的,并且允許你使用服務器端代碼來設(shè)置它們的屬性。這些控件同樣可以觸發(fā)能夠在服務器端代碼中被處理的多種事件。 服務器端控件使用的是一種特別的語法,并且這種語法在頁面運行的時候是被 ASP.NET 所認可的。下列代碼范例就說明了一些典型的 Web 服務器端控件。 安全提示:文本輸入框會接收用戶輸入,然而這是一個潛在的安全威脅。默認時,ASP.NET Web 頁面會驗證用戶輸入是否包含腳本與 HTML 元素。更多信息請參考[腳本開發(fā)概覽]。 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" Text="Click" OnClick="Button1_Click" /> ASP.NET 服務器端控件的標記名稱由一個前綴開始,在這里是 asp:。如果控件不是 .NET Framework 的一部分的話,這個前綴也許會有所不同。ASP.NET 服務器端控件同樣包含 runat="server" 特性以及一個可選的 ID 特性,你可以在服務器端代碼中用來對控件進行引用。 頁面一旦運行,它就會服務器端控件進行識別并且運行與這些控件相關(guān)聯(lián)的代碼。大多數(shù)控件都會把 HTML 或者其他標記呈現(xiàn)到頁面中。例如,asp:textbox 控件會把一個擁有 type="text" 特性的 input 元素呈現(xiàn)在頁面中。然而,這些映射并不需要在 Web 服務器控件與 HTML 元素之間進行一一對應。例如,asp:calendar 控件就會呈現(xiàn)一個 HTML 表格。還有一些控件不會呈現(xiàn)任何內(nèi)容給瀏覽器;相反,它們只在服務器端才能夠被處理,并且只為其他控件提供信息。 作為服務器端控件的 HTML 元素作為使用 ASP.NET 服務器端控件的替代,你可以把普通的 HTML 元素當成服務器端控件使用。你可以為頁面中的任何 HTML 元素添加 runat="server" 特性和 ID 特性。當頁面運行的時候,ASP.NET 就會把這些元素識別成為服務器端控件并且讓它在服務器端代碼中變得可用。例如,你可以在 HTML body 元素中添加必需的元素,如下代碼范例所示。 <body runat="server" id="body"> 然后你就可以在服務器端代碼中對這個 body 元素進行引用了,例如,在運行時設(shè)置主體的背景顏色來響應用戶的輸入或者來自于數(shù)據(jù)庫的信息。 更多信息請參考[ASP.NET Web 服務器端控件]。 服務器端代碼多數(shù) ASP.NET 頁面都包含了頁面被處理之后能夠在服務器端所運行的代碼。并且 ASP.NET 還支持許多種的編程語言,包括 C#、Visual Basic、J#、JScript,以及其他。 ASP.NET 支持兩種模型來編寫頁面的服務器端代碼。在單文件模型中,頁面代碼位于開始標記中包含有 runat="server" 特性的 script 元素中。本文中先前的范例就屬于單文件模型。 作為選擇,你也可以在單獨的類文件中創(chuàng)建頁面代碼,這就是幕后代碼模型。在這種情況下,ASP.NET Web 頁面通常不需要包含任何服務器代碼。另外,@ Page 指令還包含了 .aspx 頁面以及與它所關(guān)聯(lián)的幕后代碼文件的鏈接信息。下面的代碼范例就說明了一個在幕后代碼文件模型中所使用的 @ Page 指令。 <%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="Default" %> CodeFile 特性指定了類文件的名稱,而 Inherits 特性指定了幕后代碼文件中與頁面進行通訊的類名稱。 更多信息請參考[ASP.NET Web 頁面代碼模型]。 提示:ASP.NET Web 頁面同樣可以包含運行在瀏覽器中并且響應客戶端事件的客戶端腳本。并且一個 ASP.NET 頁面中能夠同時包含客戶端腳本與服務器端代碼。更多信息請參考[使用客戶端腳本的 ASP.NET Web 頁面編程]。 |
|