Condividi tramite


Panoramica del modello code-behind ASP.NET

Questo articolo offre una breve panoramica del codice inline e del modello Code-behind in ASP.NET.

Versione originale del prodotto: ASP.NET
Numero KB originale: 303247

Riepilogo

Questo articolo fa riferimento allo spazio dei nomi System.Web.UIdella libreria di classi microsoft .NET Framework.

ASP.NET supporta due metodi per creare pagine:

  • Codice in linea
  • Code-behind

Codice in linea

Il codice in linea è il codice incorporato direttamente all'interno della pagina ASP.NET. Il codice seguente rappresenta una pagina di ASP.NET di esempio che include codice inline:

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>

Code-behind

Code-behind fa riferimento al codice per la pagina ASP.NET contenuta all'interno di un file di classe separato. In questo modo è possibile separare il codice HTML dalla logica di presentazione. L'esempio seguente illustra una pagina code-behind 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();
            }
        }
    }
    

Nell'esempio precedente è possibile usare la sintassi seguente per compilare Mycodebehind.cs:

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

Quando si usa il codice seguente, la pagina code-behind eredita dalla classe Page. La classe Page si trova in System.Web.UI namespace:

public class MyClass : Page

L'ereditarietà dalla classe consente alla Page pagina code-behind di accedere agli oggetti intrinseci ASP.NET, ad esempio Request e Response. Inoltre, l'ereditarietà Page dalla classe fornisce un framework per la gestione degli eventi per i controlli all'interno della pagina ASP.NET.

Nell'esempio precedente la pagina code-behind viene compilata prima dell'esecuzione di ASP.NET. In alternativa, è possibile fare riferimento alla classe code-behind usando un SRC tag come indicato di seguito:

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

In questo caso, ASP.NET compila la pagina code-behind in tempo reale. Questo passaggio di compilazione si verifica solo quando il file code-behind viene aggiornato (rilevato tramite una modifica del timestamp).

Supporto code-behind in Visual Studio .NET

Quando si usa Visual Studio .NET per creare Web Forms ASP.NET, le pagine code-behind sono il metodo predefinito. Inoltre, Visual Studio .NET esegue automaticamente la precompilazione quando si compila la soluzione.

Note

Le pagine code-behind create in Visual Studio .NET includono un attributo speciale page , Code-behind, usato da Visual Studio .NET.