共用方式為


ASP.NET Web 網頁語法概觀

更新: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 網頁中的用戶端指令碼

請參閱

概念

ASP.NET Web 網頁概觀

ASP.NET Web 網頁簡介

ASP.NET 運算式概觀

其他資源

ASP.NET 組態檔語法

以程式設計 ASP.NET Web 網頁