Compartir a través de


Modelo de código de las páginas web ASP.NET

Actualización: noviembre 2007

Una página Web ASP.NET se compone de dos partes:

  • Elementos visuales, incluidos el formato, los controles de servidor y el texto estático.

  • Lógica de programación para la página, que incluye controladores de eventos y otro tipo de código.

ASP.NET proporciona dos modelos para administrar el código y los elementos visuales: el modelo de página un solo archivo y el modelo de página de código subyacente. Los dos modelos funcionan de la misma manera y se pueden utilizar los mismos controles y el mismo código para ambos modelos.

En este tema se explica el funcionamiento de cada modelo y se proporcionan sugerencias para decidir cuándo elegir un modelo u otro.

Modelo de página de un solo archivo

En este modelo de página, el formato de la página y su código de programación están el mismo archivo .aspx físico. El código de programación se encuentra en un bloque script que contiene el atributo para marcarlo como código que debe ejecutar ASP.NET.

En el ejemplo de código siguiente se muestra una página de un solo archivo que contiene un control Button y un control Label. La parte resaltada muestra el controlador de eventos Click para el control Button dentro de un bloque script.

<%@ Page Language="VB" %>
<script >
    Protected Sub Button1_Click(ByVal sender As Object, _            ByVal e As System.EventArgs)        Label1.Text = "Clicked at " & DateTime.Now.ToString()    End Sub
</script>

<html>
<head id="Head1" >
  <title>Single-File Page Model</title>
</head>
<body>
  <form id="form1" >
    <div>
      <asp:Label ID="Label1" 
         Text="Label">
      </asp:Label>
      <asp:Button ID="Button1" 
          OnClick="Button1_Click" Text="Button">
      </asp:Button>
    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" %>
<script >
void Button1_Click(Object sender, EventArgs e){    Label1.Text = "Clicked at " + DateTime.Now.ToString();}
</script>
<html>
<head>
  <title>Single-File Page Model</title>
</head>
<body>
  <form >
    <div>
       <asp:Label id="Label1" 
          Text="Label">
       </asp:Label>
       <br />
       <asp:Button id="Button1" 
          
         onclick="Button1_Click" 
         Text="Button">
      </asp:Button>
    </div>
  </form>
</body>
</html>

El bloque scriptpuede contener tanto código como requiera la página. El código puede contener controladores de eventos para los controles de la página (como en el ejemplo), métodos, propiedades y cualquier tipo de código como el que se emplearía normalmente en un archivo de clase. En tiempo de ejecución, la página de un solo archivo se trata como una clase que deriva de la clase Page. La página no contiene una declaración de clase explícita. En lugar de ello, el compilador genera una nueva clase que contiene los controles como miembros. (No todos los controles se exponen como miembros de la página; algunos son controles secundarios de otros controles.) El código de la página pasa a formar parte de la clase; por ejemplo, los controladores de eventos que se hayan creado se convierten en miembros de la clase Page derivada.

Para obtener más información, vea Información general sobre clases de páginas ASP.NET.

Modelo de página de código subyacente

Este modelo permite mantener el formato en un archivo (el archivo .aspx) y el código de programación en otro. El nombre del archivo de código varía según el lenguaje de programación que se esté utilizando.

Nota:

No todos los lenguajes de programación de .NET permiten crear archivos de código subyacente para las páginas Web ASP.NET. Los lenguajes deben admitir clases parciales. Por ejemplo, J# no admite las clases parciales y, por consiguiente, no permite la creación de archivos de código subyacente para las páginas ASP.NET.

