Usar Visual C# .NET para trabajar con archivos de clase de código subyacente en una aplicación 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 se compilan y archivos de clase de código subyacente que se compilan a petición.

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

Requirements

En la lista siguiente se describe el hardware, el software y la infraestructura de red recomendados que necesita:

  • Windows
  • .NET Framework
  • Internet Information Services (IIS)

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

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

  1. Inicie Visual Studio .NET.
  2. En el menú Archivo, elija Nuevo y, a continuación, 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 el nombre de servidor. Si usa el servidor local, deje la Ubicación como http://localhost .

Usar archivos de clase de código subyacente

Si usa archivos de clase de código subyacente con páginas. aspx, puede separar el código de presentación de la lógica de la 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, métodos y controladores de eventos. Para que esto funcione, la página. aspx debe especificar que heredar de la clase base de código subyacente. Para ello, use el Inherits atributo de la @ Page Directiva. La página. aspx se hereda de la clase de código subyacente y la clase de código subyacente hereda de la Page clase.

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

Para demostrar cómo Visual Studio .NET utiliza el Codebehind atributo, quite el Codebehind atributo. Ya no puede hacer clic con el botón secundario 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 no se trata de cómo .NET Framework usa archivos de clase de código subyacente, pero cómo Visual Studio .NET administra estos archivos de proyecto.

Usar el 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 de la que se va a heredar. En este escenario, no tiene que 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 cuando implemente la aplicación.

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

  1. Para agregar un nuevo formulario web que se denomine InheritSample. aspx al proyecto de Visual Studio .net, siga estos pasos:

    1. En el Explorador de soluciones, haga clic con el botón secundario en el nodo del proyecto, haga clic en Agregary, a continuación, en Agregar formulario web.
    2. En el cuadro nombre , escriba InheritSample. aspxy, a continuación, haga clic en abrir.
  2. Cambie a la vista diseño y, a continuación, agregue un control etiqueta de formulario web a la página. aspx.

  3. Haga clic con el botón secundario 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 siguiente código al Page_Load controlador de 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á involucrada en el ejemplo en tiempo de ejecución en los pasos posteriores.

  5. Cambie desde el archivo de clase de código subyacente a la página. aspx en el 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 que se denomina InheritSamples en el CodeBehindSamples espacio de nombres. De forma predeterminada, una aplicación web que se crea en Visual Studio .NET utiliza una ProjectName.ClassName estructura para el Inherits valor de 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 Visual Studio .NET, en el menú generar , haga clic en generar para crear el proyecto.

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

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

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

    (Precompiled): Page_Load fired!

Usar el atributo src y compilar a petición

Si los archivos de clase de código subyacente se compilan a petición en lugar de precompilarse, 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 cuando use este método para implementar la aplicación.

Nota

Para obtener más información acerca de los posibles problemas a la hora de desarrollar aplicaciones en Visual Studio .NET con el uso del Src atributo, consulte la sección referencias de este artículo. Visual Studio .NET se ha diseñado para aprovechar la compilación previa del código de la aplicación en un ensamblado en lugar de usar el método de compilación a petición que se describe en esta sección.

  1. Para agregar un nuevo formulario web que se denomine SrcSample. aspx a su proyecto en Visual Studio .net, siga estos pasos:

    1. En el Explorador de soluciones, haga clic con el botón secundario en el nodo del proyecto, haga clic en Agregary, a continuación, en Agregar formulario web.
    2. En el cuadro nombre , escriba SrcSample. aspxy, a continuación, haga clic en abrir.
  2. Cambie a la vista diseño y, a continuación, agregue un control etiqueta de formulario web a la página. aspx.

  3. Haga clic con el botón secundario 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 siguiente código al Page_Load evento:

    private void Page_Load(object sender, System.EventArgs e)
    {
        Label1.Text = "(Src): Page_Load fired!";
    }
    
  5. Cambie desde el archivo de clase de código subyacente a la página. aspx en el 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 realiza 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

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

  9. Si ha seguido los pasos que se indican en la sección usar el atributo Inherits con clases precompiladas , debe eliminar el ensamblado del Bin Directorio de la aplicación antes de seguir el resto de los pasos de esta sección.

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

  10. Para ejecutar la página, inicie Internet Explorer y, a continuación, escriba manualmente la dirección URL de la página. No seleccione la opción ver en el explorador o examinar con en el IDE de Visual Studio .net. De lo contrario, si usa Visual Studio .NET 2003, la página de código subyacente se compilará previamente 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 todavía no se ha compilado el archivo de clase de código subyacente y no ha incluido el Src atributo para hacer referencia al archivo de clase de código subyacente.

  11. Agregue el Src atributo a la @ Page Directiva de la 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 Inherits valor de atributo se establece en Reference CodeBehindSamples.SrcSample .

  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, a continuación, escriba manualmente la dirección URL de la página. No seleccione la opción ver en el explorador o examinar con en el IDE de Visual Studio .net. De lo contrario, si usa Visual Studio .NET 2003, la página de código subyacente se compilará previamente 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 ya 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 y, a continuación, intenta aplicar el método compile a petición usando el Src atributo:

    Mensaje de error del compilador: CS1595: 'projectname. CodeBehindClassName' se define en varios lugares; se usa 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. Biblioteca

    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 distintos porque ASP.net controla automáticamente la compilación de los directorios y sus nombres.

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

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

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

    2. Elimine el ensamblado del Bin Directorio de la aplicación.

    3. Para ejecutar la página, inicie Internet Explorer y, a continuación, escriba manualmente la dirección URL de la página. No seleccione la opción ver en el explorador o examinar con en el IDE de Visual Studio .net. De lo contrario, si usa Visual Studio .NET 2003, la página de código subyacente se compilará previamente 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 sus aplicaciones con Visual Studio .net para evitar estos tipos de problemas.

  • Si desea o si debe incluir las páginas de formularios Web en un único archivo, desarrolle las páginas. aspx para que contengan el código en lugar del archivo de clase de código subyacente.

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

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

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

  • Cuando se implementan páginas. aspx, si los 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.

  • Cuando se implementan páginas. aspx, si los archivos de clase de código subyacente asociados no están precompilados, debe implementar los archivos de clase de código subyacente en 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