panoramica del modello code-behind ASP.NET

Questo articolo offre una breve panoramica del codice in linea 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 di Microsoft .NET Framework.

ASP.NET supporta due metodi per creare pagine:

  • Codice in linea
  • Code-behind

In-Line codice

Il codice in linea è codice incorporato direttamente nella pagina ASP.NET. Il codice seguente rappresenta una pagina di ASP.NET di esempio che include codice in linea:

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 si riferisce al codice per la pagina di ASP.NET contenuta in un file di classe separato. Ciò consente una netta separazione del 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à Page dalla classe consente alla pagina code-behind di accedere agli oggetti intrinseci ASP.NET, ad Request esempio 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 pre-compilazione quando si compila la soluzione.

Nota

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