El Framework para páginas con formularios Web de ASP.NET es un modelo de programación de tiempo de ejecución con un lenguaje escalable y común, que puede usarse en el servidor para generar dinámicamente páginas Web.
Pensado como una evolución lógica de ASP, el Framework de páginas ASP.NET ha sido específicamente diseñado para solucionar algunas deficiencias del modelo previo. De forma particular, proporciona la habilidad de crear y utilizar controles UI (Inteface de Usuario) reutilizables que pueden encapsular una funcionalidad común y, por tanto:
Las páginas ASP.NET son ficheros de texto con la extensión .aspx.
Las páginas consisten en código y marcas y son compiladas y ejecutadas dinámicamente en el servidor para producir una traducción para el navegador (o dispositivo) cliente. Se pueden desplegar a través de un árbol de directorios raíz de IIS.
Cuando un navegador hace una petición de un recurso .aspx, la rutina ASP.NET analiza y compila el fichero a una clase del Framework .NET. Esta clase puese ser utilizada para procesar dinámicamente peticiones entrantes.
NOTA: el fichero .aspx se compila únicamente la primera vez que es accedido. La instancia compilada se reutiliza en las sucesivas peticiones.
Una página ASP.NET puede ser creada simplemente cambiándole la extensión de un fichero HTML por la extensión .aspx (no hace falta modificar el código). Por ejemplo, el siguiente ejemplo nos demuestra una sencilla página HTML que recoge un nombre de usuario y una preferencia de categoría y luego realiza un postbak del formulario a la página que lo origina cuando se hace clic sobre el botón:
Importante: Notad que no pasa nada cuando se hace clic en el botón. Esto es debido a que la página .aspx sólo contiene HTML estático (no tiene contenido dinámico). Por lo tanto, el mismo HTML es enviado de vuelta al cliente en cada viaje de la página, lo que resulta en una pérdida de los contenidos de los campos del formulario (el "textbox" y el "drop-down list") entre peticiones.
ASP.NET proporciona compatibilidad de sintaxis con páginas ASP ya existentes. Esto incluye el soporte para los bloques de renderizado de código del tipo <% %> que se pueden metern entre el contenido HTML en un fichero .aspx. Estos bloques se ejecutan de forma descendente en el momento del "renderizado". El siguiente ejemplo demuestra como los bloques de renderizamiento <% %> se pueden utilizar para hacer un bucle sobre un bloque de código HTML (incrementando el tamaño de la fuente en cada pasada):
Importante: a diferencia de ASP, el código utilizado en los bloques <% %> de arriba es en realidad compilado (no interpretado utilizando un motor de script). Esto conlleva una mejora en el rendimiento en tiempo de ejecución. Los desarrolladores de páginas ASP.NET pueden utilizar los bloques <% %> de código para modificar dinámicamente la salida HTML tanto como pueden hacerlo actualmento con ASP. Por ejemplo, el siguiente ejemplo demuestra como los bloques <% %> de código pueden usarse para interpretar los resultados que nos envía un cliente.
Importante: a pesar que los códigos <% %> de código proporcionan una forma potente de manipular a medida la salida de texto devuelto por una página ASP.NET, no nos proporcionan un modelo "limpio" de programación HTML. Como nos ilustra el ejemplo de arriba, los desarrolladores que sólo usen bloques <% %> tienen que administrar el estado de las páginas en cada iteración del bucle e interpretar los valores que se envían.
Además de código y marcas, las páginas ASP.NET pueden contener controles de servidor, que son objetos programables del lado del servidor que típicamente representan un elemento UI en la página, como un textbox o una imagen.
El siguiente ejemplo utiliza cuatro controles de servidor: <form runat=server>, <asp:textbox runat=server>, <asp:dropdownlist runat=server>, y <asp:button runat=server>. En tiempo de ejecución estos controles de servidor generan de forma automática el contenido HTML.
Importante: Observar que los controles de servidor mantienen de forma automática entre viajes al servidor cuanquier valor insertado en el lado del cliente. Este estado del control no se almacena en el servidor (en lugar de eso se almacena en un campo <input type="hidden" de formulario que se envía y devuelve en las diferentes peticiones).
Obsevar además que no es necesario ningún script del lado del cliente.
Además de soportar controles estádares de entrada HTML, ASP.NET permite a los desarrolladores utilizar controles personalizados más ricos en sus páginas.Por ejemplo, el siguiente ejemplo demuestra como el control <asp:adrotator> se puede utilizar para mostrar dinámicamente "ads" cambiantes en la página.
Cada control de Servidor de ASP.NET es capaz de mostrar un modelo de objeto conteniendo propiedades, métodos y eventos. Los desarrolladores de ASP.NET utilizan este modelo de objeto para modificar de forma limpia e interactuar con la página.
El siguiente ejemplo nos demuestra como un desarrollador de páginas ASP.NET puede controlar el evento OnClick del control <asp:button runat=server> control para manipular la propiedad Text del control <asp:label runat=server>.
Este ejemplo simple es equivalente en funcionalidad al ejemplo "Intro3" mostrado anteriormente en esta sección. Sin embargo, cabe observar la mayor limpieza y simplicidad del código en la versión basada en controles de servidor. El Framework de páginas ASP.NET también muestra gran variedad de eventos a nivel de página, que podemos controlar para escribir código que se ejecute en un momento determinado durante el procesado de la página. Ejemplos de estos eventos son Page_Load y Page_Render.