更新:2007 年 11 月
建立 ASP.NET Web 網頁的方式與建立靜態 HTML 網頁 (不包括伺服器架構處理的網頁) 類似,但是其中包含當執行網頁時 ASP.NET 會辨認和處理的額外項目。區別 ASP.NET Web 網頁和靜態 HTML (或是其他) 網頁的特性如下:
副檔名是 .aspx 而不是 .htm、.html 或其他副檔名。.aspx 副檔名會使 ASP.NET 處理這個網頁。
注意事項:網際網路資訊服務 (IIS) 會將副檔名對應至 ASP.NET。根據預設,.aspx 網頁會經由 ASP.NET 執行,而 .htm 和 .html 網頁則不會。
選擇性的 @ Page 指示詞或其他指示詞 (視您建立的網頁類型而定)。
針對 ASP.NET 正確設定的 form 項目。只有在網頁所包含控制項的值,想要在處理網頁的過程中使用時,才需要 form 項目。
Web 伺服器控制項。
伺服端程式碼 (如果您在網頁上加入自己的程式碼)。
注意事項:如果想要讓網頁符合 XHTML 標準,您必須包含額外的項目,例如 DOCTYPE 項目。如需詳細資訊,請參閱 ASP.NET 和 XHTML。
下列章節提供每個項目的詳細資訊。
您可以使用 .aspx 副檔名重新命名任何 HTML 網頁,它就會以 ASP.NET Web 網頁的方式執行。然而,如果網頁並未涉及伺服器處理,就不需要在網頁上加入 .aspx 副檔名,因為這樣做會增加處理網頁的負荷量。
範例 ASP.NET Web 網頁
下列程式碼範例會示範的網頁,包含組成 ASP.NET Web 網頁的基本項目。這個網頁包含 HTML 網頁中會出現的靜態文字,以及 ASP.NET 的特定項目;ASP.NET 的特定項目會以反白顯示。
注意事項: |
|---|
為了避免困擾,這個範例網頁並未設定為符合 XHTML 的規範。如需詳細資訊,請參閱 ASP.NET 和 XHTML。 |
安全性注意事項: |
|---|
這個範例網頁包含一個可接受使用者輸入的文字方塊,有可能會造成安全性威脅。ASP.NET Web 網頁預設會驗證使用者輸入,但不包含當中的指令碼或 HTML 項目。如需詳細資訊,請參閱指令碼攻擊概觀。 |
<%@ Page Language="VB" %>
<html>
<script > Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Label1.Text = "Welcome, " & TextBox1.Text End Sub</script>
<head >
<title>Basic ASP.NET Web Page</title>
</head>
<body>
<form id="form1" >
<h1>Welcome to ASP.NET</h1>
<p>Type your name and click the button.</p>
<p>
<asp:TextBox ID="TextBox1" ></asp:TextBox><asp:Button ID="Button1" Text="Click" OnClick="Button1_Click" />
</p>
<p>
<asp:Label ID="Label1" ></asp:Label>
</p>
</form>
</body>
</html>
<%@ Page Language="C#" %>
<html>
<script >Void Button1_Click(object sender, System.EventArgs e) { Label1.Text = ("Welcome, " + TextBox1.Text);}</script>
<head >
<title>Basic ASP.NET Web Page</title>
</head>
<body>
<form id="form1" >
<h1>Welcome to ASP.NET</h1>
<p>Type your name and click the button.</p>
<p>
<asp:TextBox ID="TextBox1" ></asp:TextBox> <asp:Button ID="Button1" Text="Click" OnClick="Button1_Click" />
</p>
<p>
<asp:Label ID="Label1" ></asp:Label>
</p>
</form>
</body>
</html>
@ 指示詞
ASP.NET Web 網頁通常包含可以讓您指定網頁屬性和網頁組態資訊的指示詞。ASP.NET 會將這些指示詞用來當做處理網頁的指令,但是不會將這些指示詞呈現為傳送至瀏覽器標記的一部分。
最常用的指示詞是 @ Page 詞,可以讓您指定網頁的許多組態選項,包含下列所示:
網頁中程式碼的伺服器程式設計語言。
不論是直接使用伺服端程式碼的網頁 -- 稱為單一檔案網頁,或是使用不同類別檔案中程式碼的網頁 -- 稱為程式碼後置 (Code-Behind) 的網頁。在上面的範例中,網頁是單一檔案的網頁;程式碼直接在網頁上,並且 @ Page 指示詞不會包含有關連結類別檔案的資訊。如需詳細資訊,請參閱稍後這個主題中的<伺服端程式碼>章節以及 ASP.NET Web 網頁程式碼模型。
偵錯和追蹤選項。
不論網頁是否有關聯的主版頁面,都應該視為內容頁面。
如果網頁中並未包含 @ Page 指示詞,或是如果指示詞並未包含特定設定,就會繼承 Web 應用程式 (Web.config 檔) 的組態檔設定,或是繼承網站的組態檔 (Machine.config 檔) 設定。
除了包含 @ Page 指示詞以外,您可以包含支援額外網頁特定選項的其他指示詞。其他通用的指示詞包含下列所示:
@ Import 這個指示詞可以讓您指定程式碼中想要參考的命名空間。
@ OutputCache 這個指示詞可以讓您指定應該快取的網頁,以及指定何時快取網頁與快取保留時間的參數。
@ Implements 這個指示詞可以讓您指定網頁實作 .NET 介面。
@ Register 這個指示詞可以讓您註冊在網頁上使用的額外控制項。@ Register 指示詞會宣告控制項的標記前置詞以及控制項組件的位置。如果您想要在網頁上加入使用者控制項或自訂 ASP.NET 控制項,就必須使用這個指示詞。
某些 ASP.NET 檔案型別會使用 @ Page 以外的指示詞。例如,ASP.NET 主版頁面會使用 @ Master 指示詞,而 ASP.NET 使用者控制項會使用 @ Control 指示詞。每個指示詞可以讓您指定適用於檔案的不同選項。
如需詳細資訊,請參閱ASP.NET 主版頁面概觀與ASP.NET 使用者控制項。
表單項目
如果網頁包含允許使用者與網頁互動並送出資訊的控制項,則網頁必須包含 form 項目。您會使用標準 HTML form 項目,但是要套用某些規則。使用 form 項目的規則如下所示:
網頁只能包含一個 form 項目。
form 項目必須包含 runat 屬性並且將值設定為 server。這個屬性可以讓您在伺服端程式碼中,以程式設計方式參考網頁上的表單和控制項。
可以執行回傳的伺服器控制項必須在 form 項目中。
開頭標記不能包含 action 屬性。ASP.NET 會在處理網頁時動態設定這些屬性,覆寫您做的任何設定。
Web 伺服器控制項
在大部分的 ASP.NET Web 網頁中,您將會加入允許使用者與網頁互動的控制項,其中包含按鈕、文字方塊、清單等。這些 Web 伺服器控制項類似 HTML 按鈕和 input 項目。然而,它們是在伺服器上進行處理,可以讓您使用伺服端程式碼設定屬性。這些控制項也會引發能夠在伺服端程式碼中處理的事件。
伺服器控制項會使用特殊的語法,讓 ASP.NET 在執行網頁時能夠加以辨認。下列程式碼範例會示範某些一般的 Web 伺服器控制項。
安全性注意事項: |
|---|
TextBox 可接受使用者輸入,但這是可能的安全性威脅。ASP.NET Web 網頁預設會驗證使用者輸入,但不包含當中的指令碼或 HTML 項目。如需詳細資訊,請參閱指令碼攻擊概觀。 |
<asp:TextBox ID="TextBox1" ></asp:TextBox>
<asp:Button ID="Button1"
Text="Click" OnClick="Button1_Click" />
<asp:TextBox ID="TextBox1" ></asp:TextBox>
<asp:Button ID="Button1"
Text="Click" OnClick="Button1_Click" />
ASP.NET 伺服器控制項的標記名稱在開頭會使用前置詞 — 在上述情形中是 asp:。如果控制項不是 .NET Framework 的一部分,前置詞可能會有所不同。ASP.NET 伺服器控制項也包含 屬性,以及像是指定 ID 屬性可以讓您在伺服端程式碼參考到控制項。
當執行網頁時,就會識別伺服器控制項並且執行與這些控制項關聯的程式碼。許多控制項會將某些 HTML 或其他標記呈現在網頁中。例如,asp:textbox 控制項會將使用 type="text" 屬性的 input 項目呈現在網頁中。然而,Web 伺服器控制項和 HTML 項目並不一定是一對一的對應方式。例如,asp:calendar 控制項會呈現 HTML 表格。某些控制項不會在瀏覽器呈現任何東西;而只會在伺服器上處理並且提供資訊給其他控制項。
HTML 項目當做伺服器控制項
您可以使用一般 HTML 項目當做伺服器控制項,而不一定要使用 ASP.NET 伺服器控制項取代 HTML 項目。您可以將 和 ID 屬性加入網頁中的任何 HTML 項目。當執行網頁時,ASP.NET 會將項目識別為伺服器控制項,以便讓伺服端程式碼使用。例如,您可以將需要的項目加入 HTML body 項目,如同下列程式碼範例所示。
<body id="body">
然後可以在伺服端程式碼中參考 body 項目 -- 例如,在執行階段根據使用者輸入或資料庫資訊設定主體背景顏色。
如需詳細資訊,請參閱 ASP.NET Web 伺服器控制項概觀。
伺服端程式碼
ASP.NET Web 網頁在處理網頁時,大部分都包含在伺服器上執行的程式碼。ASP.NET 支援許多語言,其中包括 C#、Visual Basic、J#、Jscript 和其他語言。
ASP.NET 支援兩種撰寫 Web 網頁之伺服端程式碼的模型。在單一檔案模型中,網頁程式碼是在 script 項目中,而這個項目的開頭標記包含 屬性。本主題稍早的範例顯示單一檔案模型。
此外,您可以在不同的類別檔案中建立網頁程式碼,這被視為程式碼後置模型。在上述情形中,ASP.NET Web 網頁通常不會包含伺服端程式碼。而是 @ Page 指示詞會包含 .aspx 網頁所關聯的後置程式碼檔案資訊。下列程式碼範例會示範使用程式碼後置檔案之網頁的一般 @ Page 指示詞。
<%@ Page Language="VB" CodeFile="Default.aspx.vb" Inherits="Default" %>
<%@ Page Language="C#" CodeFile="Default.aspx.cs" Inherits="Default" %>
CodeFile 屬性會指定不同的類別檔案名稱,並且 Inherits 屬性會指定對應網頁之程式碼後置檔案中的類別名稱。
如需詳細資訊,請參閱 ASP.NET Web 網頁程式碼模型。
注意事項: |
|---|
ASP.NET 也可以包含用戶端指令碼,用來回應在瀏覽器中執行的用戶端事件。ASP.NET Web 網頁可以同時包含用戶端指令碼和伺服端程式碼。如需詳細資訊,請參閱 ASP.NET Web 網頁中的用戶端指令碼。 |
安全性注意事項: