共用方式為


ASP.NET 程式代碼後置模型概觀

本文提供 ASP.NET 中內嵌程式代碼和程序代碼後置模型的簡短概觀。

原始產品版本: ASP.NET
原始 KB 編號: 303247

摘要

本文參考Microsoft .NET Framework 類別庫命名空間 System.Web.UI

ASP.NET 支援兩種方法來撰寫頁面:

  • 內嵌程序代碼
  • 程式碼後置

內嵌程序代碼

內嵌程式代碼是直接內嵌在 ASP.NET 頁面中的程序代碼。 下列程式代碼代表包含內嵌程式代碼的範例 ASP.NET 頁面:

Myinlinecode.aspx

<%@ Language=C# %>
<HTML>
    <script runat="server" language="C#">
        void MyButton_OnClick(Object sender, EventArgs e)
        {
            MyLabel.Text = MyTextbox.Text.ToString();
        }
    </script>
    <body>
        <form id="MyForm" runat="server">
            <asp:textbox id="MyTextbox" text="Hello World" runat="server"></asp:textbox>
            <asp:button id="MyButton" text="Echo Input" OnClick="MyButton_OnClick" runat="server"></asp:button>
            <asp:label id="MyLabel" runat="server"></asp:label>
        </form>
    </body>
</HTML>

程式碼後置

程序代碼後置是指包含在個別類別檔案中的 ASP.NET 頁面的程序代碼。 這可讓您清楚區分您的 HTML 與簡報邏輯。 下列範例說明 ASP.NET 程式代碼後置頁面:

  • MyCodebehind.aspx

    <%@ Language="C#" Inherits="MyStuff.MyClass" %>
    <HTML>
        <body>
            <form id="MyForm" runat="server">
                <asp:textbox id="MyTextBox" text="Hello World" runat="server"></asp:textbox>
                <asp:button id="MyButton" text="Echo Input" Onclick="MyButton_Click" runat="server"></asp:button>
                <asp:label id="MyLabel" runat="server" />
            </form>
        </body>
    </HTML>
    
  • Mycodebehind.cs

    using System;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    namespace MyStuff
    {
        public class MyClass : Page
        {
            protected System.Web.UI.WebControls.Label MyLabel;
            protected System.Web.UI.WebControls.Button MyButton;
            protected System.Web.UI.WebControls.TextBox MyTextBox;
    
            public void MyButton_Click(Object sender, EventArgs e)
            {
                MyLabel.Text = MyTextBox.Text.ToString();
            }
        }
    }
    

在上述範例中,您可以使用下列語法來編譯 Mycodebehind.cs

csc.exe /out:mycodebehind.dll /t:library mycodebehind.cs

當您使用下列程式代碼時,程式代碼後置頁面會繼承自Page類別。 Page 類別位於 中 System.Web.UI namespace

public class MyClass : Page

繼承自 Page 類別可讓程式代碼後置頁面存取 ASP.NET 內建物件,例如 RequestResponse。 此外,繼承自 Page 類別提供架構來處理 ASP.NET 頁面中控件的事件。

在上述範例中,程式代碼後置頁面會在執行 ASP.NET 之前進行編譯。 或者,您可以使用標記來參考程序代碼後置類別 SRC ,如下所示:

<%@ Language="C#" Inherits="MyStuff.MyClass" src="MyCodebehind.cs" %>

在此情況下,ASP.NET 即時編譯程序代碼後置頁面。 只有在更新程序代碼後置檔案時,才會發生此編譯步驟(透過時間戳變更偵測到)。

Visual Studio .NET 中的程式碼後置支援

當您使用 Visual Studio .NET 建立 ASP.NET Web Form 時,程式代碼後置頁面是預設方法。 此外,當您建置方案時,Visual Studio .NET 會自動為您執行預先編譯。

注意

在 Visual Studio .NET 中建立的程式代碼後置頁面包含 Visual Studio .NET 所使用的特殊 page 屬性 Code-behind