Compartir a través de


Uso de .NET de Visual C# para trabajar con archivos de clase de código subyacente en una aplicación de ASP.NET

En este artículo se describe cómo desarrollar páginas .aspx que usan archivos de clase de código subyacente en aplicaciones de Microsoft ASP.NET. Los ejemplos de código de este artículo incluyen los requisitos para los archivos de clase de código subyacente que están precompilados y los archivos de clase subyacentes que se compilan a petición.

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

Requisitos

En la lista siguiente se describen las infraestructuras de hardware, software y red recomendadas que necesita:

  • Windows
  • .NET Framework
  • Servicios de Internet Information Server (IIS)

Creación de una aplicación web ASP.NET mediante Visual C# .NET

En esta sección se muestra cómo crear una nueva aplicación web ASP.NET denominada CodeBehindSamples.

  1. Inicie Visual Studio .NET.
  2. En el menú Archivo , elija Nuevoy haga clic en Proyecto.
  3. En Tipo de proyecto, haga clic en Proyectos de Visual C#. En Plantillas, haga clic en ASP.NET aplicación web.
  4. En el cuadro Nombre , escriba CodeBehindSamples. En el cuadro Ubicación, escriba ServerName. Si usa el servidor local, deje la ubicación como http://localhost.

Uso de archivos de clase de código subyacente

Si usa archivos de clase de código subyacente con páginas de .aspx, puede separar el código de presentación de la lógica de aplicación principal (o código subyacente). El archivo de clase de código subyacente se compila para que se pueda crear y usar como un objeto . Esto permite el acceso a sus propiedades, sus métodos y sus controladores de eventos. Para que esto funcione, la página .aspx debe especificar que herede de la clase base de código subyacente. Para ello, use el Inherits atributo para la @ Page directiva . La página .aspx hereda de la clase de código subyacente y la clase de código subyacente hereda de la Page clase .

De forma predeterminada, si usa Visual Studio .NET, se agrega un Codebehind atributo a la @ Page directiva . .NET Framework no usa realmente este atributo. En su lugar, Visual Studio .NET usa este atributo para mantener una referencia al archivo de código subyacente asociado para la página de .aspx.

Para demostrar cómo Visual Studio .NET usa el Codebehind atributo , quite el Codebehind atributo . Ya no puede hacer clic con el botón derecho en la página .aspx y, a continuación, hacer clic en Ver código. Este comportamiento se produce porque Visual Studio .NET ya no contiene una referencia para el archivo de clase que puede usar para la página. Recuerde que esto no es cómo .NET Framework usa archivos de clase de código subyacente, pero cómo Visual Studio .NET administra estos archivos de proyecto.

Uso del atributo Inherits con clases precompiladas

Si precompila las clases de código subyacente en un ensamblado, puede usar el Inherits atributo para especificar la clase desde la que se va a heredar. En este escenario, no es necesario incluir el archivo de clase de código subyacente real al implementar la aplicación. En su lugar, debe implementar el ensamblado y la página .aspx. Debe colocar el ensamblado en la Bin carpeta de la aplicación al implementar la aplicación.

En esta sección se muestra cómo crear un nuevo formulario web que use el enfoque precompilado y hereda de la clase de código subyacente.

  1. Para agregar un nuevo formulario web denominado InheritSample.aspx al proyecto de .NET de Visual Studio, siga estos pasos:

    1. En Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto, haga clic en Agregar y, a continuación, haga clic en Agregar formulario web.
    2. En el cuadro Nombre , escriba InheritSample.aspx y haga clic en Abrir.
  2. Cambie a la vista Diseño y agregue un control Etiqueta de formulario web a la página .aspx.

  3. Haga clic con el botón derecho en la página .aspx y, a continuación, haga clic en Ver código. El archivo de código subyacente se abre en el editor.

  4. En el archivo de código subyacente, agregue el código siguiente al controlador de Page_Load eventos:

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Precompiled): Page_Load fired!";
    }
    

    Nota:

    Este código solo muestra que la clase de código subyacente está implicada en el ejemplo en tiempo de ejecución en los pasos posteriores.

  5. Cambie del archivo de clase de código subyacente a la página .aspx del editor y, a continuación, cambie a la vista HTML.

  6. En la parte superior de la página, revise el código de la @ Page directiva . El código debe ser similar al siguiente código predeterminado:

    <%@ Page language="c#" Codebehind="InheritSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.InheritSample" %>
    

    En este ejemplo, la página .aspx hereda de la clase de código subyacente denominada InheritSamples en el CodeBehindSamples espacio de nombres . De forma predeterminada, una aplicación web que se crea en Visual Studio .NET usa una ProjectName.ClassName estructura para el valor del Inherits atributo.

  7. En el menú Archivo , haga clic en Guardar todo para guardar el formulario web y otros archivos de proyecto asociados.

  8. En el IDE de .NET de Visual Studio, en el menú Compilar , haga clic en Compilar para compilar el proyecto.

  9. En el menú Proyecto, haga clic en Mostrar todos los archivos.

  10. En Explorador de soluciones, haga clic para expandir la Bin carpeta. El ensamblado que se genera al compilar el proyecto desde la sección anterior (que es CodeBehindSamples.dll en este ejemplo) aparece en la Bin carpeta .

  11. En Visual Studio .NET, haga clic con el botón derecho en la página de Explorador de soluciones y, a continuación, haga clic en Ver en explorador para ejecutar el código. La etiqueta se rellena con el siguiente valor:

    (Precompiled): Page_Load fired!