Por ejemplo, si está trabajando con una página denominada SamplePage, el formato se encuentra en el archivo SamplePage.aspx y el código se encuentra en un archivo denominado SamplePage.aspx.vb (en Visual Basic), SamplePage.aspx.cs (en C#), etc.

Nota:

El modelo de código subyacente utilizado en la versión 2.0 de .NET Framework es diferente del utilizado en las versiones anteriores.

En el modelo de código subyacente, el ejemplo utilizado en la sección anterior para la página de un solo archivo estaría en dos partes. El formato estaría en un archivo (en este ejemplo, SamplePage.aspx) y sería similar a la página de un solo archivo, como se muestra en el ejemplo de código siguiente.

<%@ Page Language="VB" CodeFile="SamplePage.aspx.vb" 
    Inherits="SamplePage" AutoEventWire="false" %>
<html>
<head  >
   <title>Code-Behind Page Model</title>
</head>
<body>
  <form id="form1" >
    <div>
       <asp:Label id="Label1" 
          Text="Label" >
      </asp:Label>
      <br />
      <asp:Button id="Button1" 
          
         onclick="Button1_Click" 
         Text="Button" >
       </asp:Button>
    </div>
  </form>
</body>
</html>
<%@ Page Language="C#" CodeFile="SamplePage.aspx.cs" 
    Inherits="SamplePage" AutoEventWireup="true" %>
<html>
<head  >
   <title>Code-Behind Page Model</title>
</head>
<body>
  <form id="form1" >
    <div>
       <asp:Label id="Label1" 
          Text="Label" >
      </asp:Label>
      <br />
      <asp:Button id="Button1" 
          
         onclick="Button1_Click" 
         Text="Button" >
       </asp:Button>
    </div>
  </form>
</body>
</html>

Hay dos diferencias entre la página .aspx del modelo de un solo archivo y la del modelo de código subyacente. En el modelo de código subyacente, no hay un bloque script con el atributo . (La página puede contener bloques script que carecen del atributo si desea escribir script del cliente en la página.) La segunda diferencia está en que la directiva @ Page del modelo de código subyacente contiene atributos que hacen referencia a un archivo externo (SamplePage.aspx.vb o SamplePage.aspx.cs) y una clase. Estos atributos vinculan la página .aspx a su código.

El código está en un archivo independiente. En el ejemplo de código siguiente se muestra un archivo de código subyacente que contiene el mismo controlador de eventos Click que el ejemplo de la página de un solo archivo.

Partial Class SamplePage
    Inherits System.Web.UI.Page
    Protected Sub Button1_Click(ByVal sender As Object, _
            ByVal e As System.EventArgs) Handles Button1.Click
        Label1.Text = "Clicked at " & DateTime.Now.ToString()
    End Sub
End Class
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class SamplePage : System.Web.UI.Page
{
    protected void Button1_Click(object sender, EventArgs e)
    {
        Label1.Text = "Clicked at " + DateTime.Now.ToString();
    }
}

El archivo de código subyacente contiene las declaraciones de clase completas en el espacio de nombres predeterminado. Sin embargo, la clase se declara con la palabra clave partial, que indica que no está incluida totalmente en un archivo. En lugar de ello, cuando se ejecuta la página, el compilador lee la página .aspx y el archivo al que hace referencia en la directiva @ Page, los ensambla en una sola clase y, a continuación, los compila como una unidad en una sola clase.

El archivo de clase parcial hereda de la clase Page de la página. Para obtener más información, vea Información general sobre clases de páginas ASP.NET.

Elegir un modelo de página

La funcionalidad de los modelos de página de un solo archivo y de código subyacente es la misma. En tiempo de ejecución, ambos modelos se ejecutan de la misma manera y no hay diferencias de rendimiento entre ellos. Por consiguiente, la elección del modelo de página depende de otros factores, como el modo en que se desea organizar el código de la aplicación, si es importante separar el diseño de la página del código, etc.

Nota:

Los ejemplos que aparecen en la documentación suelen presentarse como páginas de un solo archivo. Esto es ante todo para mayor comodidad del lector, ya que se evita tener que mostrar dos archivos para cada ejemplo. El hecho de que los ejemplos de la documentación sean de un solo archivo no significa que este tipo de páginas tenga preferencia sobre las páginas de código subyacente o que conlleve alguna otra ventaja.

Ventajas de las páginas de un solo archivo

Como norma general, el modelo de un solo archivo es adecuado para las páginas cuyo código se compone principalmente de controladores de eventos para los controles de la página.

Entre las ventajas del modelo de página de un solo archivo se encuentran las siguientes:

  • En las páginas que no contienen gran cantidad de código, la conveniencia de mantener el código y el formato en el mismo archivo puede compensar otras ventajas del modelo de código subyacente. Por ejemplo, puede ser más fácil estudiar una página de un solo archivo, ya que el código y el formato se pueden ver en el mismo lugar.

  • Las páginas escritas con el modelo de un solo archivo son algo más fáciles de implementar o de enviar a otro programador ya que sólo hay un archivo.

  • Dado que no hay dependencia entre archivos, es más fácil cambiar el nombre de las páginas de un solo archivo.

  • La administración de los archivos de un sistema de control de código fuente es algo más fácil, ya que la página está en un único archivo.

Ventajas de las páginas de código subyacente

Las páginas de código subyacente ofrecen una serie de ventajas que las hacen adecuadas para las aplicaciones Web con código importante o en las que varios desarrolladores están creando un sitio Web.

Entre las ventajas del modelo de código subyacente se encuentran las siguientes:

  • Las páginas de código subyacente ofrecen una separación nítida entre el formato (la interfaz de usuario) y el código. Resulta práctico que el diseñador trabaje en el formato mientras el programador escribe el código.

  • El código no se expone a los diseñadores de las páginas o a las demás personas que sólo estén trabajando con el formato de la página.

  • El código se puede reutilizar para varias páginas.

Compilación e implementación

La compilación e implementación de ambos tipos de páginas es similar. En su aspecto más simple, basta con copiar la página en el servidor de destino. Si trabaja con páginas de código subyacente, deberá copiar la página .aspx y el archivo de código. La primera vez que se solicita la página, ASP.NET la compila y la ejecuta. Tenga en cuenta que en ambos escenarios el código fuente se implementa con el formato.

Opcionalmente, puede precompilar el sitio Web. En ese caso, ASP.NET produce para las páginas código de objeto que se puede copiar en el servidor de destino. La precompilación funciona para ambos modelos, el de un solo archivo y el de código subyacente, y el resultado es el mismo para los dos. Para obtener más información, vea Información general sobre la precompilación de ASP.NET.

Vea también

Conceptos

Información general sobre el ciclo de vida de una página ASP.NET

Información general sobre la compilación de ASP.NET