Teoria LLevar ASP
Transcript of Teoria LLevar ASP
-
ASP.NET
Marco Antonio Pea Basurto Juan Lpez Rubio
-
.
-
Universitat Oberta de Catalunya 3 ASP.NET
ndice
ndice .................................................................................................... 3
Introduccin ........................................................................................ 5
Objetivos ............................................................................................... 6
1. Aplicaciones para la Web y ASP.NET ............................................ 7
1.1. Introduccin ...................................................................................... 7
1.2. Fundamentos de la Web .................................................................... 8
1.3. Aplicaciones Web ............................................................................ 10
1.4. ASP y ASP.NET ................................................................................. 12
1.5. Caractersticas de ASP.NET .............................................................. 13
1.6. Arquitectura de ASP.NET: modelos de cdigo y ejecucin .............. 15
1.7. Arquitectura de ASP.NET: modelo de proveedores .......................... 20
1.8. Espacios de nombres de ASP.NET .................................................... 22
1.9. ASP.NET y Windows Forms ............................................................. 23
2. Formularios Web (Web Forms) .................................................... 25
2.1. Interfaces para la Web ..................................................................... 25
2.2. Controles de servidor ...................................................................... 26
2.3. Diseo de interfaces ........................................................................ 32
2.4. Eventos ............................................................................................ 36
2.5. Acceso al flujo de HTML .................................................................. 40
3. Primera aplicacin ASP.NET ........................................................ 42
3.1. Introduccin .................................................................................... 42
3.2. Creacin del proyecto ..................................................................... 43
3.3. Diseo de la interfaz ........................................................................ 44
3.4. Comportamiento de la interfaz ....................................................... 46
3.5. Pruebas y depuracin ...................................................................... 47
3.6. Observaciones .................................................................................. 49
4. Procesamiento de formularios ..................................................... 50
4.1. Ciclo de vida de una pgina Web Forms ......................................... 50
4.2. Formularios HTML y Web Forms .................................................... 53
4.3. Validacin de datos ......................................................................... 56
4.4. Enlace a datos (Data Binding) ......................................................... 64
5. Aplicaciones Web .......................................................................... 68
5.1. Aplicaciones Web ASP.NET ............................................................. 68
5.2. El archivo Global.asax ..................................................................... 70
5.3. Gestin del estado ........................................................................... 73
5.4. Gestin del estado en la prctica ..................................................... 77
5.5. Configuracin de la aplicacin ........................................................ 85
6. Seguridad ....................................................................................... 91
6.1. Autenticacin y autorizacin .......................................................... 91
6.2. Seguridad y el modelo de proveedores ............................................ 98
6.3. Herramienta de configuracin de la seguridad .............................. 101
-
Universitat Oberta de Catalunya 4 ASP.NET
6.4. Controles de Login ........................................................................ 102
6.5. API de pertenencia a grupo ........................................................... 108
7. Diseo de la interfaz de usuario ................................................ 110
7.1. Controles personalizados .............................................................. 110
7.2. Pginas maestras ............................................................................ 119
7.3. Temas visuales ............................................................................... 124
7.4. Web Parts....................................................................................... 129
I. Controles Web Forms: Referencia .............................................. 135
I.1. Generalidades ................................................................................. 135
I.2. La clase System.Web.UI.Control .................................................... 136
I.3. La clase System.Web.UI.WebControls.WebControl....................... 137
I.4. La clase System.Web.UI.Page ......................................................... 138
I.5. Controles HTML de servidor .......................................................... 140
I.6. Controles Web de servidor (Standard) ........................................... 142
I.7. Controles de validacin de servidor ............................................... 146
I.8. Controles de acceso a datos ........................................................... 147
I.9. Controles de login .......................................................................... 148
I.10. Controles de navegacin ............................................................. 149
I.11. Controles Web Part ...................................................................... 149
II. Instalacin del servidor Web IIS ............................................... 152
II.1. IIS y ASP.NET en Windows XP Profesional ................................... 152
II.2. IIS y ASP.NET en Windows 2003 Server ........................................ 155
II.3. Alternativas a IIS ........................................................................... 157
Actividades ....................................................................................... 158
Bibliografa ...................................................................................... 160
-
Universitat Oberta de Catalunya 5 ASP.NET
Introduccin
Aunque ASP.NET toma su nombre de la anterior tecnologa de Microsoft
para el desarrollo Web, ASP, la nueva plataforma .NET difiere considerable-
mente. ASP.NET est construida completamente sobre el Common Language
Runtime (CLR), hecho compartido por todos los componentes de la plata-
forma .NET. Esto permite a los desarrolladores la construccin de aplicacio-
nes usando cualquiera de los lenguajes soportados por el .NET Framework,
como Visual Basic .NET, JScript .NET, C#, etc., pero tambin usando lengua-
jes como Perl o Python. Al contrario que otras tecnologas basadas en cdigo
de script, ASP.NET ofrece un rendimiento mejorado, puesto el cdigo de
servidor se precompila en forma de DLLs en el servidor Web.
ASP.NET simplifica la transicin de los programadores acostumbrados al
desarrollo para Windows hacia el desarrollo Web, puesto que permite la
creacin de pginas Web a partir de controles y eventos de forma similar a
como se construye una interfaz Windows tradicional. Sin embargo, as como
un control Windows se dibuja a s mismo en la pantalla, los controles Web
generan segmentos de cdigo HTML que se incrustan en las pginas que el
servidor enva al navegador del cliente.
El amplio conjunto de controles, clases y herramientas disponibles, propor-
ciona una alta productividad en el desarrollo para la Web y especialmente en
lo que respecta a la generacin de la interfaz de usuario. Otros aspectos, co-
mo el acceso a bases de datos, tambin estn ampliamente integrados con
ASP.NET, facilitando as el desarrollo de aplicaciones Web empresariales que
visualicen datos provenientes de diversas fuentes.
Este tema explora todos estos aspectos, incluyendo las novedades de la ver-
sin 2.0, con el enfoque puesto en lo relativo a la generacin de interfaces de
usuario. As pues, inicialmente se introducen los conceptos bsicos y se crea
una aplicacin de ejemplo. A continuacin se dedica buena parte del texto a
la comprensin de los mecanismos fundamentales en los que se asienta la
ejecucin de las aplicaciones. Al tiempo, se proponen actividades comple-
mentarias sobre la aplicacin base que permiten poner en prctica los con-
ceptos expuestos. A lo largo de todo el texto, numerosos ejemplos permiten
asimilar los contenidos de forma progresiva.
-
Universitat Oberta de Catalunya 6 ASP.NET
Objetivos
Algunos de los objetivos fundamentales que deben alcanzarse al completar
este tema pueden resumirse en:
Reforzar algunos conceptos bsicos relativos a la construccin de aplica-
ciones para la Web.
Asimilar el concepto de control de servidor y los aspectos relacionados
como la gestin de eventos.
Comprender el concepto de Round trip.
Ser capaces de implementar mecanismos de validacin de datos.
Comprender los mecanismos de gestin del estado en una aplicacin
ASP.NET.
Ser capaces de implementar controles de usuario y controles personaliza-
dos bsicos.
Ser capaces de configurar adecuadamente lo fundamental en una aplica-
cin ASP.NET.
Ser capaces de implementar mecanismos sencillos de autenticacin y
autorizacin de usuarios.
Aprender a utilizar los espacios de nombres ms importantes de ASP.NET
mediante C#.
Desarrollar una aplicacin sencilla de ejemplo.
-
Universitat Oberta de Catalunya 7 ASP.NET
1. Aplicaciones para la Web y ASP.NET
El objetivo de este apartado es situar los contenidos del mdulo en un con-
texto ms global, el de la Web y el desarrollo de aplicaciones para la Web.
Por ello, antes de introducir la tecnologa ASP.NET se revisan algunas nocio-
nes fundamentales y se establece el vocabulario a emplear en adelante.
1.1. Introduccin
La World Wide Web (WWW) fue creada originalmente con el objetivo de
facilitar la transferencia de documentos (estticos) y su navegacin mediante
el uso de enlaces entre s. As, el lenguaje HTML permiti la construccin de
hiper-documentos que incluan texto, imgenes y enlaces (hiperenlaces) a
otros documentos. Poco tiempo despus los documentos dejaron de ser est-
ticos para pasar a auto-modificarse mientras el usuario interaccionaba con
ellos. El as llamado HTML dinmico (DHTML) incluye, no slo HTML, sino
tambin porciones de programa que ejecuta el navegador del usuario para
generar el cdigo HTML que finalmente se visualiza. Algunas tecnologas
remarcables en dicho mbito incluyen JavaScript, Flash de Macromedia,
applets de Java, etc.
Al margen del intercambio de documentos, ya desde su origen, la infraes-
tructura de la WWW ha servido tambin como plataforma para facilitar la
ejecucin de aplicaciones. En ese sentido destacan dos grandes familias: los
CGI y las pginas de servidor.
Mediante CGI (Common Gateway Interface) se puede crear una interfaz que
comunica el servidor de pginas Web con aplicaciones convencionales. As
ante una solicitud al servidor Web, ste puede ejecutar una aplicacin que
genere las pginas Web correspondientes como respuesta. Este tipo de pro-
gramas puede escribirse en cualquier lenguaje de programacin, siendo algu-
no de los ms habituales C o Perl, por lo que los CGI suelen orientarse ms a
programadores que a diseadores de pginas Web.
Las pginas de servidor se denominan as puesto que cuando un usuario las
solicita a travs de su navegador, el servidor no las devuelve directamente,
tal como hara con una pgina HTML convencional. Sin embargo, somete las
pginas a un procesado previo, ejecutando en el propio servidor el cdigo
incrustado en dichas pginas. As pues este tipo de pginas consisten en una
mezcla de HTML con cdigo que debe compilarse o interpretarse en el pro-
pio servidor, para que ste genere la pgina completa antes de devolverla al
usuario. Destacan en este mbito tecnologas como JSP de Java, PHP o ASP
de Microsoft.
JavaScript es un lenguaje de script orientado a objetos muy usado en la construccin de pginas Web para acceder dinmicamente a los objetos que forman una pgina.
-
Universitat Oberta de Catalunya 8 ASP.NET
Pongamos un poco ms de propiedad en todo este mar de acrnimos.
1.2. Fundamentos de la Web
La Web se fundamenta en el uso de tres estndares. Las URL (Uniform Re-
source Locator), que especifican una forma de otorgar una direccin nica
a una pgina Web. El protocolo HTTP (Hyper Text Transfer Protocol), que
especifica la manera en que el navegador y el servidor se envan informacin
mutuamente. Y el lenguaje HTML (Hyper Text Markup Language), que pro-
porciona un mtodo para codificar la informacin de los documentos de
forma que pueda visualizarse en una gran variedad de dispositivos. Aunque
las compaas que producen programas y contenidos para la Web respetan
dichos estndares mayoritariamente, el W3C (World Wide Web Consortium)
es el organismo encargado de mantener actualizados estos y otros estndares
para que la comunicacin el Web sea efectiva. La Figura 1 muestra la relacin
entre todos estos elementos.
URLs
De forma sencilla, una URL es la direccin que escribimos en el navegador
Web para conectarnos a un sitio Web, e.g. http://www.uoc.edu . Una URL
consta de cuatro partes que detallamos a continuacin.
Protocolo: Especificado mediante el texto anterior a los dos puntos, e.g.
HTTP, HTTPS, FTP, TELNET, etc. El protocolo indica al navegador qu ti-
po de servicio usar para conectar con el servidor deseado. Si no se especi-
fica ninguno, el navegador asume deseamos conectar con un servidor
Web y por lo tanto asume que se trata del protocolo HTTP.
Servidor de destino: Por ejemplo, en http://www.uoc.edu, www.uoc.edu
es el servidor de destino.
Figura 1. Anatoma de una aplicacin Web.
Servidor Web
PC/Mac/Unix/...
+ Navegador Cliente
Servidor
Solicitud:
http://www.digimon.com
Respuesta:
.
Red TCP/IP, HTTP, HTML
-
Universitat Oberta de Catalunya 9 ASP.NET
Nmero de puerto: Permite indicar a qu puerto concreto del servidor de
destino debe encaminarse la conexin. Por ejemplo, en
http://www.uoc.edu:80 se especifica el puerto 80. Si no se especifica ningn
puerto, el navegador usar el puerto 80 que es el puerto usado por defecto
por el protocolo HTTP.
Ruta: Especifica la ruta en el servidor hasta el archivo que deseamos visua-
lizar. En la URL http://www.uoc.edu/web/cat/index.html, por ejemplo, la ru-
ta /Web/cat/index.html indica que queremos visualizar el contenido del
documento index.html alojado en el subdirectorio cat del directorio Web.
HTTP
HTTP es un protocolo sencillo del tipo solicitud-respuesta entre clientes y
servidores. El cliente tpico de HTTP, un navegador Web, inicia una solicitud
estableciendo una conexin en el puerto 80 (por defecto) del servidor. Un
proceso que escucha en el puerto 80 del servidor HTTP identifica el tipo de
solicitud y responde en consecuencia, con un mensaje de error o con el con-
tenido del documento solicitado. Una conversacin tpica entre un navega-
dor y un servidor Web en www.example.org tendra un aspecto como el si-
guiente. A la respuesta le seguira el texto HTML de la pgina Web alojada en
el servidor.
HTML
HTML es el lenguaje usado por una pgina Web para dar formato al texto y
las imgenes que la componen. Es un lenguaje de texto puro basado en un
conjunto de cdigos especiales (marcas) que indican al navegador cmo
aplicar el formato. Existen muchas marcas diferentes para especificar gran
cantidad de combinaciones de formato. Todas se componen de una marca
de inicio del formato y de una marca de final del mismo. Por ejemplo, po-
demos crear con nuestro editor de texto favorito un documento HTML, al
que podramos llamar hola.html, con el siguiente contenido:
Hola Mundo UOC!!!!
Solicitud: GET / HTTP/1.1 Host: www.example.org
Respuesta: HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 08 Jan 2004 22:11:55 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html
-
Universitat Oberta de Catalunya 10 ASP.NET
Al abrir este documento con el navegador veramos la frase escrita en negrita,
tal como indican las marcas de inicio () y fin de negrita ().
Aunque ya hemos mencionado a navegadores y servidores Web en los prra-
fos anteriores, daremos aqu una definicin ms precisa. Diremos que un
navegador (browser) Web es un programa capaz de interpretar un documen-
to HTML y visualizarlo en pantalla de acuerdo con las marcas que ste espe-
cifica. Existe gran variedad de navegadores Web, como Internet Explorer (IE),
Mozilla, Opera, Netscape, etc. Por su parte, un servidor Web es un ordena-
dor que almacena documentos HTML y permanece a la espera de conexiones
de los navegadores. Un programa, el servidor propiamente, se encarga de
atender las peticiones y retornar los documentos. Como servidores Web
podramos citar Internet Information Services (IIS) o Apache, entre otros.
Con estos elementos, la as llamada, navegacin por la Web sucede de la
siguiente forma. Cuando escribimos una URL en el navegador, ste intenta
conectar con el servidor indicado en la parte correspondiente de la URL. Si
consigue conectar, el navegador enva la ruta indicada en la URL. Si la ruta
existe en el servidor, ste devuelve el documento HTML al navegador, quien
la interpreta y finalmente visualiza.
1.3. Aplicaciones Web
Una aplicacin Web es un programa distribuido a travs de Internet o de una
red de rea local y que los usuarios ejecutan a travs de un navegador. En los
ltimos aos las aplicaciones Web se han vuelto muy populares debido a la
ubicuidad del navegador Web, a menudo llamado cliente-ligero (thin client).
En el modelo tradicional cliente-servidor, cada aplicacin requiere de un
programa cliente propio que debe instalarse independientemente en cada
ordenador desde donde quiera ejecutarse la aplicacin. Las actualizaciones
en el servidor a menudo conllevan tambin actualizaciones en todos los
clientes, lo que sin duda es ineficiente y costoso.
Por el contrario, una aplicacin Web genera la interfaz de usuario en forma
de un conjunto de pginas Web estndar. Aunque una pgina Web es tcni-
camente un documento esttico, una secuencia de pginas Web bien dis-
puestas proporcionan una sensacin de interactividad muy prxima a la de
las aplicaciones convencionales. As pues, una aplicacin Web puede ejecu-
tarse desde cualquier ordenador que tenga un navegador instalado. Adems
las actualizaciones slo afectan al lado del servidor, el navegador cliente no
tiene por qu cambiar.
Actualmente es muy comn dotar a las aplicaciones de interfaces Web.
-
Universitat Oberta de Catalunya 11 ASP.NET
Recientemente, hay una tendencia muy fuerte hacia la creacin de interfaces
Web para todo tipo de aplicaciones. Esto incluye aplicaciones ya clsicas
como Webmail, buscadores, diccionarios on-line, etc. Tambin aplicaciones
monousuario han cambiado a la filosofa basada en pginas Web. Por ejem-
plo, todos los sistemas de ayuda de aplicaciones y sistemas operativos de
Microsoft se basan en el uso de HTML, un mini-servidor Web incrustado en
el sistema y un componente navegador tambin incrustado. Finalmente,
otro mbito de uso de las aplicaciones Web son las interfaces de configura-
cin de equipos de comunicaciones como switches, routers, puntos de acce-
so Wi-Fi, etc.
Aunque una aplicacin Web puede construirse de diversas maneras, tpica-
mente constan de tres capas:
La capa de interfaz de usuario, encargada del aspecto visual de la aplica-
cin y de la interaccin con el usuario, est compuesta por las pginas
HTML que el usuario solicita a un servidor Web y que visualiza en un na-
vegador Web.
La capa de lgica de negocio est compuesta por los mdulos que imple-
mentan la lgica de la aplicacin y que se ejecutan en un servidor de apli-
caciones. Esta capa suele tener la forma de un programa creado a partir de
alguna tecnologa de generacin de contenido Web dinmico, como
CGIs, PHP, Java Server Pages (JSP) o Active Server Pages (ASP).
La capa de datos est compuesto por los datos, normalmente gestionados
por un sistema de gestin de bases de datos (servidor de datos), que ma-
neja la aplicacin Web.
En definitiva, las aplicaciones Web han pasado de ser simples extensiones de
un conjunto de pginas Web estticas, a complejas aplicaciones desarrolladas
en base a muchas capas. Esto permite mayor adaptabilidad y robustez, im-
prescindibles para el desarrollo de tcnicas de escalabilidad y balanceo de
carga, en aplicaciones que deban dar servicio a gran nmero de usuarios
simultneamente.
Para concluir, cabe apuntar el hecho de que la programacin de aplicaciones
Web presenta una serie de dificultades que no suelen darse en la programa-
cin de aplicaciones tradicionales.
Implementacin de interfaces de usuario ricas. Una interfaz de usuario con
un layout complejo, gran cantidad de contenido dinmico, etc. puede ser
muy difcil de construir usando HTML. La dificultad se acenta si lo que
queremos es que la interfaz de usuario pueda visualizarse en mltiples plata-
formas.
Separacin entre cliente y servidor. El cliente (navegador) y el servidor son
programas diferentes, que se ejecutan en ordenadores diferentes y con siste-
Webmail se refiere genrica-mente a una aplicacin Web que permite leer y enviar correo electrnico desde un navegador.
Un servidor de aplicaciones es un servidor Web con capaci-dad de procesamiento, por lo que suele ser a la vez servidor Web y servidor de lgica de negocio.
Hablamos de layout en una interfaz de usuario para des-cribir tanto el proceso como el resultado mismo de posi-cionar y dimensionar los diferentes elementos que componen la interfaz en el espacio de ventana o pgina Web destinado a ello.
-
Universitat Oberta de Catalunya 12 ASP.NET
mas operativos que tambin pueden ser diferentes. En consecuencia las dos
partes de la aplicacin comparten muy poca informacin, i.e. pueden co-
municarse pero slo intercambian pequeos bloques de datos.
Ejecucin sin estado. Cuando un servidor recibe la solicitud de una pgina,
ste la busca, la procesa y la retorna al navegador cliente. Inmediatamente
despus el servidor descarta toda informacin relacionada con la pgina
recin servida. Si el usuario solicita la misma pgina posteriormente, el servi-
dor repite el proceso desde cero. Dicho de otro modo, el servidor no tiene
memoria de las pginas que procesa. En consecuencia si una aplicacin nece-
sita mantener informacin relacionada con una pgina, es la propia aplica-
cin quien debe encargarse de ello.
Desconocimiento de las capacidades de los navegadores. En muchos casos
las aplicaciones Web acaban siendo accedidas por usuarios que usan diversos
navegadores. Cada navegador tiene sus propias capacidades, lo que hace
complicado construir aplicaciones que se ejecuten igualmente bien en todos
ellos.
Problemas de escalabilidad. A menudo las aplicaciones Web fallan al enfren-
tarse al problema de la escalabilidad, para dar soporte a muchos usuarios o
para distribuirse en mltiples servidores, por ejemplo.
1.4. ASP y ASP.NET
Las siglas ASP (Active Server Pages) se refieren a la tecnologa de Microsoft
que permite que un servidor Web, adems de alojar y servir pginas HTML,
ejecute cdigo de script incrustado en dichas pginas. En particular el motor
de ASP funciona habitualmente sobre el servidor Web de Microsoft IIS (In-
ternet Information Services), que se distribuye como componente del siste-
ma operativo Windows a partir de Windows 2000.
Un archivo ASP es bsicamente un archivo HTML, pero puede contener
tambin cdigo en forma de scripts. Dicho cdigo se ejecuta siempre en el
servidor, no en el navegador del usuario. As, cuando el navegador solicita
un archivo ASP, IIS no lo devuelve directamente sino que pasa la solicitud al
Los archivos ASP usan la extensin .asp
VBScript (Visual Basic Scrip-ting Edition) es un subconjun-to de Visual Basic usado en ASP, aunque tambin se usa como lenguaje de script en Windows.
Ejemplo ASP ASP en la UOC
Figura 2. Ejemplo de pgina ASP.
-
Universitat Oberta de Catalunya 13 ASP.NET
motor de ASP. Este analiza el archivo y ejecuta el cdigo en su interior, para
finalmente devolver como resultado un archivo HTML. En el ejemplo de la
Figura 2 podemos ver la seccin de cdigo script delimitada por las marcas
. Se trata de cdigo VBScript que se ejecuta en el servidor previa-
mente a la devolucin de la pgina HTML. Si salvamos el cdigo del ejemplo
usando cualquier editor de texto (como el bloc de notas de Windows, por
ejemplo) en un archivo con extensin .asp y posteriormente lo abrimos con
un navegador, veremos que el contenido que se visualiza no muestra el
cdigo sino el resultado de su ejecucin. Es ms, si solicitamos al navegador
que nos muestre el cdigo fuente de la pgina, lo que veremos ser el archi-
vo HTML resultante de la ejecucin del cdigo, no el cdigo en s mismo.
La ltima versin de ASP es la 3.0, aunque nunca habr una versin 4.0. Por
el contrario ASP.NET, originalmente conocida como ASP+, es la nueva gene-
racin de ASP, desarrollada completamente desde cero. No se trata de una
nueva versin de ASP, sino de un nuevo paradigma en el desarrollo de apli-
caciones Web basadas en cdigo de servidor sobre la plataforma .NET. No
existe compatibilidad completa con versiones anteriores, por lo que una
aplicacin ASP debe sufrir algunas modificaciones para ejecutarse sobre
ASP.NET. Para que el servidor diferencie las aplicaciones implementadas con
esta nueva tecnologa, los archivos de ASP.NET utilizan una nueva exten-
sin: .aspx. Como motor de proceso de pginas de servidor, ASP.NET es simi-
lar a otras tecnologas como PHP o JSP.
ASP.NET ofrece gran cantidad de caractersticas interesantes para los disea-
dores y desarrolladores de aplicaciones Web, entre las que destacan el sopor-
te a mltiples lenguajes de programacin, la programacin orientada a even-
tos, componentes basados en XML, escalabilidad, alto rendimiento, etc. El
siguiente apartado detalla estos y otros aspectos.
1.5. Caractersticas de ASP.NET
ASP.NET proporciona una plataforma de desarrollo completamente integra-
da con el Framework de .NET, lo que permite la construccin sencilla de
aplicaciones Web complejas en el servidor. ASP.NET se caracteriza por una
serie de ventajas y mejoras respecto a otras plataformas existentes. Sin nimo
de ser exhaustivos:
Interfaz de usuario rica. Las aplicaciones ASP.NET pueden incluir en sus
pginas multitud de controles, tanto controles HTML que pueden manipu-
larse mediante scripts, como controles orientados a objetos para representar
datos de forma avanzada.
Independencia del navegador. ASP.NET posibilita que toda la lgica de la
aplicacin est en el servidor, eliminado la necesidad de escribir cdigo es-
pecfico para diversos navegadores. En todo caso, tambin posibilita que las
Los archivos ASP.NET usan la extensin .aspx
ASP slo admite cdigo escri-to en VBScritp y JScript.
-
Universitat Oberta de Catalunya 14 ASP.NET
aplicaciones se beneficien automticamente de las capacidades especficas de
cada navegador, generando cdigo cliente eficiente.
Soporte multi-lenguaje. Al estar integrado con el .NET Framework las pgi-
nas ASP.NET pueden incluir cdigo escrito en cualquiera de los lenguajes de
la plataforma, como C#, Visual Basic .NET, etc. y no simples lenguajes de
script. Al ser una componente ms del .NET Framework, toda la potencia del
mismo es directamente accesible para los desarrolladores de aplicaciones
ASP.NET, por lo que no es necesario recurrir a libreras externas para generar
grficos, acceder a bases de datos, trabajar con XML, etc.
Modelo de objetos consistente e intuitivo. El entorno de desarrollo de pgi-
nas ASP.NET proporciona un modelo de objetos que permite al desarrollador
pensar en los formularios como un todo, y no como piezas separadas cliente
y servidor. Adicionalmente los controles de servidor aportan una abstraccin
respecto al contenido HTML de una pgina Web y respecto a la interaccin
entre el navegador y el servidor. En general pueden usarse los controles de
servidor como si se usasen controles en una aplicacin de escritorio tradicio-
nal, sin pensar en el cdigo HTML necesario para mostrarlos y procesarlos.
Orientacin a eventos. Web Forms aporta a la construccin de aplicaciones
Web el tradicional mtodo de escritura de mtodos para controlar y atender
a los eventos que se producen en la interfaz de usuario. As, todos los objetos
de ASP.NET que pueden incluirse en una pgina son receptivos a eventos
que pueden procesarse mediante cdigo .NET de una forma estructurada.
Gestin del estado de forma intuitiva. ASP.NET gestiona automticamente
el estado de los formularios y los controles, adems de proporcionar meca-
nismos explcitos par gestionar el estado de informacin especfica de la
aplicacin.
Autenticacin y gestin de usuarios. ASP.NET soporta autenticacin basada
en formularios, incluyendo gestin de cookies, redireccin en caso de fallo
de autenticacin, etc. Adems permite la definicin de perfiles de usuario
por aplicacin, para proporcionar acceso a diferentes contenidos o ejecutar
diferente cdigo en funcin del usuario.
Configuracin y despliegue simplificados. Las aplicaciones se configuran
mediante archivos de texto planos que pueden modificarse an con la apli-
cacin en ejecucin y sin necesidad de reiniciar el servidor Web. Las actuali-
zaciones en el cdigo no requieren tampoco del reinicio del servidor pues
basta con cambiar el cdigo y el servidor redirecciona las peticiones hacia el
nuevo cdigo.
Rendimiento mejorado. El cdigo en ASP.NET es compilado por lo que su
ejecucin se beneficia de optimizaciones nativas y sistemas de cache, entre
Una aplicacin ASP.NET tiene acceso a todos los servicios de la plataforma .NET
-
Universitat Oberta de Catalunya 15 ASP.NET
otros, para conseguir un mejor rendimiento. El cdigo slo se compila la
primera vez que es accedido, a diferencia de los entornos interpretados en los
que el cdigo se analiza cada vez que es accedido. ASP.NET 2.0 soporta arqui-
tecturas de 64 bits, i.e. permite usar todo el espacio de direcciones de los
nuevos servidores. La migracin a 64 bits puede ser tan sencilla como copiar
el cdigo de 32-bits al servidor, dejar que el motor de ASP.NET 2.0 lo compi-
le y finalmente lo ejecute como una aplicacin nativa de 64 bits. Sin cam-
bios en el cdigo.
Escalabilidad. ASP.NET proporciona facilidades de comunicacin entre ser-
vidores de forma que una aplicacin compleja o muy solicitada puede distri-
buirse en granjas de servidores con muy pocos cambios en la lgica de la
aplicacin.
Multiplataforma. Un inconveniente que suele achacarse a ASP.NET el hecho
de estar ligado a los sistemas Windows. Si bien esto es cierto, lo es a medias.
Existen actualmente diversos proyectos en desarrollo, como SSCLI/ROTOR
(http://msdn.microsoft.com/net/sscli/) o Mono (http://www.mono-project.com)
que permiten usar .NET, y por tanto ASP.NET, en otros sistemas operativos
como Linux, FreeBSD o Mac OS/X. Adems, al margen de IIS, tambin puede
usarse Apache junto con Cassini como servidores Web para ASP.NET.
1.6. Arquitectura de ASP.NET: modelos de cdigo y ejecucin
Como ya hemos comentado previamente, una pgina de ASP.NET es un
documento de texto en el que se combinan contenidos en forma de marcas
de HTML o XHTML junto a porciones de cdigo escrito en cualquiera de los
lenguajes de .NET. As pues, la forma ms simple de una pgina de ASP.NET
consistira en tomar cualquier archivo HTML y cambiarle la extensin. La
Figura 3 muestra un ejemplo de pgina ASP.NET (equivalente al de la Figura
2). En ASP.NET es imprescindible la marca
-
Universitat Oberta de Catalunya 16 ASP.NET
pgina respuesta, es necesario que los diferentes archivos que forman parte
de la aplicacin se hallen en el lugar adecuado del servidor Web (vase el
Apndice Instalacin del servidor Web IIS). IIS, el servidor Web por defec-
to, atiende las peticiones del protocolo HTTP e invoca al motor de ASP.NET
en caso de que el documento solicitado sea un archivo .aspx. El motor ejecuta
el cdigo incrustado en la pgina mediante las facilidades del .NET Frame-
work, lo que permite realizar tareas como acceder a bases de datos o ejecutar
algoritmos complejos. La Figura 4 ilustra este proceso a alto nivel.
Como se ha visto en el ejemplo de la Figura 3 una pgina ASP.NET puede
combinar el aspecto visual (marcas HTML) y la lgica de una aplicacin (e.g.
cdigo C#). El resultado es en general un archivo poco inteligible y difcil de
mantener. Lo recomendable es, como mnimo, separar ambas cosas median-
te la tcnica denominada code-behind. Esta tcnica consiste bsicamente en
alojar en archivos separados el cdigo HTML y la lgica de la aplicacin. As,
el cdigo HTML se almacena en un archivo con extensin .aspx, mientras que
el cdigo ejecutable se almacena en un archivo con extensin .aspx.cs, .aspx.vb,
etc. dependiendo del lenguaje de programacin especificado (ver Figura 5).
Adems se establece un vnculo entre la pgina .aspx y el cdigo mediante los
atributos Codebehind e Inherits en la marca Page. La Figura 6 muestra cmo que-
dara el cdigo del ejemplo anterior empleando la tcnica de code-behind. La
Figura 7 muestra el aspecto visual de la pgina Web resultante.
El archivo referenciado mediante el atributo Codebehind debe contener una
clase con el mismo nombre que el indicado por el atributo Inherits. El motor
de ASP.NET no abrir el mdulo de cdigo fuente, sino que usar su nombre
como referencia para buscar una DLL que contenga la clase indicada. El atri-
buto Language hace referencia al lenguaje utilizado dentro del archivo .aspx,
no al lenguaje usado para implementar la citada DLL.
Figura 4. Arquitectura de ASP.NET.
Aplicacin ASP.NET
.NET Framework
Controles Web
HTTP
SGBD
ADO.NET
IIS
Windows
app.aspx
-
Universitat Oberta de Catalunya 17 ASP.NET
Archivo ASP.NET_UOC_cb.aspx Ejemplo ASP .NET con code behind ASP .NET en la UOC con code behind
Figura 6. Ejemplo de pgina ASP.NET con code-behind.
Archivo ASP.NET_UOC_cb.aspx.cs using System; using System.Web; using System.Web.UI; namespace UOC { public class EjemploASPNET : System.Web.UI.Page { private void Page_Load (object sender, System.EventArgs e) { for (int H=1; H
-
Universitat Oberta de Catalunya 18 ASP.NET
En ASP.NET 2.0 y Visual Studio 2005 este modelo de separacin de cdigo e
interfaz ha evolucionado considerablemente. El nuevo modelo de separacin
de cdigo recibe el nombre de code-beside y se basa en el concepto de clase
parcial, nuevo en .NET 2.0, que permite que una misma clase est definida
de forma parcial en mltiples archivos de cdigo. De este modo se puede
definir parte de una clase en un archivo, algunas de sus propiedades en otro,
sus mtodos en otro, etc. La principal utilidad de este modelo est enfocada
a herramientas de creacin de cdigo, para facilitar la regeneracin de cdigo
parcial de una clase y para que varios programadores puedan trabajar al
mismo tiempo en partes diferentes de una misma clase.
En las pginas ASP.NET 2.0, Visual Studio 2005 aprovecha esta caracterstica
para definir parte de la clase de la pgina Web en el propio archivo .aspx, que
contiene definiciones de controles y eventos, y el cdigo que gobierna su
funcionamiento en un archivo aparte por medio de una clase parcial. Esto se
controla desde los atributos de la directiva Page, de la siguiente forma:
La clase MiClase se define como una clase parcial (palabra clave partial en C# y
Expands en VB.NET) y contiene slo el cdigo que gobierna el funcionamien-
to de la pgina. La Figura 8 muestra el ejemplo Figura 6 pero esta vez imple-
mentado con la tcnica de code-beside.
Las ventajas de este nuevo modelo de trabajo (por cierto, code-behind no
est soportado por VS.NET 2005, aunque existe un asistente de conversin)
son varias, y cabe destacar una mayor sencillez de cdigo y una mayor sepa-
racin real entre interfaz y lgica de trabajo.
Si se usa la herramienta de desarrollo Visual Studio .NET para implementar la
aplicacin, la vinculacin entre las pginas ASP.NET y los mdulos de cdigo
se efecta de forma automtica y transparente para el programador. Adems,
la aplicacin se registra automticamente en el servidor Web por lo que pue-
de ejecutarse directamente. Si para escribir el cdigo no se usa Visual Studio
.NET sino un editor de texto cualquiera, antes de poder ejecutar la aplicacin
(como la de la Figura 6) debe compilarse el cdigo para producir la corres-
pondiente DLL. Adems deber estar alojada en un subdirectorio llamado bin
dentro del directorio donde se encuentre el archivo .aspx.
En este punto cabe destacar la importancia de la clase Page definida en el
espacio de nombre System.Web.UI. Un objeto de esta clase representa una
pgina Web cuyo contenido se genera dinmicamente. La clase Page se utiliza
habitualmente como base para derivar nuevas clases de pgina, de la misma
forma que en Windows Forms se crean los formularios a partir de la clase
base System.Windows.Forms.
-
Universitat Oberta de Catalunya 19 ASP.NET
Cuando se solicita una pgina .aspx al servidor Web, ASP.NET compila din-
micamente el cdigo incrustado en la pgina generando una clase derivada
de la clase Page. La clase recibe un nombre por defecto que puede alterarse
mediante el atributo ClassName en la lnea
-
Universitat Oberta de Catalunya 20 ASP.NET
1.7. Arquitectura de ASP.NET: modelo de proveedores
ASP.NET 2.0 proporciona una arquitectura modular y abierta, en la que cual-
quier componente puede substituirse por otro adaptado a las necesidades del
desarrollador. Los elementos fundamentales de la arquitectura pueden resu-
mirse de acuerdo a la Figura 10. Los bloques bsicos proporcionan funciona-
lidades que pueden ser tiles para un amplio espectro de aplicaciones. Por
ejemplo, los mecanismos de pertenencia permiten gestionar nombres de
usuario y passwords de forma genrica en cualquier aplicacin. La arquitec-
tura basada en proveedores proporciona a los bloques bsicos la posibilidad
de usar diversos mecanismos de almacenamiento y recuperacin de informa-
cin, como SQL Server, Active Directory, etc. Por su parte, los frameworks de
pgina emplean los bloques bsicos para ofrecer servicios de alto nivel a las
aplicaciones, lo que facilita la creacin de portales, por ejemplo. Finalmente
se dispone de un conjunto de controles de servidor, mucho ms amplio que
en versiones anteriores.
1.7.1. Controles de servidor
ASP.NET 2.0 incorpora un amplio conjunto de controles de servidor para el
acceso a datos, la identificacin segura de usuarios, navegacin, creacin de
mens, visualizaciones en rbol, creacin de portales, etc. Adems, mejora
la extensibilidad de los controles, proporcionando gran cantidad de clases
base que encapsulan comportamientos tpicos. A continuacin repasamos
algunas de las familias de nuevos controles:
Figura 10. Arquitectura de ASP.NET 2.0. Visin de desarrollador.
-
Universitat Oberta de Catalunya 21 ASP.NET
Controles de acceso a datos. El acceso a datos puede llevarse a cabo de for-
ma totalmente declarativa, i.e. sin escribir cdigo. Para ello existen nuevos
controles de fuente de datos para acceder a fuentes diversas, como bases de
datos SQL, objetos de negocio, XML, etc. Igualmente existen nuevos contro-
les para visualizar los datos, como gridview, detailsview, y formview.
Controles de navegacin. Controles como treeview, menu y sitemappath, se ba-
san en los servicios de ASP.NET 2.0 para almacenar y recuperar flujos de na-
vegacin predefinidos, y as permitir establecer la navegacin entre las pgi-
nas de un sitio Web de forma estructurada y consistente.
Controles de login. Estos controles proporcionan mecanismos para la auten-
ticacin y autorizacin de usuarios en un sitio Web. Para ello se basan en los
servicios de pertenencia y gestin de roles.
Web parts. Estos controles permiten aadir contenido y layout ricos a un
sitio Web, al tiempo que le proporcionan la capacidad de editarlos directa-
mente desde la propia aplicacin.
1.7.2. Frameworks de pgina
Los frameworks de pgina proporcionan servicios de alto nivel a las aplica-
ciones. Entre ellos destacan los siguientes:
Pginas maestras. Permiten definir una estructura y elementos de interfaz de
usuario comunes a todo un sitio Web. As, cabeceras y pies de pgina, barras
de navegacin, etc. pueden definirse en una pgina maestra en la que se
basarn todas las pginas del sitio.
Temas visuales. Permiten personalizar el look-and-feel de las pginas de un
sitio Web. La informacin de estilo se almacena en un lugar comn deno-
minado tema y se aplica globalmente a todas las pginas y controles del
sitio. Como la anterior, esta caracterstica reduce la cantidad de cdigo du-
plicado y, por lo tanto, permite mejorar el mantenimiento de la aplicacin.
Interfaz de usuario adaptativa. Los servicios de personalizacin permiten
crear experiencias de usuario personalizadas de una misma aplicacin me-
diante la gestin de perfiles, de forma muy sencilla y con muy poco cdigo.
Por otra parte, los servicios de localizacin proporcionan herramientas e
infraestructura para construir aplicaciones en mltiples idiomas, detectar el
idioma del navegador, etc.
1.7.3. Proveedores
La arquitectura basada en proveedores de ASP.NET 2.0 proporciona soporte
completo de almacenamiento a determinados servicios para la creacin de
-
Universitat Oberta de Catalunya 22 ASP.NET
aplicaciones sofisticadas. Por ejemplo, soporte a mecanismos de pertenencia
(almacenamiento/recuperacin de credenciales del tipo nombre de usuario y
palabra clave) y de gestin de roles. O servicios de personalizacin que per-
miten almacenar/recuperar configuraciones y preferencias de usuario. O un
sistema de navegacin que permite la construccin de estructuras de nave-
gacin consistentes. Todos estos servicios pueden intercambiarse por otros
implementados por el propio desarrollador o terceros.
1.8. Espacios de nombres de ASP.NET
La Figura 12 sumariza de forma grfica los principales espacios de nombres
que agrupan la funcionalidad necesaria par la creacin de aplicaciones y
servicios Web con ASP.NET. A continuacin se describe en ms detalle cul
es el contenido de cada uno de ellos:
System.Web. Proporciona clases e interfaces que posibilitan la comunicacin
entre navegadores y servidores Web. Es el espacio de nombres de ms alto
nivel de ASP.NET y agrupa a todos los dems.
System.Web.Caching. Proporciona clases para implementar, en el servidor, ca-
ches de recursos frecuentemente usados, ya sean pginas, documentos XML,
sesiones, aplicaciones, etc.
System.Web.Configuration. Proporciona las clases usadas en la configuracin de
ASP.NET.
System.Web.Security. Proporciona clases que permiten la implementacin de
estrategias de seguridad en las aplicaciones Web.
System.Web.Services. Proporciona las clases que permiten la construccin de
servicios Web XML. Esto es aplicaciones que ofrecen la posibilidad de inter-
cambiar mensajes e interoperar mediante protocolos estndar como HTTP,
XML, XSD, SOAP y WSDL.
System.Web.Services.Description. Proporciona las clases que permiten describir
pblicamente un servicio Web XML mediante WSDL.
Figura 11. Arquitectura de ASP.NET 2.0: proveedores.
-
Universitat Oberta de Catalunya 23 ASP.NET
System.Web.Services.Discovery. Proporciona las clases que permiten a los clientes
de servicios Web localizar los servicios disponibles en un servidor Web.
System.Web.Services.Protocols. Proporciona las clases que definen los protocolos
usados para transmitir datos durante la comunicacin entre servicios Web y
sus clientes.
System.Web.UI. Proporciona clases, enumeraciones e interfaces que dan sopor-
te a la creacin e interfaces de usuario para Web Forms.
System.Web.UI.HtmlControls. Proporciona las clases que permiten la creacin de
controles HTML de servidor en una pgina Web. Los controles HTML de
servidor se corresponden con elementos estndar de HTML por lo que son
soportados por cualquier navegador. Dichas clases permiten controlar pro-
gramticamente los elementos HTML de una pgina.
System.Web.UI.WebControls. Proporciona las clases que permiten la creacin de
controles Web de servidor en una pgina Web. Los controles Web de servi-
dor incluyen formularios y controles habituales como botones y cuadros de
texto, as como otros controles ms complejos como calendarios. El modelo
de objetos de los controles Web no refleja necesariamente la sintaxis de
HTML.
1.9. ASP.NET y Windows Forms
A excepcin de lo que ha sucedido en los sencillos ejemplos vistos hasta
ahora, habitualmente utilizaremos algn entorno de desarrollo que facilite la
construccin de la aplicacin. Dichos entornos de desarrollo (como en el
caso de Visual Studio .NET) se encargan, entre otras cosas, de la separacin
entre la lgica de la aplicacin y la interfaz de la misma empleando code-
behind, o de simplificar el diseo de las pginas.
SSyysstteemm..WWeebb
CCoonnffiigguurraattiioonn SSeessssiioonnSSttaattee
SSeeccuurriittyy
Figura 12. Espacios de nombres de ASP.NET.
CCaacchhiinngg
SSeerrvviicceess UUII
HHttmmllCCoonnttrroollss
WWeebbCCoonnttrroollss
DDeessccrriippttiioonn
DDiissccoovveerryy
PPrroottooccoollss
-
Universitat Oberta de Catalunya 24 ASP.NET
Relacionado con el diseo de las pginas, cabe destacar que el modelo de
desarrollo de aplicaciones Web en ASP.NET sigue los pasos del modelo em-
pleado en Windows Forms para la creacin de formularios. ASP.NET (Web
Forms) simula un formulario compuesto por controles que atienden a distin-
tos tipos de eventos, ofreciendo as al usuario una interfaz en la que el efecto
cliente-servidor de la aplicacin Web queda diluido.
Este es uno de los puntos importantes que diferencia ASP.NET de otros sis-
temas para generacin de aplicaciones Web como ASP, JSP o PHP, en los que
el programador s que es consciente del funcionamiento basado en peticio-
nes y respuestas. A diferencia de stos, en Windows Forms, los eventos aso-
ciados a controles de servidor se generan en la aplicacin cliente (el navega-
dor) pero son tratados por el servidor Web dentro del Framework de
ASP.NET. Ms concretamente, la informacin de los eventos capturados en
el navegador se transmite al servidor por medio de una solicitud HTTP POST
de forma totalmente transparente. Por su parte, el Framework de ASP.NET
debe interpretar esta informacin e invocar al mtodo correspondiente que
trata el evento.
Desde el punto de vista del desarrollador, no hay diferencias sustanciales a la
hora de construir una aplicacin de Windows Forms y una aplicacin Web
ASP.NET. La diferencia fundamental estriba en el conjunto de controles dis-
ponibles, siendo los de Windows Forms mucho ms potentes en cuanto a su
complejidad visual y de interaccin con el usuario. En ASP.NET tambin se
dispone de controles habituales en los formularios, como botones, etiquetas,
etc. En este caso sin embargo, existen controles especficos derivados del
hecho de que HTML ya posee un conjunto de controles bsicos y por lo tan-
to algunos de los controles de ASP.NET pueden mapearse directamente sobre
ellos. Adicionalmente, ASP.NET ofrece controles especficos orientados a la
Web, as como controles cuya ejecucin se realiza en el servidor y no en el
navegador del usuario.
-
Universitat Oberta de Catalunya 25 ASP.NET
2. Formularios Web (Web Forms)
El objetivo de este apartado es introducir los elementos bsicos de ASP.NET
que dan soporte a la construccin de una aplicacin para la Web. El concep-
to clave y diferencial respecto a otras aproximaciones, son los llamados con-
troles de servidor. Agrupados en formularios y relacionados mediante un
potente sistema de gestin de eventos, estos controles permiten la construc-
cin de interfaces de usuario muy ricas de una forma relativamente sencilla.
2.1. Interfaces para la Web
Habitualmente se entiende por interfaz de usuario el conjunto de medios por
los que un usuario interacta con un sistema, una aplicacin, etc. La interfaz
proporciona mtodos por los que el usuario controla el sistema y mtodos
por los que el usuario recibe informacin del mismo.
Un tipo particular de interfaz lo constituye la interfaz grfica de usuario
(GUI) que se basa en la manipulacin de imgenes grficas y elementos vi-
suales (widgets) como ventanas, botones, cuadros de texto, etc. Junto a estos
elementos, un sistema de gestin de eventos se encarga de transmitir las
acciones del usuario a los distintos componentes de la interfaz para que reac-
cionen en consecuencia. El propio sistema operativo (como en el caso de
Windows) o un intrprete especializado (como en el caso de Tcl/Tk) se en-
cargan de gestionar el conjunto.
El aprovechamiento de la Web para que, adems de permitir la visualizacin
de documentos, permita tambin el acceso a aplicaciones remotas mediante
una interfaz HTML, implica algunas peculiaridades que diferencian este tipo
de interfaz de los GUI ms tradicionales. El hecho principal es que la inter-
faz HTML no se ejecuta de forma nativa por el propio sistema operativo del
usuario sino en el interior del navegador Web, por lo que conceptos tradi-
cionales de los GUI, como MDI, SDI, cuadros modales, etc. no tienen dema-
siado sentido. El navegador entiende el lenguaje de marcas (HTML, XHTML,
) que proporciona los elementos bsicos para mostrar y solicitar informa-
cin a travs de formularios. El procesado de los formularios, sin embargo, se
efecta en el servidor quien recibe los datos que el navegador ha recogido del
formulario, y se encarga de transmitir los resultados para que los visualice el
navegador.
Los formularios Web (Web Forms) son el elemento clave de ASP.NET para la
creacin de pginas Web programables que sirvan como interfaz de usuario
para las aplicaciones Web. Gracias a la tecnologa ASP.NET, el cdigo que se
ejecuta en el servidor (incluida la lgica de la aplicacin) genera dinmica-
MDI (Multiple Document Interface) se refiere a la inter-faz grfica de usuario por la que todas las ventanas de un programa residen en el inte-rior de una ventana que hace las veces de marco. Este tipo de interfaz es el ms comn en Windows, por ejemplo.
En una interfaz SDI (Single Document Interface) las ventanas de un programa son independientes entre s y las gestiona el propio gestor de ventanas del sistema operati-vo. Este tipo de interfaz es el ms comn en Unix, por ejemplo.
-
Universitat Oberta de Catalunya 26 ASP.NET
mente el contenido de las pginas Web hacia el navegador. El resultado pro-
ducido por una pgina Web Forms puede contener casi cualquier forma de
los lenguajes transmisibles sobre HTTP, como HTML, XML, WML, JScript y
JavaScript. As, una pgina Web Forms genera automticamente el cdigo
adaptado a las capacidades del navegador cliente. Como resultado de lo an-
terior, una pgina Web Forms puede mostrar informacin al usuario en
prcticamente cualquier navegador o dispositivo cliente.
El diseo de formulario Web para aplicaciones en ASP.NET sigue un modelo
muy parecido al de Windows Forms. Es decir, existe el concepto de formula-
rio formado por un conjunto de controles y que atiende a los eventos que
genera el usuario en su interaccin. El formulario distribuye cada evento a
los controles, siendo cada control responsable de atender o no al evento. En
respuesta a los eventos, otros controles pueden mostrar informacin al usua-
rio. Aunque la construccin de los formularios es muy similar a cmo se
hace en Windows Forms, el conjunto de controles es diferente, existiendo,
por ejemplo, controles basados en HTML especficamente diseados para la
Web. Otro aspecto diferencial es la forma de situar los controles en el formu-
lario, siendo mucho ms arbitraria su colocacin en el caso de los formula-
rios Web, puesto que una pgina puede adoptar diferentes tamaos depen-
diendo del navegador con el que se visualice, el tamao de la ventana de
ste, o incluso la resolucin de la pantalla en que se ejecute el navegador. Por
ello, la colocacin de los componentes visuales en una pgina no sigue un
posicionamiento absoluto como en Windows Forms.
2.2. Controles de servidor
El cdigo de la Figura 13 muestra un pequeo ejemplo de pgina ASP. Como
puede verse, el bloque de cdigo se sita justo en el lugar de la pgina en la
que debe aparecer el resultado producido por dicho cdigo. En ASP es impo-
sible separar el cdigo ejecutable del cdigo HTML que da forma a la pgina.
El resultado es un cdigo difcil de leer y de mantener.
ASP.NET resuelve de forma ordenada el problema de programar el compor-
tamiento dinmico de las pginas Web mediante el uso de los llamados con-
troles de servidor. stos proporcionan una forma sencilla de encapsular fun-
cionalidades usadas habitualmente y al mismo tiempo ser accesibles y
En una interfaz Web puede dejarse que los elementos visuales fluyan en la pgina, distribuyndose segn las dimensiones del navegador, o bien puede usarse posiciona-miento absoluto mediante CSS (Cascading Style Sheets).
Ahora son las:
Figura 13. Ejemplo de pgina ASP.
-
Universitat Oberta de Catalunya 27 ASP.NET
ampliables programticamente. ASP.NET aporta ms de 40 controles de ser-
vidor aunque existe gran cantidad de ellos proporcionados por terceros.
Existen tres clases de controles de servidor:
Controles HTML: bsicamente son marcas HTML
Controles Web: controles propios de ASP.NET
Controles de validacin: controles propios de ASP.NET para la validacin
de datos introducidos por el usuario
Seguidamente se muestran unos breves ejemplos para ilustrar estos tipos de
controles de servidor. En todos los casos se declaran en la pgina mediante
marcas propias o de HTML que contienen el atributo runat=server, de forma
que las marcas son entendidas y tratadas por el servidor.
2.2.1. Controles HTML
Fundamentalmente un control HTML de servidor es una marca HTML que se
procesa en el servidor antes de enviar la pgina al navegador del cliente.
Puesto que los elementos HTML en una pgina ASP.NET se tratan como sim-
ple texto y no se procesan, para hacerlos programables debe aadrseles el
atributo runat=server . Adems se suele aadir un atributo id que permite
identificar el control y as poder manipularlo desde el cdigo en tiempo de
ejecucin.
Todos los controles HTML de servidor deben hallarse dentro del mbito de
una marca . Esto indica que el formulario que los contiene
se procesar en el servidor y que por tanto los controles podrn accederse y
manipularse por el cdigo de script que se ejecute en el servidor.
El cdigo de la Figura 14 muestra una pgina de ASP.NET que usa un control
HtmlAnchor de servidor para incrustar un hipervnculo en una pgina Web.
Como se ve, el atributo HRef del control se manipula en tiempo de ejecucin
mediante el cdigo de atencin al evento Page_Load que se produce cuando se
carga la pgina .aspx. Se observa tambin que ahora todo el cdigo ejecutable
se ha separado del cdigo HTML.
Los controles HTML son ms adecuados para los elementos estticos de la pgina.
void Page_Load () { link1.HRef = "http://www.uoc.edu"; } Visita la Web de la UOC!
Figura 14. Ejemplo de uso de controles HTML de servidor en ASP.NET.
-
Universitat Oberta de Catalunya 28 ASP.NET
El conjunto de controles HTML de servidor se agrupan bajo el espacio de
nombres System.Web.UI.HtmlControls. A las marcas que no corresponden explci-
tamente a controles HTML de servidor se les asigna el tipo de control genri-
co System.Web.UI.HtmlControls.HtmlGenericControl.
2.2.2. Controles Web
Adicionalmente al soporte de controles estndar HTML, ASP.NET permite el
uso de controles semnticamente mucho ms ricos. Al igual que los contro-
les HTML de servidor, los controles Web de servidor tambin requieren del
atributo runat=server para indicar que deben ejecutarse en el servidor. La
diferencia estriba en que un control Web de servidor no tiene porque tener
necesariamente una correspondencia con cdigo HTML, y por lo tanto pue-
de encapsular funcionalidades ms complejas.
Los controles Web de servidor, agrupados bajo el espacio de nombres Sys-
tem.Web.UI.WebControls, exponen un modelo de objetos que contiene propie-
dades, mtodos y eventos, de la misma manera que cualquier otro objeto del
Framework de .NET. Gracias a este modelo de objetos los programas de
ASP.NET pueden interactuar e incluso modificar los controles en tiempo de
ejecucin. Veremos ms sobre eventos en el apartado Eventos.
La sintaxis para declarar un control Web de servidor en una pgina es la
siguiente: , donde se aprecia la
marca asp al inicio de la declaracin.
El ejemplo de la Figura 15 muestra la declaracin de un botn en un archivo
.aspx . Al margen del identificador y el texto del botn, se declara tambin
una funcin de atencin al evento OnClick del botn. La funcin cambia el
texto del botn al presionarlo en tiempo de ejecucin.
2.2.3. Controles de validacin
El modelo de formularios de ASP.NET proporciona un conjunto de controles
de validacin de servidor que pueden emplearse para la validacin de los
datos que introduce el usuario a travs de otros controles del formulario. El
El motor de ASP.NET se en-carga de traducir los controles Web en marcas de HTML y cdigo ejecutable.
void submit(Source As Object, e As EventArgs) { boton1.Text="Ya has hecho clic!"; }
Figura 15. Ejemplo de uso de controles Web de servidor en ASP.NET.
-
Universitat Oberta de Catalunya 29 ASP.NET
funcionamiento es simple: si los datos no pasan la validacin se visualiza un
mensaje de error.
Cada control de validacin puede llevar a cabo un tipo especfico de com-
probacin: que el valor introducido no coincida con un valor determinado,
que el valor introducido est dentro de un rango especificado, que el texto
introducido coincida con un determinado patrn, etc. Un control muy inte-
resante es el control RequiredFieldValidator que permite forzar que el usuario
introduzca un valor en un determinado campo del formulario.
Por defecto, los controles de validacin de una pgina se invocan cuando se
hace clic sobre un control de tipo Button, ImageButton o LinkButton. Puede in-
habilitarse la validacin de un control asignando a false la propiedad CausesVa-
lidation. La sintaxis para declarar un control de validacin de servidor es idn-
tica a la empleada para controles Web de servidor.
En el ejemplo de la Figura 16, se declara un control de tipo TextBox, un con-
trol de tipo Button y un control de tipo RangeValidator. La validacin se refiere al
valor introducido en el control llamado tbox1 y debe cumplirse que el valor
entero introducido est dentro del intervalo [1,100]. Si esta condicin no se
cumple, el control de validacin mostrar el mensaje indicado en el atributo
Text. La Figura 17 muestra la pgina Web en ejecucin, donde puede verse la
validacin en accin.
Introduce un nmero entre 1 y 100:
Figura 16. Ejemplo de uso de controles de validacin de servidor en ASP.NET.
Figura 17. Ejemplo de uso de controles de validacin de servidor en ASP.NET: ejecucin.
-
Universitat Oberta de Catalunya 30 ASP.NET
Es interesante destacar que los controles de validacin proporcionan una
doble funcionalidad dependiendo del tipo de navegador en el que se visuali-
zan. Si el navegador es sofisticado, como IE o Firefox, permitir que la vali-
dacin se lleve a cabo eficientemente en el propio navegador mediante el
uso de DHTML y cdigo JavaScript, pero tambin en el servidor. Si el nave-
gador es muy sencillo, como el de muchos telfonos mviles, la validacin
slo ser posible en el servidor. Lo ms interesante es que el modelo de pro-
gramacin es idntico en ambos casos y que toda la responsabilidad recae en
el motor de ASP.NET y en su habilidad para identificar las capacidades del
navegador del cliente.
Finalmente destacar que el programador puede recurrir en tiempo de ejecu-
cin a la propiedad Page.IsValid para determinar si todos los controles de
validacin se han evaluado positivamente. Esto proporciona un mecanismo
sencillo para validar un formulario y decidir si debe procederse con la ejecu-
cin de un determinado cdigo o no.
2.2.4. Procesamiento de controles
Como ya hemos comentado anteriormente, cuando el servidor Web recibe la
solicitud de servir un archivo .aspx, lo que ste hace en primer lugar es pasar
el archivo en cuestin al motor de ASP.NET para que lo procese. El motor,
que no depende del servidor Web sino de la plataforma de ejecucin de apli-
caciones que haya por debajo, debe extraer todas las marcas con el prefijo
asp y substituirlas por los elementos HTML y el cdigo script de cliente ade-
cuados. La substitucin no es algo directo como cambiar las apariciones de
cada elemento asp:TextBox por una marca type=text de HTML, por ejemplo.
Antes al contrario, se trata de traducir las distintas propiedades y eventos de
cada control Web, que son muy similares a los de los controles correspon-
dientes en Windows Forms, en trminos de elementos y atributos HTML,
estilos CSS y cdigo JavaScript.
Para ver cmo trabaja el motor de ASP.NET en lo que respecta a la traduccin
de los diversos controles durante el procesamiento de una pgina, podemos
recurrir a una sencilla prueba. Usando un editor de texto cualquiera creare-
mos una nueva pgina de ASP.NET y aadiremos un control de tipo CheckBox.
Le modificaremos algunas propiedades como Text, BorderColor o BackColor, y
CSS (Cascading Style Sheets) es un lenguaje para describir la forma de presentar docu-mentos escritos mediante lenguajes de marcas. Tpica-mente se usa para definir el estilo de una pgina Web escrita en HTML o XHTML.
Figura 18. Procesamiento de controles: archivo fuente.
-
Universitat Oberta de Catalunya 31 ASP.NET
daremos el valor true a la propiedad AutoPostBack. La Figura 18 muestra el ar-
chivo .aspx con el cdigo resultante, mientras que la Figura 19 muestra el
aspecto de la pgina Web en ejecucin.
La Figura 20 muestra el cdigo que recibe el navegador en respuesta a la soli-
citud de la pgina anterior. Como puede observarse el cdigo es muy dife-
rente. En la parte inferior del cdigo puede verse que el control CheckBox ha
generado diversos elementos HTML: un elemento span con los elementos que
afectan al estilo visual, un elemento input que hace que se muestre el botn
de seleccin, y un elemento label asociado que muestra el ttulo. Al hacer clic
sobre el control se invoca a la funcin JavaScript que ha generado el motor
de ASP.NET y que se muestra en el cdigo. En ella se comprueba qu nave-
gador visualiza la pgina y se recupera la referencia al formulario a travs de
"Seleccioname"
Figura 20. Procesamiento de controles: cdigo generado por el motor de ASP.NET.
Figura 19. Procesamiento de controles.: ejecucin.
-
Universitat Oberta de Catalunya 32 ASP.NET
un mtodo u otro para, finalmente, enviar al servidor los datos apropiados
mediante una serie de campos ocultos del formulario (que se muestran en la
parte superior del cdigo).
Como se aprecia en el ejemplo, el motor de ASP.NET genera gran cantidad
de cdigo por nosotros cuando usamos controles Web de servidor. Una bue-
na prctica para evitar generar pginas muy pesadas consiste en emplear
controles HTML para construir el contenido esttico de las pginas, en el que
no sea necesario personalizar ningn atributo ni tampoco se espere una res-
puesta. Por el contrario, se emplearn controles Web en caso de necesitar
acceder a las propiedades de un elemento visual desde el cdigo que se ejecu-
ta en el servidor, o bien sea necesario obtener un valor introducido por el
control y/o responder a sus eventos.
2.2.5. Los formularios son controles
Ciertamente, en este punto hay poco que decir de los formularios, puesto
que diversos aspectos ya se han mostrado a lo largo de los ejemplos anterio-
res. Sin embargo no queremos que pasen desapercibidos.
Como hemos podido apreciar en los ejemplos anteriores, todos los controles
de servidor deben hallarse dentro del mbito de un formulario, esto es, en el
mbito de una marca . Esto indica que el formulario que
contiene los controles se procesar en el servidor. Por tanto los controles y el
propio formulario (que tambin es un control) podrn accederse y manipu-
larse por el cdigo de script que se ejecute en el servidor. Es importante des-
tacar que una pgina .aspx slo puede contener un formulario de servidor.
La marca form puede ir acompaada de diversos atributos, como action, met-
hod, etc. Si bien, todos son opcionales, en su ausencia ASP.NET se encarga de
asignar algunos de ellos con valores por defecto. Como ejemplo, puede apre-
ciarse la diferencia en los atributos de la marca form en el cdigo de la Figura
20, generado por el motor de ASP.NET para el cdigo de la Figura 18.
2.3. Diseo de interfaces
Hasta el momento todos los ejemplos que hemos revisado han consistido en
escribir directamente el cdigo ASP.NET. Es obvio que para disear aplica-
ciones Web de cierta entidad, esta forma de programar no es la ms adecua-
da. Adems de ser muy propensa a la comisin de errores se requiere del
programador conocimientos de diversas tecnologas relacionadas con la pro-
gramacin para la Web. Existen diversas herramientas para el desarrollo de
aplicaciones Web con ASP.NET que facilitan enormemente la tarea, permi-
tiendo a los desarrolladores obviar muchos de los detalles del cdigo que
finalmente se genera. La idea detrs de estas herramientas es conseguir que
los desarrolladores no deban preocuparse demasiado de los detalles de la
Controles HTML en Visual Studio 2005
-
Universitat Oberta de Catalunya 33 ASP.NET
programacin de interfaces para Web, sino que puedan construir la interfaz
de forma lo ms similar posible a como lo hacen para las aplicaciones de
escritorio convencionales. Sin embargo hay algunas peculiaridades que de-
ben tenerse en cuenta, algunas de las cuales ya hemos visto por las diferen-
cias existentes en los distintos tipos de controles.
Observando las cajas de herramientas de Visual Studio 2005 (ver figuras al
margen) apreciamos la existencia de controles Web y controles HTML tal
como hemos descrito previamente. Puede apreciarse que curiosamente en
ambas categoras existen controles similares como Button, CheckBox o Table.
Sin embargo, como es de esperar, Visual Studio los trata de forma diferente y
genera un cdigo distinto para ellos. Vemoslo con un ejemplo sencillo.
Creamos una aplicacin Web con Visual Studio e insertamos, por ejemplo,
tres controles HTML: un TextField, un CheckBox y un Button. Seguidamente in-
sertemos tres controles Web equivalente: un TextBox, un CheckBox y un Button.
En el caso de los controles HTML el cdigo resultante (ver Figura 21) consiste
en tres marcas INPUT de HTML de tipo text, checkbox y button, respectivamente.
Para los controles Web el cdigo generado hace referencia a los controles
correspondientes de ASP.NET, incluyendo un identificador para poder ser
accedidos programticamente en tiempo de ejecucin, etc.
Ms rigurosamente, si insertamos en una pgina ASP.NET un control HTML
y un control Web y comprobamos la lista de propiedades de cada uno de
ellos, observaremos claras diferencias. En un control HTML lo que aparece
como propiedades no son otra cosa que los atributos que les corresponden al
elemento en cuestin segn el estndar HTML, i.e. class, name, style, onmouse-
out, onfocus, etc. Un control Web de ASP.NET dispone en cambio de propie-
dades como Font, ForeColor, BackColor, Visible, Text, ToolTip, etc. habituales en los
Controles Web en Visual Studio 2005
WebForm1
Figura 21. Controels HTML vs. Controles Web: archivo fuente.
-
Universitat Oberta de Catalunya 34 ASP.NET
controles usados en Windows Forms para la construccin de aplicaciones de
escritorio. Se trata por lo tanto de elementos visuales ms completos y que
permiten gestionar una interaccin ms elaborada con el usuario.
La construccin de interfaces ricas de usuario requiere, por tanto, el uso de
un conjunto de controles que comparten caractersticas comunes y se aseme-
jan a los controles de Windows Forms. As como los controles Windows
derivan de la clase Control del espacio de nombres System.Windows.Forms, con los
controles HTML y Web sucede algo similar ya que en su mayor parte derivan
directa o indirectamente de de la clase Control definida en el espacio de nom-
bres System.Web.UI.
Respecto a las caractersticas de los controles, la mayora de ellos, como es el
caso de los distintos tipos de botones, disponen de la propiedad Text para
asignarles un ttulo. Si se trata de un CheckBox se dispone tambin de la pro-
piedad Checked, de tipo booleano. Si es un TextBox, ste puede usarse para
introducir una o ms lneas de texto dependiendo de la propiedad TextMode,
emplendose las propiedades Rows y Columns para indicar el formato de la
entrada, si es el caso. A modo de ejemplo, la Figura 22 muestra el panel de
propiedades para dos controles Web.
Adems de estas propiedades especficas, que no describiremos en detalle,
para cada tipo de control, existen otras propiedades de carcter genrico que
aplican a casi la totalidad de los controles Web.
Figura 22. Propiedades de un control Web en Visual Studio: TextBox y Button.
-
Universitat Oberta de Catalunya 35 ASP.NET
2.3.1. Propiedades de apariencia visual
Las propiedades que afectan a la apariencia visual permiten establecer aspec-
tos de los controles como las dimensiones, colores, bordes, etc. Algunas de
las propiedades de apariencia ms usuales son:
Height y Width: Establecen, respectivamente, la altura y la anchura del con-
trol, mediante diversas unidades de medida absolutas (pxeles, milme-
tros, pulgadas, ) y relativas (respecto al tamao de letra por defecto,
etc.). La unidad de medida se indica mediante un sufijo, e.g. 10px para 10
pxeles, 10em para 10 veces el tamao de la fuente por defecto, etc.
BackColor y ForeColor: Establecen el color de fondo y del texto del control.
Aunque pueden usarse directamente colores reconocidos en HTML o bien
colores RGB, lo ms sencillo es usar la paleta de colores del diseador de
interfaces.
BorderColor, BorderStyle y BorderWidth: Permiten configurar el color (de igual
forma que en las propiedades anteriores), estilo (segn CSS) y anchura del
borde (usando las unidades de medida descritas anteriormente) de un
control.
Font: Establece el tipo de letra, su tamao y dems atributos habituales.
Todas estas propiedades estarn especificadas en el documento .aspx alojado
en el servidor Web correspondiente y se aplicarn en la visualizacin de la
pgina ASP.NET. Sin embargo, el navegador lo nico que recibir sern ele-
mentos HTML con el atributo style y las propiedades CSS equivalentes.
2.3.2. Propiedades de comportamiento
Otro grupo importante de propiedades generales a todos los controles son las
que permiten especificar su comportamiento, i.e. su visibilidad y accesibili-
dad. De estas propiedades destacan algunas como Enabled, Visible, AccessKey,
TabIndex o ReadOnly.
Las propiedades Enabled y Visible son de tipo booleano, indicando la primera si
el control ser accesible mediante teclado o ratn, y la segunda si el control
ser visible o no. Al igual que el resto de propiedades de un control, stas
pueden modificarse desde el cdigo de la pgina en respuesta a cualquier
evento o condicin. Debe tenerse en cuenta, sin embargo, que la visualiza-
cin/ocultacin de un control oculto/visible puede conllevar una redistribu-
cin del resto de los controles en la pgina, a no ser que se haya usado el
posicionamiento absoluto.
Algunos controles (botones, cuadros de texto, listas, etc.) son capaces de
tomar para s el foco de la entrada de datos en la pgina (teclado, ratn, etc.).
Cmo slo un control en la pgina puede tener el foco en un momento da-
do, un control pierde el foco en el momento en que otro lo obtiene. Aunque
Style=BORDER-RIGHT: 2px solid; BORDER-TOP: 2px solid; BORDER-LEFT: 2px solid; BORDER-BOTTOM: 2px solid; WIDTH: 234px; HEIGHT: 216px; BACKGROUND-COLOR: #FF0BA6 Estilo correspondiente a un control con borde slido de 2 pxeles, anchura de 234 pxeles, altura de 216 pxeles y color de fondo expresado en RGB.
-
Universitat Oberta de Catalunya 36 ASP.NET
el usuario puede usar el ratn para dar el foco de entrada a un control cual-
quiera de la pgina, es recomendable facilitar el acceso mediante teclado.
Para ello se usan las propiedades AccessKey y TabIndex. TabIndex contendr un
nmero entero superior a cero, tomando automticamente el foco de la
pgina recin cargada el control con el menor valor en esta propiedad, y
avanzando el foco al siguiente control en el orden con cada pulsacin del
tabulador. Por su parte, la propiedad AccessKey permite asignar a un control
cualquier carcter que combinado con la tecla Alt (o similar) dar el foco de
entrada de datos directamente a dicho control.
2.4. Eventos
Como ya hemos comentado, una pgina HTML es un documento esttico
que, una vez recibido, es visualizado por el navegador sin que haya ninguna
interaccin ms con el servidor hasta que una nueva pgina es solicitada. A
lo sumo, si la pgina contiene un formulario, los datos se enviarn al servi-
dor al hacer clic sobre el botn de tipo submit.
Sin embargo, en ASP.NET es necesario poder informar al servidor de que un
control ha desencadenado un evento y que debe ser procesado por las clases
alojadas en el servidor para generar una respuesta. En consecuencia el desa-
rrollo de interfaces Web en ASP.NET, al igual que Windows Forms, presenta
un modelo de programacin basado en eventos. As pues, cuando un control
cambia su estado, por ejemplo cuando un usuario hace clic en un botn, el
botn lanza un evento. A diferencia que en Windows Forms, el evento gene-
rado por la interfaz de usuario requiere de una solicitud al servidor Web para
que lo procese.
A diferencia de lo que ocurre en ASP, ASP.NET proporciona orientacin a
eventos real. En ASP una pgina se procesa de forma secuencial, i.e. las lneas
de HTML o cdigo ASP se procesan una tras otra. Las acciones de usuario
comportan el envo de la pgina al servidor, por lo que ste debe reconstruir
la pgina, tras lo cual debe procesarla nuevamente de forma secuencial. En
consecuencia la aplicacin no muestra propiamente un comportamiento
orientado a eventos. Al contrario, si se desea dicho comportamiento debe
programarse explcitamente manteniendo el estado al ms bajo nivel, etc.
Todo ello limita la riqueza de la interfaz de usuario al tiempo que complica
enormemente el cdigo de la aplicacin.
2.4.1. Generalidades
Los controles de servidor ASP.NET exponen y lanzan eventos que pueden
usarse para construir interfaces de usuario ricas. Esto puede hacerse de forma
sencilla mediante la asociacin de un mtodo a un evento de un control. En
la asociacin se usa el nombre de atributo de un evento para indicar el nom-
bre del evento y el valor del atributo para indicar el nombre de un mtodo
(event handler) al que invocar cuando dicho evento se produzca. Por ejem-
La generacin de eventos en las interfaces Web de ASP.NET requiere del envo de una solicitud al servidor.
-
Universitat Oberta de Catalunya 37 ASP.NET
plo, la Figura 23 muestra cmo asociar un evento Click a un botn para cam-
biar el valor de la propiedad Text en un TextBox en tiempo de ejecucin. La
Figura 24 muestra el aspecto visual de la pgina.
Se llama a un mtodo de control de eventos slo cuando ocurre un evento
especfico de un control determinado, lo que permite evitar tener un mtodo
global en el formulario que controle todos los eventos de todos los controles.
Adems, debido a que la arquitectura de eventos de los formularios est ba-
sada en delegados, los mtodos de control de eventos tienen seguridad de
tipos de datos. Esto permite que el compilador pueda detectar la falta de
coincidencia en la signatura del mtodo durante la compilacin.
Dos clases dan soporte a cada evento. Por una parte la clase de delegado
EventHandler, utilizada para registrar el mtodo de control del evento. Y por
otra parte la clase EventArgs que contiene datos acerca del evento lanzado.
La signatura de un EventHandler consiste en que el primer argumento contiene
una referencia al objeto que lanz el evento (emisor) y en que el segundo
argumento contiene datos acerca del evento (una instancia de EventArgs). Por
ejemplo, el evento Click de un control de tipo Button utiliza el siguiente
mtodo controlador:
El modelo de atencin a los eventos de los formularios se basa en el uso de mtodos delegados.
En programacin orientada a objeto es habitual identificar un mtodo mediante su signatura. Esta consiste en el nombre del mtodo, el nme-ro y tipo de sus parmetros, y el tipo del resultado que retorna.
public delegate void EventHandler(object sender, EventArgs e);
void EnterBtn_Click(Object Src, EventArgs E) { Mensaje.Text = "Bienvenido a ASP.NET " + HttpUtility.HtmlEncode(Nombre.Text); } Introduce tu nombre:
Figura 23. Ejemplo de gestin de un evento.
Figura 24. Ejemplo de gestin de un evento: ejecucin.
-
Universitat Oberta de Catalunya 38 ASP.NET
Como resultado, cualquier mtodo de control de eventos del evento Click
debe tener la siguiente signatura:
La signatura de la clase EventHandler dicta la forma de la signatura del mtodo
de control del evento. As, si en la programacin de la lgica de la aplicacin
se usa un lenguaje fuertemente tipado, e.g. C#, se producir un error de
tiempo de compilacin si la signatura del mtodo de control del evento no
coincide con la signatura del mtodo delegado.
Existen varios eventos que utilizan clases EventHandler e EventArgs genricas. Sin
embargo, algunos eventos necesitan informacin adicional que es especfica
del tipo del evento provocado. Por ejemplo, los eventos relacionados con el
movimiento del ratn incluyen informacin acerca de la posicin del punte-
ro y de los botones del ratn. Estos eventos definen sus propias clases que
deben heredarse de las clases EventHandler y EventArgs. Por ejemplo, el evento
MouseDown utiliza las clases MouseEventHandler y MouseEventArgs.
Un evento puede suceder tanto antes como despus de que se produzcan
cambios en tipos de estado de los controles o la pgina, lo que afecta a su
nomenclatura. Un evento provocado antes de que se produzca un cambio de
estado suele llevar como sufijo "ing". Un evento provocado despus de que se
produzca un cambio de estado suele usar el sufijo "ed". Por ejemplo, el even-
to SessionEnding se provoca antes de que se produzca un cambio de estado, y el
evento SessionEnded se provoca despus de que se produzca un cambio de
estado. Si un cambio de estado provoca slo un evento, ese evento normal-
mente no tendr ningn sufijo. Por ejemplo, el evento Click.
2.4.2. Eventos en pginas Web
Al margen de lo comentado en el apartado anterior, que no difiere del tra-
tamiento de eventos en Windows Forms, ASP.NET ofrece eventos y propie-
dades especficos relacionados con aspecto propios de las aplicaciones Web.
Trataremos la carga de pginas y el lanzamiento controlado de eventos.
Algunos eventos, como los de ratn, necesitan clases de soporte especficas, eso s, derivadas de las clases genri-cas EventHandler y EventArgs
void Page_Load () { et1.Text="La fecha y hora actual es: " + System.DateTime.Now.ToString(); }
Figura 25. Ejemplo de uso de Page_Load.
void (object sender, EventArgs evArgs)
-
Universitat Oberta de Catalunya 39 ASP.NET
Evento Page_Load. Como sugiere su nombre, este evento se lanza cuando se
carga una pgina. Cuando eso sucede, ASP.NET invoca automticamente al
mtodo Page_Load(). La Figura 25 muestra un ejemplo en el que el texto de un
control de tipo Label se define en el momento de cargar la pgina.
Propiedad Page.IsPostBack. El mtodo Page_Load() se ejecuta cada vez que se
carga la pgina en cuestin. Si lo que queremos es que el cdigo de Pa-
ge_Load() se ejecute slo la primera vez que se carga la pgina, debemos con-
sultar el valor de la propiedad booleana Page.IsPostBack. Si la propiedad tiene
valor falso, la pgina se est cargando por primera vez, pero si la propiedad
es cierta, la pgina est siendo cargada de nuevo, como cuando se han con-
firmado los datos del formulario, por ejemplo. El cdigo de la Figura 26
muestra un ejemplo en el que se comprueba el valor de la propiedad Pa-
ge.IsPostBack en el mtodo Page_Load(), de forma que la fecha y hora mostradas
en la pgina no cambian cuando se pulsa el botn de envo.
Propiedad AutoPostBack. Todo control de ASP.NET que puede generar un
evento dispone de la propiedad booleana AutoPostBack. sta indica si el control
debe producir una nueva solicitud al servidor para cada evento que el con-
trol genere. Por defecto el valor de la propiedad es falso, lo que indica que si
por ejemplo tenemos un control CheckBox y asociamos cdigo al evento Chec-
kedChanged, ste en realidad no tendr lugar cuando el usuario cambie la se-
leccin en el CheckBox, sino slo al enviar el formulario al servidor. Si asig-
namos el valor cierto a la propiedad AutoPostBack haremos que ASP.NET aada
a la pgina el cdigo JavaScript necesario para detectar el evento y hacer la
solicitud al servidor en el momento en que se produzca el evento.
La existencia de esta propiedad tiene su origen en el hecho de que una apli-
cacin Web ejecuta la interfaz de usuario en el navegador del cliente, mien-
tras que la lgica de la aplicacin se ejecuta en un servidor remoto con el que
el navegador se comunica a travs de un medio relativamente lento como es
void Page_Load () { if (!