Uso del atributo Src y compilación a petición

Si los archivos de clase de código subyacente se compilarán a petición en lugar de precompilados, debe usar el Src atributo para especificar la ruta de acceso relativa del archivo de clase de código subyacente. Asegúrese de incluir el archivo de clase real al usar este método para implementar la aplicación.

Nota:

Para obtener más información sobre los posibles problemas al desarrollar aplicaciones en Visual Studio .NET con el Src atributo , consulte la sección Referencias de este artículo. Visual Studio .NET está diseñado para aprovechar las ventajas de precompilar el código de la aplicación en un ensamblado en lugar de usar el enfoque de compilación a petición que se describe en esta sección.

  1. Para agregar un nuevo formulario web denominado SrcSample.aspx al proyecto en Visual Studio .NET, siga estos pasos:

    1. En Explorador de soluciones, haga clic con el botón derecho en el nodo del proyecto, haga clic en Agregar y, a continuación, haga clic en Agregar formulario web.
    2. En el cuadro Nombre , escriba SrcSample.aspx y haga clic en Abrir.
  2. Cambie a la vista Diseño y agregue un control Etiqueta de formulario web a la página .aspx.

  3. Haga clic con el botón derecho en la página .aspx y, a continuación, haga clic en Ver código. El archivo de código subyacente se abre en el editor.

  4. En el archivo de código subyacente, agregue el código siguiente al Page_Load evento :

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Src): Page_Load fired!";
    }
    
  5. Cambie del archivo de clase de código subyacente a la página .aspx del editor y, a continuación, cambie a la vista HTML.

  6. En la parte superior de la página, revise el código de la @ Page directiva . El código debe ser similar al siguiente código predeterminado:

    <%@ Page language="c#" Codebehind="SrcSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample"%>
    
  7. Para simplificar este ejemplo, elimine el archivo Global.asax del proyecto. Esto solo se hace en este ejemplo para evitar errores adicionales relacionados con la página de código subyacente del archivo Global.asax .

  8. En el menú Archivo , haga clic en Guardar todo para guardar el formulario web y otros archivos de proyecto asociados.

    Nota:

    Dado que desea que el archivo de clase de código subyacente de este ejemplo se compile a petición, no compile la solución ahora.

  9. Si ha seguido los pasos que aparecen en la sección Usar el atributo Inherits con clases precompiladas, debe eliminar el ensamblado en el Bin directorio de la aplicación antes de seguir el resto de los pasos de esta sección.

    Para obtener más información, visite la sección Solución de problemas de este artículo.

  10. Para ejecutar la página, inicie Internet Explorer y escriba manualmente la dirección URL de la página. No seleccione las opciones Ver en el explorador o Examinar con en el IDE de .NET de Visual Studio. De lo contrario, si usa Visual Studio .NET 2003, la página de código subyacente se precompilará en un ensamblado que se encuentra en el Bin directorio de forma predeterminada. Después de ver la página, recibirá un mensaje de error similar al siguiente:

    No se pudo cargar el tipo "CodeBehindSamples.SrcSample".

    Este error se produce porque el archivo de clase de código subyacente aún no está compilado y aún no ha incluido el Src atributo para hacer referencia al archivo de clase de código subyacente.

  11. Agregue el Src atributo a la directiva de la @ Page siguiente manera:

    <%@ Page language="c#" Codebehind="SrcSample.aspx.cs"
    AutoEventWireup="false" Inherits="CodeBehindSamples.SrcSample" Src="SrcSample.aspx.cs"%>
    

    El Src atributo se muestra con la ruta de acceso relativa del archivo de clase de código subyacente (SrcSample.aspx.cs) y el valor del Inherits atributo se establece en referencia CodeBehindSamples.SrcSamplea .

  12. En el menú Archivo , haga clic en Guardar todo para guardar el formulario web y otros archivos de proyecto asociados. Recuerde que no compile la solución porque desea que el archivo de clase de código subyacente de este ejemplo se compile a petición.

  13. Para ejecutar la página, inicie Internet Explorer y escriba manualmente la dirección URL de la página. No seleccione las opciones Ver en el explorador o Examinar con en el IDE de .NET de Visual Studio. De lo contrario, si usa Visual Studio .NET 2003, la página de código subyacente se precompilará en un ensamblado que se encuentra en el Bin directorio de forma predeterminada. En este punto, la página debe cargarse en el explorador y la etiqueta se rellena con el siguiente valor:

    (Src): Page_Load fired!

    El archivo de clase de código subyacente ahora se ha compilado a petición y funciona correctamente.

