introducción al modelo de código subyacente de ASP.NET

En este artículo se proporciona una breve introducción al código en línea y el modelo de código subyacente en ASP.NET.

              Versión original del producto: ASP.NET
Número de KB original: 303247

Resumen

En este artículo se hace referencia al espacio de nombres System.Web.UIde la biblioteca de clases de Microsoft .NET Framework .

ASP.NET admite dos métodos para crear páginas:

  • Código en línea
  • Código subyacente

código In-Line

El código en línea es el código que se inserta directamente en la página de ASP.NET. El código siguiente representa una página de ASP.NET de ejemplo que incluye código en línea:

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>

Código subyacente

El código subyacente hace referencia al código de la página de ASP.NET que se encuentra dentro de un archivo de clase independiente. Esto permite una separación limpia del HTML de la lógica de presentación. En el ejemplo siguiente se muestra una página de código subyacente de 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();
            }
        }
    }
    

En el ejemplo anterior, puede usar la sintaxis siguiente para compilar Mycodebehind.cs:

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

Cuando se usa el código siguiente, la página de código subyacente hereda de la clase Page. La clase Page reside en :System.Web.UI namespace

public class MyClass : Page

Heredar de la Page clase proporciona a la página de código subyacente acceso a los ASP.NET objetos intrínsecos, como Request y Response. Además, heredar de la Page clase proporciona un marco para controlar eventos para los controles dentro de la página ASP.NET.

En el ejemplo anterior, la página de código subyacente se compila antes de que se ejecute ASP.NET. Como alternativa, puede hacer referencia a la clase de código subyacente mediante una SRC etiqueta como se indica a continuación:

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

En este caso, ASP.NET compila la página de código subyacente sobre la marcha. Este paso de compilación solo se produce cuando se actualiza el archivo de código subyacente (que se detecta mediante un cambio de marca de tiempo).

Compatibilidad con código subyacente en Visual Studio .NET

Cuando se usa Visual Studio .NET para crear ASP.NET Web Forms, las páginas de código subyacente son el método predeterminado. Además, Visual Studio .NET realiza automáticamente la compilación previa al compilar la solución.

Nota:

Las páginas de código subyacente que se crean en Visual Studio .NET incluyen un atributo especial page , Code-behind, que usa Visual Studio .NET.