ASP.NET Web Forms es un marco de trabajo para aplicaciones web y uno de los diversos modelos de programación compatibles con la tecnología Microsoft ASP.NET . Las aplicaciones Web Forms se pueden escribir en cualquier lenguaje de programación compatible con Common Language Runtime , como C# o Visual Basic . Los principales componentes básicos de las páginas Web Forms son los controles del servidor , que son componentes reutilizables responsables de renderizar el marcado HTML y responder a los eventos. [ 1 ] Se utiliza una técnica denominada estado de vista para mantener el estado de los controles del servidor entre solicitudes HTTP que normalmente no tienen estado . [ 2 ]
Web Forms se incluyó en la versión original de .NET Framework 1.0 en 2002 (véase el historial de versiones de .NET Framework y el historial de versiones de ASP.NET ), como el primer modelo de programación disponible en ASP.NET. A diferencia de los componentes más recientes de ASP.NET, Web Forms no es compatible con ASP.NET Core . [ 3 ]
Características
Las páginas web ASP.NET, conocidas oficialmente como Web Forms, [ 4 ] fueron los principales bloques de construcción para el desarrollo de aplicaciones en ASP.NET antes de la introducción de MVC. [ 5 ] Hay dos metodologías básicas para Web Forms: un formato de aplicación web y un formato de sitio web. [ 6 ] Las aplicaciones web necesitan ser compiladas antes de la implementación, mientras que los sitios web permiten al usuario copiar los archivos directamente al servidor sin compilación previa. Los formularios web están contenidos en archivos con una extensión ".aspx"; estos archivos normalmente contienen marcado HTML estático ( X ) o marcado de componentes. El marcado de componentes puede incluir controles web del lado del servidor y controles de usuario que se han definido en el marco o la página web. Por ejemplo, un componente de cuadro de texto puede definirse en una página como , que se renderiza en un cuadro de entrada HTML. Además, el código dinámico, que se ejecuta en el servidor, puede colocarse en una página dentro de un bloque , que es similar a otras tecnologías de desarrollo web como PHP , JSP y ASP . Con ASP.NET Framework 2.0 , Microsoft introdujo un nuevo modelo de código subyacente que permite que el texto estático permanezca en la página .aspx mientras que el código dinámico se coloca en un archivo .aspx.vb, .aspx.cs o .aspx.fs (dependiendo del lenguaje de programación utilizado). [ 7 ]<asp:textboxid="myid"runat="server"><%--dynamiccode--%>
Modelo de código subyacente
Microsoft recomienda trabajar con código de programa dinámico utilizando el modelo de código subyacente, que coloca este código en un archivo separado o en una etiqueta de script especialmente designada. Los archivos de código subyacente suelen tener nombres como " MyPage.aspx.cs" o " MyPage.aspx.vb", mientras que el archivo de página es MyPage.aspx (mismo nombre de archivo que el archivo de página (ASPX), pero con la extensión final que indica el lenguaje de la página). Esta práctica es automática en Visual Studio y otros IDE , aunque el usuario puede cambiar el nombre de la página del código subyacente. Además, en el formato de aplicación web, pagename.aspx.cs es una clase parcial que está vinculada al archivo pagename.designer.cs. El archivo de diseño es un archivo que se genera automáticamente a partir de la página ASPX y permite al programador hacer referencia a componentes en la página ASPX desde la página de código subyacente sin tener que declararlos manualmente, como era necesario en las versiones de ASP.NET anteriores a la versión 2. [ 8 ] Al utilizar este estilo de programación, el desarrollador escribe código para responder a diferentes eventos, como la carga de la página o el clic en un control, en lugar de un recorrido procedimental del documento.
El modelo de código subyacente de ASP.NET representa un cambio con respecto al ASP clásico, ya que anima a los desarrolladores a crear aplicaciones con una clara separación entre la presentación y el contenido . En teoría, esto permitiría a un diseñador web, por ejemplo, centrarse en el marcado del diseño con menor riesgo de interferir con el código de programación que lo sustenta. Esto es similar a la separación entre el controlador y la vista en los frameworks modelo-vista-controlador (MVC).
Directivas
Una directiva es una instrucción especial sobre cómo ASP.NET debe procesar la página. [ 9 ] La directiva más común es , que puede especificar muchos atributos utilizados por el analizador y compilador de páginas de ASP.NET.<%@Page%>
Controles de usuario
Los controles de usuario son encapsulaciones de secciones de páginas que se registran y utilizan como controles en ASP.NET.
Controles personalizados
Los programadores también pueden crear controles personalizados para aplicaciones ASP.NET. A diferencia de los controles de usuario, estos controles no tienen un archivo de marcado ASCX, ya que todo su código se compila en un archivo de biblioteca de vínculos dinámicos (DLL) . Dichos controles personalizados se pueden usar en múltiples aplicaciones web y proyectos de Visual Studio 2013 .
Técnica de renderizado
.NET utiliza una técnica de renderizado de "compuestos visitados". Durante la compilación, el archivo de plantilla (.aspx) se convierte en código de inicialización que crea un árbol de controles (el compuesto) que representa la plantilla original. El texto literal se inserta en instancias de la clase de control Literal, y los controles del servidor se representan mediante instancias de una clase de control específica. El código de inicialización se combina con el código escrito por el usuario (generalmente mediante el ensamblaje de varias clases parciales) y da como resultado una clase específica para la página. La página también actúa como raíz del árbol de controles.
Las solicitudes reales para la página se procesan a través de varios pasos. Primero, durante la inicialización, se crea una instancia de la clase de la página y se ejecuta el código de inicialización. Esto genera el árbol de control inicial, que luego se manipula mediante los métodos de la página. Dado que cada nodo del árbol es un control representado como una instancia de una clase, el código puede modificar la estructura del árbol, así como manipular las propiedades y los métodos de cada nodo. Finalmente, durante la renderización, se utiliza un visitante para recorrer cada nodo del árbol, solicitando a cada uno que se renderice utilizando sus métodos. El resultado HTML se envía al cliente.
Una vez procesada la solicitud, la instancia de la clase de página se descarta, junto con todo el árbol de control. Esto suele generar confusión entre los programadores novatos de ASP.NET, quienes dependen de los miembros de la instancia de clase que se pierden en cada ciclo de solicitud/respuesta de página.
Gestión estatal
Las aplicaciones ASP.NET se alojan en un servidor web y se acceden mediante el protocolo HTTP sin estado . Por lo tanto, si una aplicación utiliza interacción con estado, debe implementar la gestión de estado por sí misma. ASP.NET proporciona diversas funciones para la gestión de estado. Conceptualmente, Microsoft considera el "estado" como el estado de la interfaz gráfica de usuario ( GUI ) . Pueden surgir problemas si una aplicación debe realizar un seguimiento del "estado de los datos"; por ejemplo, una máquina de estados finitos que puede estar en un estado transitorio entre solicitudes ( evaluación diferida ) o que tarda mucho tiempo en inicializarse. La gestión de estado en páginas ASP.NET con autenticación puede dificultar o imposibilitar el web scraping .
Solicitud
El estado de la aplicación se mantiene mediante una colección de variables compartidas definidas por el usuario. Estas se establecen e inicializan cuando Application_OnStartse activa el evento al cargar la primera instancia de la aplicación y están disponibles hasta que finaliza la última instancia. Se accede a las variables de estado de la aplicación mediante la Applicationscolección, que proporciona un contenedor para el estado de la aplicación. Las variables de estado de la aplicación se identifican por su nombre. [ 10 ] La aplicación es gestión de estado.
Estado de sesión
El estado de la sesión del servidor se mantiene mediante una colección de variables de sesión definidas por el usuario que persisten durante la sesión. Estas variables, a las que se accede mediante la Sessioncolección, son únicas para cada instancia de sesión. Se puede configurar que las variables se destruyan automáticamente después de un tiempo de inactividad definido, incluso si la sesión no finaliza. La sesión del usuario del cliente se mantiene mediante una cookie o codificando el ID de sesión en la propia URL. [ 10 ]
ASP.NET admite tres modos de persistencia para las variables de sesión del lado del servidor: [ 10 ]
- Modo en proceso
- Las variables de sesión se mantienen dentro del proceso ASP.NET . Este es el método más rápido; sin embargo, en este modo, las variables se destruyen cuando el proceso ASP.NET se reinicia o se cierra.
- Modo de servidor de estado
- ASP.NET ejecuta un servicio de Windows independiente que mantiene las variables de estado. Dado que la gestión del estado se realiza fuera del proceso de ASP.NET y que el motor de ASP.NET accede a los datos mediante .NET Remoting, ASPState es más lento que In-Process. Este modo permite equilibrar la carga y escalar una aplicación ASP.NET en varios servidores. Como el servicio de gestión de estado se ejecuta independientemente de ASP.NET, las variables de sesión pueden persistir incluso después de que el proceso de ASP.NET se cierre. Sin embargo, dado que el servidor de estado de sesión se ejecuta como una sola instancia, sigue siendo un punto de fallo para el estado de sesión. El servicio de estado de sesión no se puede equilibrar la carga y existen restricciones en los tipos que se pueden almacenar en una variable de sesión.
- Modo SQL Server
- Las variables de estado se almacenan en una base de datos , lo que permite que las variables de sesión persistan incluso después de que se cierren los procesos de ASP.NET. La principal ventaja de este modo es que permite que la aplicación equilibre la carga en un clúster de servidores, compartiendo las sesiones entre ellos. Este es el método más lento para la gestión del estado de sesión en ASP.NET.
El estado de sesión de ASP.NET permite almacenar y recuperar valores para un usuario mientras navega por las páginas de ASP.NET en una aplicación web. HTTP es un protocolo sin estado. Esto significa que un servidor web trata cada solicitud HTTP de una página como una solicitud independiente. El servidor no conserva información sobre los valores de las variables utilizadas en solicitudes anteriores. El estado de sesión de ASP.NET identifica las solicitudes del mismo navegador durante un período de tiempo limitado como una sesión y proporciona una forma de conservar los valores de las variables durante la duración de dicha sesión. De forma predeterminada, el estado de sesión de ASP.NET está habilitado para todas las aplicaciones de ASP.NET.
Entre las alternativas al estado de sesión se incluyen las siguientes:
- El estado de la aplicación almacena variables a las que pueden acceder todos los usuarios de una aplicación ASP.NET.
- Las propiedades de perfil permiten conservar los valores del usuario en un almacén de datos sin que caduquen.
- El almacenamiento en caché de ASP.NET guarda valores en una memoria a la que pueden acceder todas las aplicaciones ASP.NET.
- Estado de vista, que conserva los valores en una página.
- Galletas.
- La cadena de consulta y los campos de un formulario HTML que están disponibles a partir de una solicitud HTTP.
Ver estado
El estado de vista se refiere al mecanismo de gestión de estado a nivel de página, utilizado por las páginas HTML generadas por las aplicaciones ASP.NET para mantener el estado de los controles y widgets de formularios web . El estado de los controles se codifica y se envía al servidor en cada envío de formulario en un campo oculto conocido como __VIEWSTATE. El servidor devuelve la variable para que, cuando se vuelva a renderizar la página, los controles se muestren en su último estado. En el lado del servidor, la aplicación puede cambiar el estado de vista si el procesamiento requiere un cambio de estado de algún control. Los estados de los controles individuales se decodifican en el servidor y están disponibles para su uso en páginas ASP.NET mediante la ViewStatecolección. [ 11 ]
Su principal utilidad es preservar la información del formulario entre postbacks. El estado de vista está activado por defecto y, normalmente, serializa los datos de cada control de la página, independientemente de si se utilizan o no durante un postback. Sin embargo, este comportamiento puede (y debe) modificarse, ya que el estado de vista puede desactivarse por control, por página o en todo el servidor.
Los desarrolladores deben tener cuidado al almacenar información sensible o privada en el estado de vista de una página o control, ya que la cadena Base64 que contiene los datos del estado de vista se puede deserializar fácilmente. Por defecto, el estado de vista no cifra el __VIEWSTATEvalor. El cifrado se puede habilitar a nivel de servidor (y de forma específica para cada servidor), lo que permite mantener un cierto nivel de seguridad. [ 12 ]
Almacenamiento en caché del lado del servidor
ASP.NET ofrece un objeto "Cache" que se comparte en toda la aplicación y que también se puede usar para almacenar diversos objetos. El objeto "Cache" conserva los datos solo durante un período de tiempo determinado.
Otro
Otros métodos de gestión de estado compatibles con ASP.NET son las cookies , el almacenamiento en caché y la cadena de consulta .
Motor de plantillas
Cuando se lanzó por primera vez, ASP.NET carecía de un motor de plantillas . Debido a que .NET Framework es orientado a objetos y permite la herencia , muchos desarrolladores definían una nueva clase base que heredaba de " System.Web.UI.Page", escribían métodos allí que renderizaban HTML y luego hacían que las páginas de su aplicación heredaran de esta nueva clase. Si bien esto permite reutilizar elementos comunes en todo un sitio, agrega complejidad y mezcla código fuente con marcado . Además, este método solo se puede probar visualmente ejecutando la aplicación, no durante su diseño. Otros desarrolladores han utilizado archivos de inclusión y otros trucos para evitar tener que implementar la misma navegación y otros elementos en cada página.
ASP.NET 2.0 introdujo el concepto de páginas maestras , que permiten el desarrollo de páginas basado en plantillas . Una aplicación web puede tener una o más páginas maestras, las cuales, a partir de ASP.NET 2.0, pueden anidarse. [ 13 ] Las plantillas maestras tienen controles de marcador de posición, llamados ContentPlaceHolders , para indicar dónde se ubica el contenido dinámico, así como HTML y JavaScript compartidos entre las páginas secundarias.
Las páginas secundarias utilizan los controles ContentPlaceHolder, que deben estar vinculados al marcador de posición de la página maestra que la página de contenido está rellenando. El resto de la página se define mediante las partes compartidas de la página maestra, de forma similar a la combinación de correspondencia en un procesador de textos . Todo el marcado y los controles del servidor en la página de contenido deben ubicarse dentro del control ContentPlaceHolder.
Cuando se solicita una página de contenido, ASP.NET combina el resultado de la página de contenido con el resultado de la página maestra y envía el resultado al usuario.
La página maestra sigue siendo totalmente accesible para la página de contenido. Esto significa que la página de contenido aún puede manipular encabezados, cambiar el título, configurar el almacenamiento en caché, etc. Si la página maestra expone propiedades o métodos públicos (por ejemplo, para establecer avisos de derechos de autor), la página de contenido también puede utilizarlos.
Otros archivos
Otras extensiones de archivo asociadas con diferentes versiones de ASP.NET incluyen:
Estructura de directorios
En general, la estructura de directorios de ASP.NET se define según las preferencias del desarrollador. Salvo algunos nombres de directorio reservados, el sitio puede abarcar cualquier número de directorios. Esta estructura se refleja normalmente en las URL. Si bien ASP.NET permite interceptar la solicitud en cualquier punto del procesamiento, el desarrollador no está obligado a canalizar las solicitudes a través de una aplicación central o un controlador frontal.
Los nombres de directorio especiales (a partir de ASP.NET 2.0) son: [ 16 ]
- Código de la aplicación
- Este es el directorio de "código sin procesar". El servidor ASP.NET compila automáticamente los archivos (y subdirectorios) de esta carpeta en un ensamblado accesible desde el código de cada página del sitio. App_Code se utiliza normalmente para el código de abstracción de acceso a datos, el código del modelo y el código de negocio. Además, los controladores HTTP y módulos específicos del sitio, así como la implementación de servicios web, se ubican en este directorio. Como alternativa al uso de App_Code, el desarrollador puede optar por proporcionar un ensamblado independiente con código precompilado.
- Datos de la aplicación
- El directorio App_Data de ASP.NET es el directorio predeterminado para cualquier base de datos utilizada por el sitio web ASP.NET. Estas bases de datos pueden incluir archivos de Access (mdb) o archivos de SQL Server (mdf). App_Data es el único directorio con acceso de escritura habilitado para la aplicación web ASP.NET.: [ 17 ]
- Recursos globales de la aplicación
- Almacena archivos resx con recursos localizados disponibles para todas las páginas del sitio. Aquí es donde el desarrollador de ASP.NET suele guardar mensajes localizados, etc., que se utilizan en más de una página.
- Recursos locales de la aplicación
- Por ejemplo, un archivo llamado CheckOut.aspx.fr-FR.resx contiene recursos localizados para la versión francesa de la página CheckOut.aspx. Cuando la configuración regional de la interfaz de usuario está establecida en francés, ASP.NET encuentra y utiliza automáticamente este archivo para la localización.
- Aplicación_Sin conexión.htm
- Un archivo (no un directorio) que desactiva la aplicación devolviendo el contenido del archivo ante cualquier solicitud de la aplicación.
- Temas de la aplicación
- Agrega una carpeta que contiene archivos relacionados con los temas, una nueva característica de ASP.NET que ayuda a garantizar una apariencia uniforme en todo el sitio web y facilita el cambio de la apariencia del sitio web cuando sea necesario.
- Referencias web de la aplicación
- Contiene archivos de descubrimiento y archivos WSDL para referencias a servicios web que se consumirán en el sitio.
- Papelera
- Contiene código compilado ( archivos .dll ) para controles, componentes u otro código que desee utilizar en su aplicación. Todas las clases representadas por código en la carpeta Bin se referencian automáticamente en su aplicación.
Actuación
ASP.NET busca obtener ventajas de rendimiento sobre otras tecnologías basadas en scripts (incluido Classic ASP) compilando el código del lado del servidor la primera vez que se usa en uno o más archivos DLL en el servidor web . Estos archivos DLL o ensamblados contienen Microsoft Intermediate Language (MSIL) para ejecutarse dentro del Common Language Runtime ; esto proporciona una mejora de rendimiento sobre los lenguajes puramente basados en scripts y es similar al enfoque utilizado por Python y no muy diferente de JavaServer Pages . [ 18 ] Esta compilación se realiza automáticamente la primera vez que se solicita una página (lo que significa que el desarrollador no necesita realizar un paso de compilación separado para las páginas).
Esta función ofrece la facilidad de desarrollo de los lenguajes de scripting con las ventajas de rendimiento de un binario compilado. Sin embargo, la compilación puede provocar una breve pero perceptible demora para el usuario cuando se solicita por primera vez la página recién editada al servidor web, pero esta demora no se repetirá a menos que la página solicitada se actualice posteriormente.
Los archivos ASPX y otros archivos de recursos se ubican en un host virtual en un servidor de Internet Information Services (o en otros servidores ASP.NET compatibles; consulte Otras implementaciones, más abajo). La primera vez que un cliente solicita una página, .NET Framework analiza y compila los archivos en un ensamblado .NET y envía la respuesta; las solicitudes posteriores se atienden desde los archivos DLL. De forma predeterminada, ASP.NET compila todo el sitio en lotes de 1000 archivos en la primera solicitud. Si la demora en la compilación causa problemas, se puede ajustar el tamaño del lote o la estrategia de compilación.
Los desarrolladores también pueden optar por precompilar sus archivos de "código subyacente" antes de la implementación, utilizando Microsoft Visual Studio, lo que elimina la necesidad de compilación justo a tiempo en un entorno de producción. [ 19 ] Esto también elimina la necesidad de tener el código fuente en el servidor web. Además, admite texto precompilado.
Comparación entre ASP.NET y ASP clásico
ASP.NET WebForms simplifica la transición de los desarrolladores del desarrollo de aplicaciones de Windows al desarrollo web, al ofrecer la posibilidad de crear páginas compuestas por controles similares a una interfaz de usuario de Windows . Un control web, como un botón o una etiqueta , funciona de forma muy parecida a sus equivalentes de Windows: el código puede asignar sus propiedades y responder a sus eventos. Los controles saben cómo renderizarse: mientras que los controles de Windows se dibujan en la pantalla, los controles web generan segmentos de HTML y JavaScript que forman parte de la página resultante que se envía al navegador del usuario final.
ASP.NET WebForms anima al programador a desarrollar aplicaciones utilizando un modelo de interfaz gráfica de usuario (GUI) basado en eventos , en lugar de entornos de scripting web convencionales como ASP y PHP . El framework combina tecnologías existentes como JavaScript con componentes internos como " ViewState " para aportar un estado persistente (entre solicitudes) al entorno web, que por naturaleza carece de estado .
Otras diferencias en comparación con Classic ASP son:
- El código compilado permite que las aplicaciones se ejecuten más rápido, con una mayor cantidad de errores de diseño detectados en la etapa de desarrollo.
- Se ha mejorado significativamente el manejo de errores en tiempo de ejecución, haciendo uso del manejo de excepciones mediante bloques try-catch.
- Metáforas similares a las de las aplicaciones de Microsoft Windows, como controles y eventos.
- Un amplio conjunto de controles y bibliotecas de clases, así como controles definidos por el usuario, permiten la rápida creación de aplicaciones. La disposición de estos controles en una página es más sencilla, ya que la mayor parte se puede realizar visualmente en la mayoría de los editores.
- ASP.NET utiliza las capacidades multilingües del Common Language Runtime de .NET , lo que permite codificar páginas web en VB.NET, C#, F#, Delphi.NET, etc.
- Posibilidad de almacenar en caché la página completa o solo partes de ella para mejorar el rendimiento.
- Capacidad para utilizar el modelo de desarrollo de código subyacente para separar la lógica de negocio de la presentación.
- Capacidad para utilizar un diseño verdaderamente orientado a objetos para programar páginas y controles.
- Si una aplicación ASP.NET presenta una fuga de memoria , el entorno de ejecución de ASP.NET descarga el AppDomain que aloja la aplicación problemática y vuelve a cargar la aplicación en un nuevo AppDomain.
- En ASP.NET, el estado de sesión se puede guardar en una base de datos de Microsoft SQL Server o en un proceso independiente que se ejecute en la misma máquina que el servidor web o en una máquina diferente. De esta forma, los valores de sesión no se pierden cuando se reinicia el servidor web o se reinicia el proceso de trabajo de ASP.NET.
- Las versiones de ASP.NET anteriores a la 2.0 fueron criticadas por su falta de cumplimiento de estándares. El HTML y JavaScript generados y enviados al navegador del cliente no siempre se validaban según los estándares W3C / ECMA . Además, la función de detección de navegador del framework a veces identificaba erróneamente navegadores web distintos de Internet Explorer de Microsoft como "inferiores" y devolvía HTML/JavaScript a estos clientes con algunas características eliminadas, o incluso dañadas o defectuosas. Sin embargo, en la versión 2.0, todos los controles generan una salida válida en HTML 4.0, XHTML 1.0 (por defecto) o XHTML 1.1, según la configuración del sitio. La detección de navegadores web que cumplen con los estándares es más robusta y la compatibilidad con hojas de estilo en cascada (CSS) es más amplia.
- Controles de servidor web: estos controles, introducidos por ASP.NET WebForms, proporcionan la interfaz de usuario para los formularios web. Son controles con estado gestionado y de tipo WYSIWYG ( lo que ves es lo que obtienes).
Ejemplo
<%@ Page Language = "C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat= "server" > protected void Page_Load ( object sender , EventArgs e ) { Label1 . Text = DateTime . Now . ToLongDateString (); } </script> <html xmlns= "http://www.w3.org/1999/xhtml" > <head runat= "server" > <title> Página de ejemplo </title> </head> <body> <form id= "form1" runat= "server" > <div> La hora actual es: <asp:Label runat= "server" id= "Label1" / > </div> </form> </body> </html>Referencias
Citas
- ↑ "¿Qué son los formularios web?" . docs.microsoft.com . 15 de junio de 2023.
- ↑ "Descripción general del estado de vista de ASP.NET" . msdn.microsoft.com . 4 de diciembre de 2014.
- ↑ "Elija entre ASP.NET y ASP.NET Core" . docs.microsoft.com . 10 de abril de 2024.
- ↑ Personal (noviembre de 2001). "Descripción general de ASP.NET y Web Forms" . Microsoft . Consultado el 5 de junio de 2011 .
- ^ ( MacDonald y Szpuszta 2005 , pág. 63)
- ↑ "Proyectos de aplicaciones web frente a proyectos de sitios web en Visual Studio" . 26 de agosto de 2013.
- ↑ "Código en segundo plano vs. Código en línea" . Microsoft .NET Framework . Microsoft . Archivado del original el 11 de noviembre de 2010. Consultado el 22 de noviembre de 2010 .
- ↑ "¿Cómo funciona aspx.designer.cs?" . StackOverflow . 10 de septiembre de 2015.
- ↑ "Descripción general de la sintaxis de las páginas web ASP.NET" . Microsoft .NET Framework . Microsoft . Consultado el 22 de noviembre de 2010 .
- 1 2 3 "INFO: Descripción general de la administración de estado de ASP.NET" . Consultado el 23 de octubre de 2007 .
- ↑ "ViewState en ASP.NET" . Archivado del original el 14 de octubre de 2007. Consultado el 23 de octubre de 2007 .
- ↑ "Cifrado de Viewstate en ASP.NET" . Consultado el 19 de julio de 2009 .
- ↑ "Páginas maestras de ASP.NET" . microsoft.com . Microsoft. 4 de diciembre de 2014.
- ↑ "Sintaxis de Global.asax" . microsoft.com . Microsoft.
- ↑ "Cómo convertir un control de usuario .ascx en un control personalizado redistribuible" . microsoft.com . Microsoft. 24 de junio de 2011.
- ↑ "Estructura de carpetas de un proyecto web ASP.NET" . microsoft.com . Microsoft. 4 de diciembre de 2014.
- ↑ "Estructura de directorios de ASP.NET" . aspnet4.com . Archivado del original el 27/10/2011 . Consultado el 16/06/2018 .
- ^ ( MacDonald y Szpuszta 2005 , págs. 7–8)
- ↑ "Descripción general de la precompilación de proyectos de sitios web ASP.NET: Realización de la precompilación" . Microsoft Developer Network . 4 de diciembre de 2014. Consultado el 13 de enero de 2016 .
- ↑ pygments/tests/examplefiles/aspx-cs/aspx-cs_example.aspx en GitHub
Fuentes
- MacDonald, Mateo; Szpuszta, Mario (2005). Pro ASP.NET 2.0 en C# 2005 (1ª ed.). Presione. ISBN 978-1-59059-496-4.
Enlaces externos
- Documentación oficial
- Formularios web en www.asp.net
- Introducción a ASP.NET y Web Forms (documento de principios de 2001)
- ASP.NET
- Interfaces de programación de aplicaciones de Microsoft
- Software gratuito de Microsoft
- Microsoft Visual Studio
- Motores de plantillas
- marcos de trabajo web
- Software de 2002
- Software gratuito exclusivo para Windows