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

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

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

Requisitos

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

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

Crear una ASP.NET web mediante Visual C# .NET

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

  1. Inicie Visual Studio .NET.
  2. En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.
  3. En Project, haga clic en Visual C# Projects. En Plantillas, haga clic 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 location 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 principal de la aplicación (o código subyacente). El archivo de clase de código subyacente se compila para que se pueda crear y usar como 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 se 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 atributo a Codebehind la @ Page directiva. La .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 .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 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 esta no es la forma en que .NET Framework archivos de clase de código subyacente, sino la forma en que .NET administra estos archivos de proyecto Visual Studio.

Usar el atributo Inherits con clases precompiladas

Si precompila las clases de código subyacente en un ensamblado, puede usar el atributo para especificar la clase de la que Inherits 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 herede de la clase de código subyacente.

  1. Para agregar un nuevo formulario web denominado InheritSample.aspx a su 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 Agregar y, a continuación, haga clic en Agregar formulario web.
    2. En el cuadro Nombre, escriba InheritSample.aspx y, 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 controlador Page_Load 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á 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 que se denomina InheritSamples en el espacio de CodeBehindSamples nombres. De forma predeterminada, una aplicación web que se crea en Visual Studio .NET usa una ProjectName.ClassName estructura para el valor de 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 Visual Studio IDE de .NET, en el menú Generar, haga clic en Compilar para compilar el proyecto.

  9. En el menú Project, 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 desde la sección anterior (queCodeBehindSamples.dllen este ejemplo) aparece en la Bin carpeta.

  11. En Visual Studio .NET, haga clic con el botón secundario en la página del Explorador de soluciones y, 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 compilarán a petición en lugar de precompilados, debe usar el atributo para especificar la ruta de acceso relativa del archivo de clase de Src 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 posibles problemas al desarrollar las aplicaciones en Visual Studio .NET con el uso del atributo, vea la sección Src Referencias de este artículo. Visual Studio .NET está diseñado para aprovechar la precompilación del 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 el Explorador de soluciones, haga clic con el botón secundario 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, 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 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 cree la solución ahora.

  9. Si ha seguido los pasos enumerados en la sección Usar el atributo Inherits con clases precompiladas, debe eliminar el ensamblado en el directorio de la aplicación antes de seguir el resto de los pasos de esta Bin 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, a continuación, escriba manualmente la dirección URL de la página. No seleccione la vista en el explorador ni las opciones Examinar con del ide de .NET Visual Studio . NET. 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 directorio de Bin 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 se ha incluido el atributo para hacer referencia al archivo de clase de Src código subyacente.

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

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

    El atributo se muestra con la ruta de acceso relativa del archivo de clase de código subyacente Src (SrcSample.aspx.cs), y el valor del atributo se Inherits establece en referencia 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 cree la solución porque desea que el archivo de clase de código subyacente para 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 vista en el explorador ni las opciones Examinar con del ide de .NET Visual Studio . NET. 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 directorio de Bin forma predeterminada. En este momento, 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 y, a continuación, 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 atributo, debe seguir estos pasos para Src resolver el problema asociado con el mensaje de error:

    1. Elimine el directorio YourProjectName al que se hace referencia en el mensaje de error. Es posible que también 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 puedeGeneratedName.dll: se deniega el acceso.
      Asegúrese de que el disco no está lleno o protegido contra escritura y de que el archivo no está en uso actualmente.

    2. Elimine el ensamblado en el 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 vista en el explorador ni las opciones Examinar con del ide de .NET Visual Studio . NET. 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 directorio de Bin forma predeterminada.

    Nota

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

  • Si desea o si debe contener las páginas del formulario web en un solo 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 sobre cómo desarrollar archivos de Web Forms en Visual Studio .NET, vea Visual Studio documentación técnica retirada de 2003.

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

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

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

  • Al implementar páginas .aspx, 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 atributo a la directiva porque el archivo de clase debe estar disponible cuando Src @ Page se compila a petición.

Referencias