Solución de problemas

  • Puede recibir un mensaje de error similar al siguiente si precompila la aplicación en Visual Studio .NET e intenta aplicar el enfoque de compilación a petición mediante el Src atributo :

    Mensaje de error del compilador: CS1595: "ProjectName.CodeBehindClassName" se define en varios lugares; usando la definición de '%windir%:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files\YourProjectName\d1444413\36fce407\assembly\dl2\009389be\231afa2d_d586c301\YourAssemblyName. DLL'

    Tenga en cuenta que los nombres de directorio que siguen a YourProjectName en la ruta de acceso que aparece en el mensaje de error probablemente serán diferentes porque ASP.NET controla automáticamente la creación de los directorios y sus nombres.

    Si usa el Src atributo , debe seguir estos pasos para resolver el problema asociado al mensaje de error:

    1. Elimine el directorio YourProjectName al que se hace referencia en el mensaje de error. También puede que tenga que ejecutar el iisreset comando desde el símbolo del sistema antes de completar este paso. En caso contrario, es posible que reciba el mensaje de error siguiente:

      No se puede eliminar GeneratedName.dll: se deniega el acceso.
      Asegúrese de que el disco no está lleno o protegido por escritura y que el archivo no está actualmente en uso.

    2. Elimine el ensamblado en el Bin directorio de la aplicación.

    3. Para ejecutar la página, inicie Internet Explorer y escriba manualmente la dirección URL en la página. No seleccione las opciones Ver en el explorador o Examinar con en el IDE de .NET de Visual Studio. De lo contrario, si usa Visual Studio .NET 2003, la página de código subyacente se precompilará en un ensamblado que se encuentra en el Bin directorio de forma predeterminada.

    Nota:

    Microsoft recomienda usar el enfoque precompilado en lugar del método de compilación a petición (mediante el Src atributo ) si desarrolla las aplicaciones con Visual Studio .NET para evitar estos tipos de problemas.

  • Si desea o si debe contener las páginas de formulario web en un solo archivo, desarrolle las páginas de .aspx para contener el código en lugar del archivo de clase de código subyacente.

    Para obtener más información sobre cómo desarrollar formularios web de un solo archivo en Visual Studio .NET, consulte la documentación técnica retirada de Visual Studio 2003.

  • Si no precompila el archivo de clase de código subyacente y si no agrega el Src atributo a la @ Page directiva, o si la ruta de acceso virtual del atributo no es correcta, recibirá el siguiente mensaje de error:

    No se pudo cargar el tipo "CodeBehindSamples.SrcSample".

  • Al implementar .aspx páginas, si sus archivos de clase de código subyacente asociados están precompilados, solo tiene que implementar el ensamblado en la Bin carpeta de la aplicación. No es necesario implementar los archivos de clase de código subyacente reales con la aplicación.

  • Al implementar .aspx páginas, si sus archivos de clase de código subyacente asociados no están precompilados, debe implementar los archivos de clase de código subyacente con la aplicación. Además, debe agregar el Src atributo a la @ Page directiva porque el archivo de clase debe estar disponible cuando se compila a petición.

Referencias

  • Para obtener más información sobre los ensamblados, vea Ensamblados.

  • Para obtener más artículos, ejemplos y otros recursos relacionados con la programación de ASP.NET, consulte ASP.NET.

  • Para obtener más información sobre la directiva @ Page y sus distintos atributos, vea @ Page.

  • Para obtener más información sobre la sintaxis general de Web Forms, vea Sintaxis de formularios Web Forms.

  • Para obtener más información, consulte ASP.NET Introducción al modelo de código subyacente.