TALLER DE PROGRAMACIÓN WEB Ing. David Gil Unidad Didáctica: Taller de Programación Web | 2 Web Forms (Formularios Web) Las páginas ASP.NET (oficialmente conocidas como formularios web) son una parte vital de una aplicación ASP.NET. Proporcionan la salida actual de una aplicación web –las páginas web, que los clientes solicitan y ven en sus navegadores. Esencialmente, los formularios web le permiten crear una aplicación web utilizando la misma interfaz de basada en controles como una aplicación Windows. Para ejecutar un formulario web ASP.NET, el motor ASP.NET lee todo el archivo .aspx, genera los objetos correspondientes, y dispara una serie de eventos. Usted reacciona a estos eventos utilizando código completamente orientado a objetos. Procesamiento de página Uno de los objetivos principales de ASP.NET es crear un modelo que permite a los desarrolladores web, desarrollar rápidamente formularios web de la misma manera que los desarrolladores de Windows pueden construir ventanas hechas a medida en una aplicación de escritorio. Por supuesto, las aplicaciones web son muy diferentes de las tradicionales aplicaciones de cliente enriquecido. Hay dos obstáculos principales: • • Las aplicaciones Web se ejecutan en el servidor. Las aplicaciones web no tienen estado. Etapas de procesamiento de web forms Por el lado del servidor, el procesamiento de un formulario Web ASP.NET se lleva a cabo en etapas. En cada etapa, se plantean diversos eventos. Esto permite que su página de conecte al flujo de procesamiento en cualquier etapa y responder en cualquier momento que lo desee. La siguiente lista muestra las principales etapas en el flujo de proceso de una página ASP.NET: • • • • • • Inicialización del marco de trabajo de la página. Inicialización del código de usuario. Validación. Manejando Eventos Enlace de datos automático. Limpieza. La clase Page La página en si misma es como una instancia de un tipo de objeto control. De hecho, todos los formularios web son en realidad instancias de la clase Page de ASP.NET, que se encuentra en el espacio de nombres System.Web.UI. Es posible que haya notado que cada clase de código subyacente explícitamente se deriva de System.Web.UI.Page. Esto significa que cada web form a crear está equipado con una enorme cantidad funcionalidad de fuera de la de la caja. El FindControl () y la propiedad IsPostBack son dos ejemplos que hemos visto hasta ahora. Además, se derivan de la clase Page que da a su código las siguientes propiedades de gran utilidad: o o o o o o o o Session Application Cache Request Response Server User Trace Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Unidad Didáctica: Taller de Programación Web | 3 Server Controls (Controles de Servidor) Los controles de servidor, son una parte fundamental de la arquitectura ASP.NET. En esencia, los controles de servidor son las clases de .NET Framework que representan los elementos visuales de un formulario web. Algunas de estas clases son relativamente sencillos y reprecentan de cerca a una etiqueta HTML específica. Otros controles son mucho más ambiciosos y hacen una representación más compleja de múltiples elementos HTML. Tipos de Server Controls Controles de servidor HTML: Estas son las clases que envuelven los elementos estándar HTML. Aparte de este atributo, la declaración de un control de servidor HTML sigue siendo el mismo. Dos ejemplos son HtmlAnchor (para la etiqueta <a>) y HtmlSelect (para la etiqueta <select>). Sin embargo, puede convertir cualquier etiqueta HTML en un control de servidor. Si no hay una clase directa correspondiente, ASP.NET simplemente usará la clase HtmlGenericControl. Para cambiar un elemento HTML normal en un control de servidor, basta con añadir el atributo runat = "server" a la etiqueta del elemento. Controles Web: Estas clases duplican las funciones de los elementos básicos de HTML, pero tiene un juego más consistente y significativa de propiedades y métodos que hacen más fácil al desarrollador declarar y acceder a ellos. Algunos ejemplos son los controles HyperLink, ListBox y Button. En Visual Studio, se encuentran en la ficha Estándar del Cuadro de herramientas. Controles Enriquesidos: Estos controles avanzados tienen la capacidad de generar una gran cantidad de código HTML, e incluso JavaScript del lado del cliente para crear la interfaz. Algunos ejemplos son el Calendar, AdRotator, y los controles TreeView. En Visual Studio, muchos controles enriquesidos también se encuentran en la ficha Estándar del Cuadro de herramientas. Controles de validación: Este conjunto de controles permite fácilmente la validación de un control de entrada asociado contra varias normas o reglas definidas por el usuario. Por ejemplo, puede especificar que la entrada no puede estar vacía, que debe ser un número, que debe ser mayor que un determinado valor, y así sucesivamente. Si la validación falla, se puede evitar el procesamiento de páginas o permitir que estos controles muestren mensajes de error en línea en la página. En Visual Studio, estos controles se encuentran en la ficha de validación de la Caja de herramientas. Controles de datos: Estos controles incluyen cuadriculas sofisticadas y listas que están diseñados para mostrar grandes cantidades de datos, con soporte para características avanzadas tales como plantillas, edición, selección, y paginación. Este conjunto incluye también los controles de origen de datos de que permiten unirse a diferentes fuentes de datos de forma declarativa, sin necesidad de escribir código adicional. Controles de navegación: Estos controles están diseñados para mostrar mapas de sitio y permitir al usuario navegar de una página a otra. Controles de inicio de sesión: Estos controles son el soporte de formularios de uthentication, en el modelo de ASP.NET para autenticación de usuarios contra una base de datos y el seguimiento de su estado. En vez de escribir sus propias interfaces para trabajar con la autenticación de formularios, puede utilizar estos controles para obtener precompilados, páginas de acceso personalizables, la recuperación de la contraseña y el usuario, asistentes para la creación de usuarios. Controles partes Web: Este conjunto de controles soporta WebParts, un modelo de ASP.NET para la construcción por componentes, portales web altamente configurables. Controles ASP.NET AJAX: Estos controles permiten el uso de técnicas Ajax en sus páginas web sin forzar a escribir código del lado del cliente. Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Unidad Didáctica: Taller de Programación Web | 4 Controles de ASP.NET Mobile: Este es un conjunto de controles que se asemeja a los controles Web, pero están personalizados para apoyar a los clientes móviles como PDAs, teléfonos inteligentes, y otros dispositivos móviles, adaptando las páginas a las normas de marcado como HTML 3.2 o WML 1.1. Los controles móviles son muy adaptables, lo que significa que cuando se crea una página utilizando estos controles, la página se puede representar de varias maneras totalmente diferentes, dependiendo del dispositivo que está accediendo a la página. Jerarquía de controles de servidor Todos los controles de servidor se derivan de la clase base Control en el espacio de nombres (namespace) System.Web.UI. Debido a que todos los controles derivan de la clase base Control, tienen un denominador común básico que puede utilizar para manipular cualquier control de la página, incluso si usted no sabe el tipo de control específico. Propiedades de la clase Control Propiedad Descripción ClientID Devuelve el identificador del control, que es un nombre único creado por ASP.NET en el momento que la página es instanciada. Controls Devuelve la colección de controles secundarios. Usted puede utilizar la colección Page.Controls para conseguir una colección de alto nivel de los controles en la página. Cada control de la colección Controls puede contener sus propio controles hijo, y los controles hijo pueden contener a su vez sus propios controles hijos, y así sucesivamente. EnableViewState Devuelve o establece un valor booleano que indica si el control debe mantener su estado a través de las devoluciones de datos de la página principal. Esta propiedad es true por defecto. Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Unidad Didáctica: Taller de Programación Web | 5 ID Devuelve o establece el identificador del control. En la práctica, este es el nombre por el cual se puede acceder al control desde los scripts de servidor o de la clase de código subyacente. Page Devuelve una referencia al objeto de página que contiene el control. Parent Devuelve una referencia al control principal del control, que puede ser la página u otro control contenedor. Visible Devuelve o establece un valor booleano que indica si el control debe ser presentado. Si es false, el control se hace invisible en el lado del cliente, la etiqueta HTML correspondiente no se genera. Métodos de la clase Control Método Descripción DataBind() Enlaza el control y todos sus controles secundarios al origen de datos o expresión. FindControl() Busca un control hijo con un nombre específico en el control actual y todos los controles contenidos. Si el control hijo se encuentra, el método devuelve una referencia de tipo general del control. A continuación, puede lanzar este control para el tipo adecuado. HasControls() Devuelve un valor booleano que indica si este control tiene controles secundarios. El control debe ser un contenedor para tener controles secundarios (como una etiqueta <div>). Render() Escribe la salida HTML para el control basado en su estado actual. No se puede llarmar a este método directamente. En cambio, ASP.NET lo llama cuando la página está siendo presentada. Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Unidad Didáctica: Taller de Programación Web | 6 HTML Server Controls (Controles de servidor HTML) En total, hay alrededor de 20 diferentes clases de controles de servidor HTML. Están divididos en categorías distintas en función de si son controles de entrada (en cuyo caso se derivan de HtmlInputControl) o pueden contener otros controles (en cuyo caso se derivan de HtmlContainerControl). La clase HtmlControl Todos los controles de servidor HTML derivan de la clase base HtmlControl. La siguiente tabla muestra las propiedades que la clase HtmlControl añade a la clase base de Control. Propiedades Propiedad Descripción Attributes Le permite acceder a otras páginas de atributos en la etiqueta de control. Puede utilizar esta colección para agregar atributos que no son expuestos por las propiedades específicas. Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Unidad Didáctica: Taller de Programación Web | 7 Disabled Devuelve o establece el estado desactivado del control. Si es true, el control suele mostrarse como "en gris" y no es utilizable. Style Devuelve una colección de atributos CSS que se aplican para el control. TagName Devuelve el nombre de la etiqueta de control, tales como a, img, etc. La clase HtmlContainerControl Cualquier etiqueta HTML que tiene tanto una etiqueta de apertura y una de cierre pueden incluir contenido HTML o de otros controles. Un ejemplo es la etiqueta de anclaje, que por lo general ajusta el texto o una imagen con las etiquetas <a> ... </ a>. Muchas otras etiquetas HTML también funcionan como contenedores, incluyendo todo, desde la etiqueta <div> (que le permite dar formato a un bloque de contenido) a los humildes <b> etiqueta (que se aplica el formato de negrita). Estas etiquetas no se asignan a clases específicas de control de servidor HTML, pero todavía se puede utilizar con el atributo runat = "server". En este caso, interactuas con ellos mediante la clase HtmlGenericControl, que a su vez deriva de HtmlContainerControl. Para soportar la contención, la clase HtmlContainerControl añade las dos propiedades que se muestran a continuación. Propiedades Propiedad Descripción InnerHtml Devuelve o establece el texto HTML en las etiquetas de apertura y de cierre. Cuando se utiliza esta propiedad, todos los caracteres se dejan como son. Esto significa que puede integrar el formato HTML (texto en negrita, agregando saltos de línea, y así sucesivamente). InnerText Devuelve o establece el texto dentro de la etiquetas de apertura y de cierre. Cuando se utiliza esta propiedad, cualquier carácter que se interprete como sintaxis HTML especial, se reemplazarán automáticamente con las entidades HTML equivalentes. La clase HtmlInputControl Los controles de entrada HTML permite la interacción del usuario. Estos incluyen las casillas de verificación, cuadros de texto, botones y cuadros de lista. Todos estos controles se generan con la etiqueta <input>. El atributo type indica el tipo de control de entrada, como en <input type="text"> (un cuadro de texto), <input type="submit"> (un botón), y <input type="file"> ( los controles para subir un archivo). Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Unidad Didáctica: Taller de Programación Web | 8 Propiedades Propiedad Descripción Type Obtiene el tipo de un HtmlInputControl. Por ejemplo, si esta propiedad está establecida a text, el HtmlInputControl es un cuadro de texto para la entrada de datos. Value Obtiene o establece el valor asociado a un control de entrada. El valor asociado a un control depende del tipo de control. Por ejemplo, en un cuadro de texto esta propiedad contiene el texto introducido en el control. Para los botones, esta define el texto en el botón. Las clases de controles de servidor HTML Declaración de etiqueta Clase .NET Miembros específicos <a runat="server"> HtmlAnchor HRef, Target, Title, Name, ServerClick event <button runat="server"> HtmlButton CausesValidation, ValidationGroup, ServerClick event <form runat="server"> HtmlForm Enctype, Method, Target, DefaultButton, DefaultFocus <img runat="server"> HtmlImage Align, Alt, Border, Height, Src, Width <input type="button" runat="server"> HtmlInputButton Type, Value, CausesValidation, ValidationGroup, ServerClick event <input type="reset" runat="server"> HtmlInputReset Type, Value <input type="submit" runat="server"> HtmlInputSubmit Type, Value, CausesValidation, ValidationGroup, ServerClick event Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Unidad Didáctica: Taller de Programación Web | 9 <input type="checkbox" runat="server"> HtmlInputCheckBox Checked, Type, Value, ServerClick event <input type="file" runat="server"> HtmlInputFile Accept, MaxLength, PostedFile, Size, Type, Value <input type="hidden" runat="server"> HtmlInputHidden Type, Value, ServerChange event <input type="image" runat="server"> HtmlInputImage Align, Alt, Border, Src, Type, Value, CausesValidation, ValidationGroup, ServerClick event <input type="radio" runat="server"> HtmlInputRadioButton Checked, Type, Value, ServerChange event <input type="text" runat="server"> HtmlInputText MaxLength, Type, Value, ServerChange event <input type="password" runat="server"> HtmlInputPassword MaxLength, Type, Value, ServerChange event <select runat="server"> HtmlSelect Multiple, SelectedIndex, Size, Value, DataSource, DataTextField, DataValueField, Items (collection), ServerChange event <table runat="server">, HtmlTable <td runat="server"> Align, BgColor, Border, BorderColor, CellPadding, CellSpacing, Height, NoWrap, Width, Rows (collection) <th runat="server"> HtmlTableCell Align, BgColor, Border, BorderColor, ColSpan, Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ing. David Gil Unidad Didáctica: Taller de Programación Web | 10 Height, NoWrap, RowSpan, VAlign, Wid <tr runat="server"> HtmlTableRow Align, BgColor, Border, BorderColor, Height, VAlign, Cells (collection) <textarea runat="server"> HtmlTextArea Cols, Rows, Value, ServerChange event Cualquier otra etiqueta HTML con el atributo runat = "server" HtmlGenericControl Módulo 3: Gestión de Aplicaciones para Internet y Producción Multimedia Ninguno Ing. David Gil