Tutorial de ASP.NET
Vista Previa de ASP.NET 2.0

Introducción a Páginas ASP.NET

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 (ASP.NET proporciona compatibilidad de sintaxis con las páginas existentes), el Framework de páginas ASP.NET ha sido específicamente diseñado para solucionar algunas deficiencias claver del modelo previo. De forma particular, proporciona la habilidad de crear y utilizar controles UI reutilizables que pueden encapsular una funcionalidad común y, por tanto, reducir la cantidad de código que el desarrollador tiene que escribir, la habilidad de los desarrolladores para estructurar de forma clara las páginas en un estilo odenado (no código "spaghetti"), y la habilidad de las herramientas de desarrollo de proporcionar un potente soporte de diseño WISIWIG para las páginas (el código ASP existente en opaco para las herramientas). esta sección del tutorial proporciona un breve resumen del código de alto nivel de algunas de las características basicas de las páginas ASP.NET. Las siguientes secciones tratarán más a fondo detalles más específicos.

Escribiendo nuestra primera página ASP.NET

La 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 lugo realiza un postbak del formulario a la página que lo origina cuando se hace clic sobre el botón:

C# Intro1.aspx



Importante: Notad que no pasa nada cuando se hace clic en el botón Lookup. Esto es debido a que la página .aspx sólo contiene HTML estñatico (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.

Añadiendo Código Simple a una Página

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):

C# Intro2.aspx



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.

C# Intro3.aspx




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.


Introducción a los Controles de Servidor de ASP.NET

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. Los controles de servidor participar en la ejecución de la página y producen sus propias etiquetas para el navegador cliente. La principal ventaja de los controles de servidor es que permiten a los desarrolladores obtener un comportamiento y un renderizado complejo a partir de componentes sencillos, reduciendo así dramáticamente la cantidad de código necesaria para crear una página Web dinámica. Otra ventaja de los controles de servidor es su facilidad para personalizar su comportamiento o renderizado. Los controles de servidor muestran propiedades que pueden ajustarse bien de forma declarativa (en la etiqueta) o bien de forma programada (con código). Los controles de servidor (y la página en si) también tienen eventos que los desarrolladores pueden controlar para realizar acciones específicas durante la ejecución de la página, o en respuesta a una acción del lado del cliente que envíe la página al servidor (un "postback"). Los controles de servidor también simplifican el problema de mantener el estado durante diferentes idas y venidas del servidor, manteniendo sus valores de forma automática en sucesivos postbacks.

Los controles de servidor se declaran en un fichero .aspx mediante etiquetas propias o etiquetas HTML intrínsecas que contienen el atributo runat="server". Las etiquetas HTML intrínsecas son manejadas con uno de los controles del "namespace" System.Web.UI.HtmlControls. A cualquier etiqueta que no corresponda a uno de los controles se le asigna el tipo System.Web.UI.HtmlControls.HtmlGenericControl.

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.

C# Intro4.aspx



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.

C# Intro5.aspx



Importante: Un listado detallado de todos los controles de sevidor incluidos se puede encontrar en la sección de Referencia de Controles de este tutorial.

Manejando Eventos de Controles de Servidor

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 eventoOnClick del control <asp:button runat=server> control para manipular la propiedad  Text del control <asp:label runat=server>.

C# Intro6.aspx



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. Así como veremos posteriormente en el tutorial, 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.