Sunteți pe pagina 1din 36

tur

a
ec

de
l

Desarrollo de aplicaciones web con


ASP .NET 2.0. Aspectos avanzados

Eje

mp

lo

ngel Esteban

tur
a

Sipnosis

ec

Este texto est dedicado a la versin de ASP .NET que ofrece Microsoft dentro de su entorno .NET
Framework 2.0. Se abordan los aspectos ms avanzados relacionados con el desarrollo de aplicaciones
Web basadas en ASP .NET 2.0 como pueden ser: la construccin de servicios Web, implementacin
controles Web de servidor y controles de usuario, WebParts, Master Pages, temas y skins, distribucin
y administracin de aplicaciones Web, caractersticas de internacionalizacin, etc. Se requiere tener
algn conocimiento previo del desarrollo de aplicaciones Web con ASP .NET 2.0. Los lenguajes de
programacin utilizados a lo largo del texto son Visual Basic .NET y C#.

Eje

mp

lo

de
l

Angel Esteban (Madrid, 1975) Ingeniero Tcnico en


Informtica de Gestin (Universidad Politcnica de Madrid),
con las siguientes titulaciones de Microsoft: MCSD, MCAD y
MCTS (en SQL Server 2005). Trabaja como Software Architect
en Alhambra-Eidos. Experto en el diseo y desarrollo de
aplicaciones Web basadas en ASP .NET. Autor de varios cursos
virtuales en www.elcampusdigital.com.

tur
a

Luarna

ec

Desarrollo de Aplicaciones web con ASP .NET 2.0 Aspectos avanzados


Angel Esteban Nez y Alhambra Eidos
De esta edicin: 2009, Luarna Ediciones, S.L.

www.luarna.com

ISBN: 978-84-92684-49-6

Eje

mp

lo

Versin 1.0 (20-11-2009)

de
l

Madrid, noviembre de 2009

Cualquier forma de reproduccin, distribucin, comunicacin pblica o transformacin de esta obra solo puede ser realizada
con la autorizacin de sus titulares, salvo excepcin prevista por la ley. Dirjase a CEDRO (Centro Espaol de Derechos
Reprogrficos, www.cedro.org) si necesita fotocopiar, escanear o hacer copias digitales de algn fragmento de esta obra.

tur
a
ec
de
l

Desarrollo de aplicaciones web con ASP .NET 2.0.


Aspectos avanzados

Eje

mp

lo

ngel Esteban Nez

tur
a

Indice

ec

Novedades de ASP .NET 2.0-I ........................................................................................................ 10


Introduccin .................................................................................................................................. 10
Lenguajes de programacin ........................................................................................................... 12
Recorrido por las distintas versiones de ASP ................................................................................. 12
Nuevos controles Web de servidor ................................................................................................ 15
Controles Web de datos ............................................................................................................. 15
Controles Web de navegacin ................................................................................................... 21
Controles Web de inicio de sesin ............................................................................................. 26
WebParts .................................................................................................................................. 29
Controles Estndar .................................................................................................................... 34

lo

de
l

Novedades de ASP .NET 2.0 II ....................................................................................................... 37


Master Pages ................................................................................................................................. 37
Temas y Skins ............................................................................................................................... 43
Personalizacin ............................................................................................................................. 47
Internacionalizacin ...................................................................................................................... 50
Nuevo modelo de separacin de cdigo ......................................................................................... 54
PostBack entre distintas pginas .................................................................................................... 56
Nuevos eventos de las pginas ASPX ............................................................................................ 56
Soporte para manejar el foco de la pgina ......................................................................................57
Nuevas caractersticas del cdigo de cliente ..................................................................................57
Directorios de una aplicacin ASP .NET ....................................................................................... 58
Nueva sintaxis...............................................................................................................................59
Nuevas directivas de las pginas ASPX ......................................................................................... 60
Distribucin de la aplicacin ......................................................................................................... 60
Visual Studio 2005........................................................................................................................ 61
Precompilacin de pginas ............................................................................................................ 61
Mejora del ViewState.................................................................................................................... 62
API de configuracin .................................................................................................................... 63
Consola MMC de administracin .................................................................................................. 63
Soporte para 64 bits ......................................................................................................................64
Material necesario .........................................................................................................................64

mp

Elementos comunes del desarrollo de aplicaciones Web con ASP .NET 2.0 I............................... 66
Introduccin .................................................................................................................................. 66
Sintaxis bsica de ASP .NET ........................................................................................................ 67
Web Forms ................................................................................................................................... 70
Controles HTML y controles Web de servidor .............................................................................. 72
Eventos de una pgina ASPX ........................................................................................................ 76
Separacin de cdigo .................................................................................................................... 80
Directivas de las pginas ASPX ....................................................................................................82
Eventos de los controles Web de servidor ...................................................................................... 83
Configuracin de las aplicaciones ASP .NET ................................................................................ 90

Eje

Elementos comunes del desarrollo de aplicaciones Web con ASP .NET 2.0 II ............................. 93
Introduccin .................................................................................................................................. 93
El API Focus................................................................................................................................. 93
Cross-Page PostBack .................................................................................................................... 97
Aplicando estilos a los controles Web ......................................................................................... 102
Aadiendo controles Web en tiempo de ejecucin ....................................................................... 107
Callbacks de cliente .................................................................................................................... 114
Directorios especiales de la aplicacin ASP .NET ....................................................................... 119
Los directorios Bin y App_Code de la aplicacin ........................................................................ 121
Pgina |5

tur
a

Master Pages ................................................................................................................................. 124


Introduccin................................................................................................................................ 124
Aadiendo una pgina maestra .................................................................................................... 125
Asociando pginas maestras ........................................................................................................ 128
Creando la pgina de contenido ................................................................................................... 130
Accediendo a la pgina maestra................................................................................................... 136
Indicando contenido por defecto.................................................................................................. 142
Asignacin de la pgina maestra en tiempo de ejecucin ............................................................. 144
Pginas maestras anidadas........................................................................................................... 146
Eventos de las pginas maestras .................................................................................................. 149
Caso Prctico: Planteamiento ...................................................................................................... 153

ec

Temas y Skins ............................................................................................................................... 154


Introduccin................................................................................................................................ 154
Aplicando temas ......................................................................................................................... 155
Utilizando skins .......................................................................................................................... 159
Pginas maestras y temas ............................................................................................................ 169
Caso Prctico: Planteamiento ...................................................................................................... 171

de
l

Creacin y utilizacin de controles de usuario ............................................................................. 172


Introduccin................................................................................................................................ 172
Controles de usuario.................................................................................................................... 173
La directiva @Register ................................................................................................................ 174
Creando un control de usuario ..................................................................................................... 175
Creando propiedades en los controles de usuario ......................................................................... 179
Eventos en los controles de usuario ............................................................................................. 184
La directiva @Control................................................................................................................. 185
Controles de usuario y el modelo se separacin de cdigo ........................................................... 186
Transformacin de una pgina ASPX en control de usuario ......................................................... 189
Caso Prctico: Planteamiento ...................................................................................................... 193

lo

Creacin de componentes y controles Web de servidor............................................................... 194


Introduccin................................................................................................................................ 194
Introduccin a los componentes .NET ......................................................................................... 195
Creacin de componentes .NET .................................................................................................. 197
Creacin de controles ASP .NET de servidor............................................................................... 205
Caso Prctico: Planteamiento ...................................................................................................... 209

Eje

mp

Construccin avanzada de controles Web de servidor ................................................................ 211


Introduccin................................................................................................................................ 211
Propiedades de los controles de servidor...................................................................................... 211
Conversin de los valores de atributos ......................................................................................... 214
Utilizando los servicios de HtmlTextWriter ................................................................................. 217
Propiedades de clase ................................................................................................................... 221
Heredando de la clase System.Web.IU.WebControls.WebControl ............................................... 226
Controles compuestos ................................................................................................................. 229
Manteniendo el estado de los controles ........................................................................................ 233
Lanzando eventos ....................................................................................................................... 235
Acceso a datos con ADO .NET ..................................................................................................... 240
Introduccin................................................................................................................................ 240
Beneficios de ADO .NET............................................................................................................ 241
Arquitectura de datos desconectados ........................................................................................... 242
DataSet ................................................................................................................................... 243
ADO .NET y XML ................................................................................................................. 244
Una visin general de ADO .NET ............................................................................................... 244
Pgina |6

tur
a

Las clases de ADO .NET ............................................................................................................ 246


Estableciendo la conexin. Los objetos Connection ..................................................................... 248
Los objetos Command................................................................................................................. 251
Los objetos DataReader .............................................................................................................. 258
El objeto DataSet ........................................................................................................................ 262
Los objetos DataAdapter ............................................................................................................. 267
Caso Prctico: Planteamiento ...................................................................................................... 271

ec

Creacin de servicios Web ............................................................................................................ 272


Introduccin................................................................................................................................ 272
Introduccin a los servicios Web ................................................................................................. 273
Arquitectura de un servicio Web ................................................................................................. 274
Construccin de servicios Web.................................................................................................... 275
Comprobando el funcionamiento del servicio Web ...................................................................... 280
La directiva @WebService .......................................................................................................... 284
Los atributos WebService y WebMethod..................................................................................... 284
La clase WebService ................................................................................................................... 290
Servicios Web de acceso a datos ................................................................................................. 296
Caso Prctico: Planteamiento ...................................................................................................... 300

de
l

Utilizacin de servicios Web ......................................................................................................... 301


Introduccin................................................................................................................................ 301
Las fases de la puesta en marcha de un servicio Web ................................................................... 302
Descripcin y localizacin de servicios Web ............................................................................... 303
Las clases proxy.......................................................................................................................... 305
Creacin de clases proxy con Visual Studio .NET ....................................................................... 306
Creacin de clases proxy con la utilidad WSDL.EXE .............................................................. 319
Caso Prctico: Planteamiento ...................................................................................................... 325

mp

lo

WebParts I: Conceptos bsicos y catlogos ................................................................................. 326


Introduccin................................................................................................................................ 326
WebPartManager y WebPartZone ............................................................................................... 327
Modos del control WebPartManager ........................................................................................... 332
Controles WebPart ...................................................................................................................... 336
Catlogos WebPart...................................................................................................................... 342
PageCatalogPart ...................................................................................................................... 343
DeclarativeCatalogPart............................................................................................................ 348
ImportCatalogPart ................................................................................................................... 351
WebParts II: Modos de edicin y conexin. ................................................................................. 354
Introduccin................................................................................................................................ 354
Modo de edicin ......................................................................................................................... 354
ApareanceEditorPart y LayoutEditorPart ................................................................................. 357
BehaviorEditorPart.................................................................................................................. 361
PropertyGridEditorPart ........................................................................................................... 365
Modo de conexin ...................................................................................................................... 374
Caso Prctico: Planteamiento ...................................................................................................... 381

Eje

WebParts III: Creacin de WebParts personalizados ................................................................. 382


Introduccin................................................................................................................................ 382
Definiendo el WebPart ................................................................................................................ 383
Definicin de las propiedades del WebPart.................................................................................. 384
Construccin del WebPart ........................................................................................................... 385
Utilizando el WebPart ................................................................................................................. 388
Definiendo verbos para el WebPart ............................................................................................. 392
Restableciendo la configuracin .................................................................................................. 397
Pgina |7

tur
a

Personalizacin ............................................................................................................................. 399


Introduccin................................................................................................................................ 399
Creacin de propiedades de personalizacin ................................................................................ 400
Agrupacin de propiedades de personalizacin............................................................................ 405
Definicin de tipos ...................................................................................................................... 409
Migracin de usuarios annimos ................................................................................................. 414

ec

Internacionalizacin ..................................................................................................................... 416


Introduccin................................................................................................................................ 416
Creacin de ficheros de recursos ................................................................................................. 417
Carpetas especiales ................................................................................................................. 417
Internet Explorer: Preferencias de idioma ................................................................................ 418
Fichero de recursos local ......................................................................................................... 418
Fichero de recursos global ....................................................................................................... 425
Manejando el idioma en tiempo de ejecucin .............................................................................. 426
Estableciendo el idioma .............................................................................................................. 427

de
l

Entrada/Salida con ficheros y streams ......................................................................................... 431


Introduccin................................................................................................................................ 431
Unidades de disco ....................................................................................................................... 432
Directorios .................................................................................................................................. 437
Ficheros ...................................................................................................................................... 446
Rutas .......................................................................................................................................... 454
Lectura y escritura de ficheros con streams .................................................................................. 457
Caso Prctico: Planteamiento ...................................................................................................... 461

lo

Distribucin de aplicaciones Web................................................................................................. 462


Introduccin................................................................................................................................ 462
Instalacin de Visual Studio 2005 ............................................................................................... 463
El entorno de trabajo ................................................................................................................... 467
Mtodos de distribucin de una aplicacin Web .......................................................................... 468
XCopy .................................................................................................................................... 468
Copiar sitio Web ..................................................................................................................... 472
Publicar sitio Web ................................................................................................................... 476
Programa de instalacin .......................................................................................................... 482
Caso Prctico: Planteamiento ...................................................................................................... 487

Eje

mp

Configuracin de Internet Information Server............................................................................ 488


Introduccin................................................................................................................................ 488
El servidor Web Internet Information Server ............................................................................... 489
Instalando IIS .............................................................................................................................. 489
El administrador de Servicios de Internet Information Server ...................................................... 491
Elementos de IIS ......................................................................................................................... 494
Administracin del sitio Web ...................................................................................................... 494
Sitio Web ................................................................................................................................ 495
Directorio particular ................................................................................................................ 496
Documentos ............................................................................................................................ 497
Errores personalizados ............................................................................................................ 498
Rendimiento............................................................................................................................ 498
Seguridad de directorios .......................................................................................................... 499
Filtros ISAPI ........................................................................................................................... 499
Encabezados HTTP ................................................................................................................. 500
Extensiones de servidor ........................................................................................................... 501
ASP .NET ............................................................................................................................... 503
La aplicacin Web ...................................................................................................................... 504
Pgina |8

de
l

ec

tur
a

Administracin y Configuracin de Aplicaciones Web ............................................................... 509


Introduccin................................................................................................................................ 509
Una configuracin basada en XML ............................................................................................. 510
Aplicando la configuracin ......................................................................................................... 511
Formato de los ficheros de configuracin .................................................................................... 512
Seccin de manejadores .......................................................................................................... 513
Seccin de valores de configuracin ........................................................................................ 514
Tareas comunes de configuracin ................................................................................................ 516
Configuracin general ............................................................................................................. 517
Configuracin de la pgina ...................................................................................................... 517
Configuracin de la aplicacin ................................................................................................ 519
Cadenas de conexin ............................................................................................................... 519
Configuracin de la sesin ...................................................................................................... 521
Configuracin de trazas ........................................................................................................... 522
Errores personalizados ............................................................................................................ 523
Web Services .......................................................................................................................... 525
Globalizacin .......................................................................................................................... 526
Compilacin............................................................................................................................ 526
Identidad ................................................................................................................................. 529
Manejadores HTTP ................................................................................................................. 530
Modelo de proceso .................................................................................................................. 534
Indicando la configuracin para un recurso concreto ................................................................... 536
Bloqueando valores de configuracin .......................................................................................... 537
Herramientas de configuracin .................................................................................................... 538
Sitio Web de Administracin................................................................................................... 538
Pestaa ASPNET (ASP .NET MMC Snapin) ............................................................................ 540
Caso Prctico: Planteamiento ...................................................................................................... 543

Eje

mp

lo

Resolucin Casos prcticos ........................................................................................................... 544


Captulo 5 ................................................................................................................................... 544
Captulo 6 ................................................................................................................................... 549
Captulo 7 ................................................................................................................................... 553
Captulo 8 ................................................................................................................................... 557
Captulo 10 ................................................................................................................................. 561
Captulo 11 ................................................................................................................................. 564
Captulo 12 ................................................................................................................................. 567
Captulo 14 ................................................................................................................................. 571
Captulo 18 ................................................................................................................................. 574
Captulo 19 ................................................................................................................................. 577
Captulo 21 ................................................................................................................................. 578

Pgina |9

tur
a
ec
de
l

Novedades de ASP .NET 2.0-I

lo

Introduccin

mp

ASP NET 2.0 es la tecnologa para el desarrollo de aplicaciones Web que ponemos encontrar en la
nueva versin que ofrece Microsoft de su plataforma de desarrollo Microsoft .NET Framework 2.0.
Este texto est pensado tanto para aquellos lectores que ya conocen ASP .NET 1.x, u otra versin
previa, como para los que no conocen nada del entorno de desarrollo de las pginas activas de
Microsoft.

Eje

Nuestro objetivo va a ser centrarnos en la tecnologa ASP .NET, aunque comentaremos de


brevemente, y cuando sea necesario, algunos conceptos generales de la plataforma .NET (.NET
Framework), ya que no debemos olvidar que es la plataforma sobre la que se van a ejecutar las
aplicaciones Web desarrolladas con pginas ASP .NET, es decir, las pginas ASP .NET no se van a
ejecutar directamente sobre un sistema operativo determinado, sino que lo van a hacer sobre la nueva
plataforma que ofrece Microsoft.
La plataforma .NET ofrece una serie de herramientas y tecnologas necesarias para construir y
desarrollar aplicaciones Web, as pues, las pginas ASP .NET se van a ejecutar dentro del entorno de
ejecucin que nos facilita el .NET Framework. Podramos decir que ASP .NET es una parte de la
plataforma .NET, y es esta parte la que se va a tratar en el presente texto.
Para aquellos lectores que no conozcan la tecnologa de desarrollo de las pginas ASP en cualquiera
de sus versiones, voy a realizar una definicin muy sencilla de lo que consiste la filosofa de la
programacin de aplicaciones Web con pginas ASP o ASPX.
P g i n a | 10

tur
a

La filosofa de ASP .NET resulta muy sencilla, en pocas palabras se puede definir de la siguiente
forma: las pginas ASP .NET, tambin llamadas pginas activas, son pginas que contienen cdigo
HTML, script de cliente y un cdigo que se ejecuta en el servidor, dando como resultado cdigo
HTML. Por lo tanto al cargar una pgina ASP .NET en nuestro navegador, en realidad no estamos
cargando la pgina ASP .NET como tal, sino el resultado de la ejecucin de la pgina, es decir la
salida de la pgina ASP .NET, y como se ha apuntado anteriormente se trata de cdigo HTML. Es
decir, son pginas que se ejecutan en el servidor enviando como resultado al cliente cdigo HTML.

ec

El anterior prrafo est extrado completamente de un antiguo texto dedicado a ASP 3.0, el titulado
Programacin para aplicaciones para Internet con ASP 3.0, y es perfectamente aplicable a ASP
.NET 2.0, pero este entorno de desarrollo de aplicaciones Web, va ms all presentando un completo
entorno mucho ms elaborado y complejo, con lo que la afirmacin de prrafo anterior se quedara
muy corta, ya que nicamente define uno de los aspectos de las pginas ASP .NET.

de
l

De forma ms genrica, y acertada, podemos definir ASP .NET como el entorno de desarrollo incluido
en la plataforma .NET de Microsoft, que nos permite desarrollar completas aplicaciones Web que se
ejecutarn sobre el entorno ofrecido por el .NET Framework. A lo largo de este texto iremos
descubriendo paso a paso las distintas posibilidades (que son bastante amplias) que nos ofrece ASP
.NET, apoyndonos siempre en la nueva herramienta de Microsoft Visual Studio 2005.
Una vez realizada una definicin ms o menos de lo que son las pginas ASP .NET volvamos en
concreto a tratar sobre la nueva versin de ASP .NET.
Esta nueva versin de ASP .NET no ofrece unos cambios tan profundos como supuso el cambio de
ASP 3.0 a ASP .NET 1.0, esta nueva versin de las pginas ASPX (as se denominan tambin a las
pginas ASP .NET, utilizando su extensin), es una evolucin lgica de ASP .NET 1.x (utilizamos 1.x
para referirnos a las dos versiones anteriores de ASP .NET la 1.0 y la 1.1)

lo

Por lo tanto ASP .NET 2.0 es la nueva versin que ofrece el .NET Framework para el desarrollo de
aplicaciones Web, ya sean basadas en Internet, Intranet o Extranet. Microsoft tambin ofrece una
nueva herramienta integral de desarrollo, Visual Studio 2005. Ser con esta herramienta con la que
desarrollaremos nuestras aplicaciones Web y por la tanto la comentaremos tambin en este texto.
Como curiosidad comentar al lector que la nueva versin del .NET Framework de Microsoft recibi
el nombre en clave (code-name) de Whidbey y la versin 2.0 de ASP .NET lleg a denominarse ASP
.NET Whidbey.

mp

No veremos Visual Studio 2005 de forma ntegra, slo veremos la parte que nos interese y que nos
afecte a la hora de desarrollar aplicaciones Web con ASP .NET 2.0. Esta parte de Visual Studio 2005
(VS 2005) se denomina Microsoft Visual Web Developer 2005. Esta nueva versin de Visual Studio
nos ofrece un entorno de desarrollo muy cmodo para crear nuestras aplicaciones Web a travs de
ayudas y asistentes.

Eje

Por lo tanto debido a todo lo anterior recomiendo al lector que para el correcto seguimiento del texto y
de los ejemplos que en el aparecen, instale en su equipo Visual Studio 2005, ya que esta ser nuestra
herramienta de trabajo. A lo largo del texto, segn sea conveniente, se comentar el uso de Visual
Studio 2005.
En este captulo, adems de realizar una introduccin a ASP .NET 2.0, tambin se comentarn las
novedades que presenta respecto a su versin anterior ASP .NET 1.x.

P g i n a | 11

tur
a

Lenguajes de programacin

ASP .NET 2.0 no es un lenguaje de programacin, es un entorno de programacin o tecnologa de


desarrollo, pero no es un lenguaje. De hecho ASP .NET soporta distintos lenguajes, en el presente
texto vamos a utilizar los lenguajes C# (CSharp) y Visual Basic .NET, ya que son los lenguajes ms
populares entre todos los que soportan las pginas ASP .NET.

ec

El cdigo intermedio es una caracterstica comn que poseen todas las tecnologas englobadas en la
estrategia .NET de Microsoft, a la que lgicamente pertenece ASP .NET. Las pginas ASP .NET
cuando reciben la primera peticin se compilan automticamente a un lenguaje intermedio que es
conocido como Common Language Runtime, es decir, es un lenguaje comn al que compilan todos
los lenguajes que utilicemos en nuestras pginas ASP .NET, generando el mismo cdigo, ya sea
Visual Basic .NET, C# o JScript. Gracias a esta caracterstica podemos obtener grandes ventajas en lo
que a rendimiento en tiempo de ejecucin se refiere, ya que la compilacin de las pginas slo se
produce en la primera peticin que se realiza sobre la pgina, o bien cuando el cdigo fuente de la
misma se ha modificado y necesita por lo tanto actualizarse, adems el resultado de esta compilacin
permanece en cach para poder ser reutilizada.

de
l

Los ejemplos de cdigo fuente que se mostraran en el texto se ofrecern tanto en C# como en VB
.NET. Suponemos que el lector conoce la sintaxis de alguno de estos dos lenguajes, ya que abordar un
lenguaje de programacin queda fuera de los objetivos de este texto, que como sabemos todos trata
sobre el desarrollo avanzado de aplicaciones Web con ASP .NET 2.0.
Las nuevas versiones de estos lenguajes que podemos encontrar dentro del .NET Framework 2.0 se
denominan Visual Basic 2005 y C# 2.0.

Recorrido por las distintas versiones de ASP

lo

Hasta la fecha nos encontramos con seis versiones de la tecnologa de las pginas activas de servidor de
Microsoft, es decir, de ASP (Active Server Pages). Vamos a realizar un recorrido histrico a travs de
ASP, desde ASP 1.0 hasta ASP .NET 2.0. Este apartado se puede tomar a modo de cultura general.

mp

La primera versin de las pginas activas (ASP 1.0), se incorpor como un aadido o ampliacin al
servidor Web del sistema operativo Microsoft Windows NT Server 4.0 llamado Internet Information
Server 3.0 (IIS 3.0). Este servidor Web era interesante pero todava era demasiado rudimentario y
presenta limitaciones y problemas.
La primera versin de ASP era bastante interesante ya que se pasaba de la complejidad de los CGIs
(Common Gateway Interface) a la sencillez de las pginas activas. ASP 1.0 supuso el inicio del
desarrollo de aplicaciones Web con productos basados en tecnologa Microsoft.

Eje

La versin 2.0 de Active Server Pages la encontramos en el servidor Web de Microsoft Internet
Information Server 4 (IIS 4), y en el servidor Personal Web Server 4 (PWS 4). Ambos servidores los
podamos instalar desde la extensin del sistema operativo de Windows NT denominada Windows NT
4.0 Option Pack, o ms comnmente Option Pack. Esta extensin del sistema operativo no slo era
aplicable a Windows NT, sino que tambin la podamos utilizar para Windows 95/98.
Se debe sealar que el servidor IIS 4 es el servidor Web para plataformas Windows NT Server 4.0, y
el servidor Personal Web Server 4.0 es el servidor Web para plataformas Windows 95/98 y Windows
NT Workstation 4.0.
IIS 4 adems de ofrecer la nueva versin de la tecnologa ASP permite configurar y administrar de
forma sencilla nuestras aplicaciones ASP. Adems la figura de la aplicacin ASP se encuentra mucho

P g i n a | 12

tur
a

ms clara que en la versin 1.0 de las pginas ASP, el servidor Web nos indicar claramente el alcance
de una aplicacin ASP determinada.
ASP 2.0 es una clara y necesaria evolucin de ASP 1.0 incorporando la posibilidad de realizar pginas
ASP transaccionales, aadiendo para ello un nuevo objeto integrado denominado ObjectConext
(objeto de contexto). ASP 2.0 ofrece un entorno ms robusto y potente que la versin anterior para el
desarrollo de aplicaciones Web.

ec

Ms tarde apareci ASP 3.0. Para poder utilizar ASP 3.0 tenemos que disponer de cualquiera de las
versiones del sistema operativo Windows 2000 (Professional, Server y Advanced Server). En este caso
no se trata nicamente de una nueva versin del servidor Web sino tambin de una nueva versin del
sistema operativo Windows.

ASP 3.0 se encuentra disponible dentro de Windows 2000 en cualquiera de sus versiones. Dentro de
Windows 2000 encontramos el componente Internet Information Services o Internet Information
Server, que como todos los lectores sospechan es la nueva versin del servidor Web de Microsoft
Internet Information Server. Al instalar Internet Information Services 5.0 (IIS 5.0) dotamos a nuestro
servidor de todas las funcionalidades de un potente servidor Web, y dentro de estas funcionalidades se
encuentra ASP 3.0.

de
l

ASP 3.0 podemos decir que es la evolucin lgica de ASP 2.0, no supone ningn cambio radical,
ofrece una serie de mejoras y novedades. Se aade un nuevo objeto integrado llamado ASPError,
este nuevo objeto es utilizado para el tratamiento de errores.
Y por fin llegamos a la aparicin del .NET Framework de Microsoft, que va a contener una nueva
versin de ASP, ASP .NET 1.0, en este caso los cambios respecto a ASP 3.0 si que son notables, tanto
que en muchos casos podemos considerar que se parecen en poco, ni siquiera podramos considerar
que se trata de ASP 4.0, ya que los cambios van ms all. ASP .NET plantea una nueva forma de
desarrollar aplicaciones Web dentro del entorno ofrecido por el .NET Framework. En resumen, una
nueva forma de programar aplicaciones Web.

lo

Con ASP .NET 1.0 aparece la herramienta de desarrollo Visual Studio 2002 que contiene la versin
del 1.0 .NET Framework.

mp

ASP .NET es completamente compatible con ASP, podemos tener aplicaciones Web basadas en ASP
y ASP .NET funcionando en el mismo servidor Web, que ser Internet Information Server 5.0, las
pginas ASP tienen la extensin .ASP y son procesadas por la DLL ASP.DLL y sin embargo las
pginas ASP .NET poseen la extensin .ASPX y son procesadas por el entorno de ejecucin .NET
Framework, que las transforma en el cdigo intermedio.
Como curiosidad comentar a los lectores que en las primeros pasos de la plataforma .NET (beta 1 y
versiones preliminares previas) ASP .NET se denominaba ASP+ y la propia plataforma posea la
denominacin de NGWS (New Generation Windows Services, Nueva Generacin de Servicios Windows) .

Eje

Despus apareci la versin 1.1 del .NET Framework y con el la nueva versin de las pginas ASPX,
ASP .NET 1.1, que como ocurra con ASP 2.0 y ASP 3.0, esta nueva versin incluye leves mejoras y
cambios. El Framework 1.1 aparece ya dentro del sistema operativo Windows 2003 Server y se instala
como una parte perfectamente integrada. Y dentro de este nuevo sistema operativo tenemos el servidor
Web IIS 6.0, que va a ser el encargado de albergar las aplicaciones Web basadas en ASP .NET.
Al igual que suceda en la versin anterior, tambin aparece una nueva versin de la herramienta de
desarrollo Visual Studio, en este caso se trata de la versin 2003.
Es ya con la nueva versin del Framework, la 2.0, cuando aparece ASP .NET 2.0, y al igual que
suceda con ASP 3.0 y ASP .NET 1.0, es perfectamente compatible con las versiones 1.x de las
pginas activas, lo nico que tenemos que hacer es instalar la nueva versin del Framework.

P g i n a | 13

de
l

ec

tur
a

Desde el propio servidor Web IIS 6.0, en el caso de Windows 2003 Server, y desde el servidor Web
IIS 5.1, en el caso del sistema operativo Windows XP Professional, a la hora de crear una aplicacin
Web nos permite indicar a que versin del Framework pertenece: a la 1.1 o a la 2.0, que se
corresponder con la versin de pginas ASPX. Esto lo podemos ver en la siguiente figura.

lo

Figura 1

Ms adelante, en el captulo correspondiente veremos como configurar y administrar una aplicacin


Web.

mp

Como se puede desprender de la figura anterior, en un mismo servidor Web pueden convivir sin
problemas las dos versiones del Framework, la 1.1 y la 2.0, lo mismo sucede con las herramientas de
desarrollo, en un mismo equipo puede estar instalado Visual Studio 2003 y Visual Studio 2005 sin
ningn tipo de problema ni incompatibilidad, incluso podramos tener instalado Visual Studio 6.0 con
Visual InterDev.
Y para terminar con el siguiente apartado, como es de suponer tambin tenemos una nueva versin de
la herramienta de desarrollo Visual Studio, que es la que vamos a utilizar en este texto y que no es otra
que la versin 2005.

Eje

Como ya se ha adelantado los cambios en esta nueva versin de ASP no son tan dramticos y
profundos como los que se dieron con el cambio de versin de ASP 3.0 a ASP .NET 1.0, los lectores
que conozcan ASP .NET 1.x lo tendrn bastante sencillo ya que la forma de desarrollar las
aplicaciones Web y su filosofa permanecen intactas, sin embargo nos encontraremos con un gran
nmero de mejoras y novedades.
Este captulo y el siguiente ser muy til para la audiencia conocedora de alguna versin previa de
ASP .NET, ya que en un rpido vistazo se de adelantarn todas las novedades, mejoras y cambios que
nos ofrece la nueva versin de ASP .NET. Y para los lectores que no conozcan nada de ASP .NET les
P g i n a | 14

tur
a

servir para empezar a ponerse en contacto con el desarrollo de aplicaciones Web y para ver algunas
de las funcionalidades que nos ofrece ASP .NET, que sern tratadas en mayor detalle a lo largo de los
distintos captulos de este texto.

ec

En este captulo se van a comentar las novedades que aporta ASP .NET 2.0 respecto a la versin 1.x,
apoyndose en el nuevo entorno .NET Framework 2.0, esta nueva versin de ASP .NET nos ofrece
unas potentes caractersticas a la hora de desarrollar aplicaciones Web, pasemos a ver las ms
destacadas. El lector no debe preocuparse si no entiende alguno de los conceptos que aqu se
comentan, ya que los veremos ms adelante con mayor profundidad, este apartado servir sobretodo a
aquellos lectores que ya conozcan ASP .NET 1.x, para ver de un simple vistazo las novedades ms
destacables de ASP .NET 2.0.

Nuevos controles Web de servidor

En esta nueva versin de ASP .NET se ofrecen un gran nmero de nuevos controles de servidor, que
se podrn utilizar para distintas tareas dentro del desarrollo de una aplicacin Web, tenemos desde
controles de acceso a datos hasta controles de navegacin.

lo

de
l

Para ver la gran cantidad de controles que ASP .NET pone a nuestra disposicin nicamente tenemos
que echar un vistazo al cuadro de herramientas de Visual Studio 2005. Podemos ver que aparecen un
gran nmero de ellos agrupados por categoras segn su funcionalidad. En la siguiente figura podemos
ver los grupos de controles de servidor que nos ofrece ASP .NET 2.0 desde VS 2005.

Figura 2

mp

No se trata nicamente de nuevos controles mejorados, sino que aparecen completas categoras de
controles nuevos como pueden ser los controles de inicio de sesin o los de navegacin (denominados
por VS 2005 de exploracin). Vamos a comentar brevemente las distintas categoras de nuevos
controles de ASP .NET 2.0.

Controles Web de datos

Eje

El acceso a datos desde ASP .NET 2.0 ahora se puede realizar en unos pocos pasos de manera muy
sencilla, sin la necesidad de escribir ni una sola lnea de cdigo, haciendo uso nicamente de los
nuevos controles de acceso a datos. Dentro de estos controles hay dos grupos bien diferenciados, los
que nos ofrecen la conexin con las fuentes de datos, denominados controles de fuente u origen de
datos (data source controls), como podra ser el control SqlDataSource, y los que nos ofrecen un
interfaz de usuario para representar grficamente los datos, denominados controles conectados a datos
(data bound controls), como puede ser el control GridView.

P g i n a | 15

tur
a

ASP .NET 2.0 nos ofrece cinco controles Web de origen de datos, cada uno ser utilizado para un tipo
especfico de acceso a datos. A continuacin los comentamos brevemente:

SqlDataSource: este control Web nos provee acceso a cualquier fuente de datos de ADO
.NET, como puede ser una base de datos en SQL Server, OLEDB, Oracle y ODBC, incluso se
puede acceder a bases de datos de Access utilizando el proveedor Microsoft Jet 4.0 de
OLEDB, aunque como veremos existe un control de origen de datos especfico para esta
tarea.

AccessDataSource: se trata del control Web especfico para ofrecer una conexin a una
base de datos de Access. Este control hereda del anterior.

ObjectDataSource: este otro control representa al conexin a objetos de negocio u otras


clases que van a devolver datos. La sintaxis de este control es muy similar al control
SqlDataSource, en lugar de utilizar una cadena de conexin, utilizar un nombre de una
clase que ser de dnde va a extraer los datos.

XmlDataSource: este control se encuentra asociado a los controles de navegacin, y nos


ofrece el acceso a ficheros XML.

SiteMapDataSource: este ltimo control de origen de datos tambin se utiliza con los
controles de navegacin, y lo que nos ofrece es el acceso a la estructura del sitio Web a travs
del fichero del mapa del sitio Web (fichero .sitemap).

de
l

ec

El segundo grupo de controles Web de datos son los controles enlazados a datos, este grupo de
controles van a hacer uso de los controles de origen de datos para mostrar la informacin, es decir, los
controles enlazados o conectados a datos nos van a ofrecer el interfaz para presentar de forma intuitiva
al usuario los datos provenientes de los orgenes de datos correspondientes, tambin van a permitir
que el usuario final pueda interactuar con dichos datos ya sea para consultarlos, modificarlos,
eliminarlos o aadir nuevos datos
A continuacin pasamos a describir brevemente los controles enlazados a datos que nos ofrece ASP
.NET 2.0, para que el lector tenga una visin general de los mismos.
Repeater: este control muestra elementos de datos en una lista, por s slo no genera una
salida visible para el usuario, para que sea visible se debe utilizar junto con las plantillas. Este
control ya exista en ASP .NET 1.x.

DataList: similar al control anterior pero permite una mayor personalizacin a la hora de
mostrar la informacin en forma de lista. Tambin permite la seleccin y edicin de
elementos. Tambin debe utilizarse junto con las plantillas y ya exista en las versiones
anteriores de ASP .NET.

mp

lo

GridView: este control muestra la informacin en forma de tabla con celdas y columnas,
generando el cdigo HTML equivalente a una tabla. Es el ms complejo de los controles
enlazados a datos ofreciendo un alto grado de personalizacin y una serie de caractersticas
muy interesantes como pueden ser la ordenacin, paginacin, definicin de columnas, edicin,
etc., este control en nuevo en ASP .NET 2.0, y viene a sustituir al antiguo DataGrid de ASP
.NET 1.x.

DetailsView: este control tambin es nuevo en ASP .NET 2.0 y representa un registro de
datos cada vez, opcionalmente nos permite ir navegando entre registros. Se utiliza en
escenarios de maestro/detalle y tambin es utilizado para editar registros existentes y para
crear nuevos registros.

FormView: este control tambin aparece en la versin 2.0 de ASP .NET, y sus funciones son
muy similares a las del control DetailsView, la diferencia respecto al anterior control es
que permite una mayor personalizacin a travs del mecanismo de plantillas.

Eje

P g i n a | 16

tur
a

Los controles enlazados a datos se relacionan de una forma muy sencilla con los controles de origen
de datos, simplemente asignando a su propiedad DataSourceId el nombre del control de origen de
datos.

Vamos a empezar a incluir algunos ejemplos de cdigo fuente para que el desarrollo del presente
captulo sea ms ameno y no quede nicamente en la mera teora y en una enumeracin de novedades.
En este primer ejemplo vamos a mostrar la utilizacin del control enlazado a datos Repeater. Este
control es uno de los controles enlazados a datos ms sencillo, no ofrece ningn tipo de salida por si
slo, se debe indicar de forma explcita todo el cdigo HTML que deseemos utilizar para presentar los
datos, debido a que no genera ninguna salida, es necesario utilizar como mnimo una plantilla
ItemTemplate.

ec

En este ejemplo, que resulta muy sencillo, se anan los aspectos principales de los controles Web de
datos de ASP .NET: la utilizacin de plantillas y Data Binding y controles enlazados a datos en los
que su fuente de datos es un control de origen de datos.

de
l

En este caso el origen de datos es un control SqlDataSource que realiza una sentencia Select
especificada en su propiedad SelectCommand. El enlace entre el control Repeater y
SqlDataSource se realiza a travs de la propiedad DataSourceId del control Repeater.
Se ha utilizado una plantilla de cabecera de la informacin (HeaderTemplate) para definir la
cabecera de una tabla, otra de pie (FooterTemplate) para cerrar la definicin de la tabla definida
en la plantilla HeaderTemplate. Otra plantilla ms para definir el aspecto de cada elemento
(ItemTemplate), en este caso se define como va a ser cada fila de la tabla y una plantilla muy
similar que define un aspecto para elementos alternos (AlternatingItemTemplate), es decir, el
aspecto de las filas alternas de la tabla.

mp

lo

Y en lo referente al mecanismo de Data Binding podemos comentar que en la plantilla


<ItemTemplate> se ha utilizado el mtodo Eval() y en la plantilla
<AlternatingItemTemplate> se ha utilizado el mtodo DataBinder.Eval(), ambos son
equivalentes, la diferencia es que el mtodo Eval() aparece en ASP .NET 2.0 como una versin
reducida del mtodo DataBinder.Eval(), sin la necesidad de tener que especificar el elemento
Container.DataItem, con el mtodo Eval() indicamos directamente el nombre del campo en
el que se encuentran los datos que deseamos mostrar. El mtodo Eval() se podr utilizar nicamente
dentro de plantillas. La cadena que especifica el formato de salida debe tener los corchetes {} y entre
ellos una expresin que define el formato correspondiente, en este ejemplo se ha indicado un formato
de fecha y un formato monetario. Todo esto lo podemos apreciar en el Cdigo fuente 1.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="EjemploVB6.aspx.vb"
Inherits="EjemploVB6" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Eje

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Pgina sin ttulo</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1">
<HeaderTemplate>
<table width="100%" style="font: 8pt verdana">
<tr bgcolor="#cccccc">
<th>Curso</th>
<th>Fecha inicio</th>
<th>Precio</th>
</tr>

P g i n a | 17

tur
a

</HeaderTemplate>

<ItemTemplate>
<tr bgcolor="#ccff99">
<td><%#Eval("curso")%></td>
<td align="right"><%#Eval("fhini", "{0:D}")%></td>
<td align="right"><%#Eval("precio", "{0:f} ") %></td>
</tr>
</ItemTemplate>

</asp:Repeater>

de
l

<FooterTemplate>
</table>
</FooterTemplate>

ec

<AlternatingItemTemplate>
<tr bgcolor="#ccff00">
<td><%#Databinder.Eval(Container.DataItem,"curso")%></td>
<td align="right">
<%#DataBinder.Eval(Container.DataItem, "fhini", "{0:D}")%></td>
<td align="right">
<%#Databinder.Eval(Container.DataItem,"precio", "{0:f} ") %></td>
</tr>
</AlternatingItemTemplate>

<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data


Source=.\SQLEXPRESS;Initial Catalog=BDPruebas;Integrated
Security=True;Pooling=False" ProviderName="System.Data.SqlClient"
SelectCommand="SELECT * FROM Cursos ORDER BY Curso">
</asp:SqlDataSource>
</form>
</body>
</html>
Cdigo fuente 1

Eje

mp

lo

En la Figura 3 podemos ver el resultado de la ejecucin de la pgina ASPX del ejemplo.

Figura 3

Antes de pasar al siguiente grupo de controles que nos ofrece ASP .NET 2.0, vamos a mostrar un
ejemplo ms de los controles Web de datos. En concreto vamos a ver la conexin entre los dos nuevos
controles DetailsView y GridView.

Un uso muy comn del control DetailsView, va a ser utilizarlo en escenarios de listado de datos
maestro/detalle. En este caso tendremos que utilizar el control DetailsView en conexin con el
control GridView.
P g i n a | 18

tur
a

Al seleccionar una de las filas del control GridView, se cargar el registro completo que le
corresponde a la fila seleccionada en el control DetailsView que le hayamos asociado. La forma de
asociar el control DetailsView con el control GridView es a travs del control
SqlDataSource que hace las funciones del origen de datos del control DetailsView. Veamos
como hacerlo.

ec

En el control SqlDataSource utilizamos un filtro sobre los datos, es decir, se va a hacer uso de un
parmetro para la sentencia Select, y adems este parmetro ser el valor que se ha seleccionado del
control GridView. El tipo de este parmetro ser ControlParameter, y en sus propiedades
ControlId especificaremos el nombre del control GridView, y en la propiedad PropertyName
le indicaremos el valor SelectedValue. Es decir, le estamos indicando al control
SqlDataSource que el parmetro que le vamos a indicar al filtro viene de la propiedad
SelectedValue de un control GridView.

mp

lo

de
l

En la Figura 4 se puede ver la forma en la que se ha definido el filtro para el control


SqlDataSource que hace las funciones de fuente de datos para el control DetailsView, dnde
tabla es el identificador del control GridView.

Figura 4

Eje

Lgicamente el control GridView tendr su propio control de origen de datos asociado. El control
GridView deber presentar tambin una columna CommandField que permita la seleccin de una
fila de los datos, por lo que deber asignarse el valor True a su propiedad ShowSelectButton.
Tambin se ha definido un estilo para indicar la fila que se ha seleccionado.
En el Cdigo fuente 2 se muestra la forma de conectar el control DetailsView con el control
GridView. Ambos controles se han incluido dentro de una tabla de HTML para mostrarse en la
pgina uno al lado del otro. En un primer momento el control DetailsView no va a mostrar ningn
dato ya que no se ha seleccionado ninguna fila del control GridView, en el momento que se
seleccione una fila se mostrarn los detalles del registro correspondiente.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="EjemploVB3.aspx.vb"
Inherits="EjemploVB3" %>

P g i n a | 19

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Pgina sin ttulo</title>
</head>
<body>
<form id="form1" runat="server">
<table><tr><td valign="top">

tur
a

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

ec

<asp:GridView ID="tabla" runat="server" DataSourceID="SqlDataSource1"


AutoGenerateColumns="False" DataKeyNames="idlibro">
<SelectedRowStyle BackColor="Beige" ForeColor="red" />
<Columns>
<asp:CommandField ShowSelectButton="true" ButtonType="Image"
SelectImageUrl="~/sel.gif" />
<asp:BoundField DataField="idlibro" HeaderText="Cdigo"/>
<asp:BoundField DataField="titulo" HeaderText="Ttulo"/>
</Columns>
</asp:GridView>

</td><td valign="top">

de
l

<asp:SqlDataSource ID="SqlDataSource1" runat="server"


ConnectionString="<%$ ConnectionStrings:BDPruebasConnectionString %>"
SelectCommand="SELECT * FROM [libros]">
</asp:SqlDataSource>

mp

lo

<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="100%"


AutoGenerateRows="False" DataKeyNames="idlibro" DataSourceID="SqlDataSource2">
<Fields>
<asp:BoundField DataField="idlibro" HeaderText="idlibro"
ReadOnly="True" SortExpression="idlibro" />
<asp:BoundField DataField="titulo" HeaderText="titulo"
SortExpression="titulo" />
<asp:BoundField DataField="unidades" HeaderText="unidades"
SortExpression="unidades" DataFormatString="{0:#,#}"
HtmlEncode="False"/>
<asp:BoundField DataField="fecha" HeaderText="fecha"
SortExpression="fecha" DataFormatString="{0:d}"
HtmlEncode="False"/>
<asp:BoundField DataField="ventas" HeaderText="ventas"
SortExpression="ventas" DataFormatString="{0:#,#}"
HtmlEncode="False"/>
<asp:BoundField DataField="precio" HeaderText="precio"
SortExpression="precio" DataFormatString="{0:0#.00}"
HtmlEncode="False"/>
</Fields>
</asp:DetailsView>

Eje

<asp:SqlDataSource ID="SqlDataSource2" runat="server"


ConnectionString="<%$ ConnectionStrings:BDPruebasConnectionString %>"
SelectCommand="SELECT * FROM [libros] WHERE ([idlibro] = @idlibro)">
<SelectParameters>
<asp:ControlParameter ControlID="tabla" Name="idlibro"
PropertyName="SelectedValue" Type="Int16" />
</SelectParameters>
</asp:SqlDataSource>

</td></tr></table>
</form>
</body>
</html>

Cdigo fuente 2

En la Figura 5 se puede ver un ejemplo de ejecucin de esta pgina ASPX.


P g i n a | 20

tur
a
ec

Figura 5

de
l

Controles Web de navegacin

En la versin 1.x de ASP .NET ya existan los controles de acceso a datos, en ASP .NET 2.0 aparecen
nuevos controles, pero ya exista esta categora, sien embargo, una categora completamente nueva son
los controles de navegacin. Los controles de navegacin ofrecen un interfaz de usuario que permite la
navegacin a travs de las distintas pginas de un sitio Web as como la presentacin de la
informacin de forma jerrquica. Un ejemplo de estos controles es el nuevo control SiteMapPath,
que nos permite navegar entre pginas, y el control TreeView, que muestra la informacin de forma
jerrquica organizada en hojas, otro control de navegacin sera el control Menu, que nos permite
construir mens navegables.

lo

Para trabajar de forma ms rpida y sencilla con los controles Web de navegacin o exploracin,
tendremos que hacer uso de un fichero especial que va a definir la estructura, el mapa, de nuestro sitio
Web.

mp

Este fichero va a indicar como se relacionan unas pginas con otras dentro del sitio Web. El fichero
del mapa o estructura del sitio Web est estructurado en formato XML. Solo puede existir un fichero
de este tipo dentro de una aplicacin.
El fichero de mapa del sitio Web ser utilizado directamente por los controles SiteMapPath y
SiteMapDataSource, e indirectamente a travs del control SiteMapDataSource, por los
controles TreeView y Menu.

Eje

Para agregar un fichero de mapa de sitio Web a nuestro sitio Web dentro de Visual Studio 2005,
deberemos pulsar con el botn derecho del ratn sobre la solucin, dentro del explorador de
soluciones, y seleccionar la opcin Agregar Nuevo elemento. En la ventana que aparece se muestran
todos los elementos que podemos aadir a la solucin, en este caso seleccionaremos el elemento Mapa
del sitio, y lo dejaremos con su nombre por defecto Web.sitemap. Al pulsar el botn Agregar se
aadir el mapa del sitio a la solucin.
El primer elemento del mapa del sitio va a ser el elemento <siteMap>, que va a ser la raz de toda la
estructura del documento XML, y slo podr existir uno de estos elementos.
Para cada pgina del sitio Web existir un elemento <siteMapNode> dentro del mapa del sitio.
Estos elementos se tendrn que ir anidando segn la estructura del sitio Web, as por ejemplo si
queremos definir una pgina principal para todo del sitio Web, y que todas las dems pginas se
P g i n a | 21

tur
a

encuentren por debajo de la pgina principal, tendremos que definir un elemento <siteMapNode>
que incluya a todos los dems, ya que sern pginas hijas de la anterior. Cada una de las pginas que
forman parte de la estructura del sitio Web se las denomina nodos.

La idea es construir una estructura jerrquica de pginas. Esto lo veremos ms claro en el siguiente
ejemplo que se mostrar de un mapa de un sitio Web que va a corresponder con el de un supermercado
online.
El elemento <siteMapNode> presenta los siguientes atributos:

title: este atributo representa el ttulo del enlace, la cadena utilizada se mostrar como texto
del enlace que se corresponda con la pgina.

description: la descripcin que indiquemos en este atributo ser utilizada para la


propiedad ToolTip del enlace que se generar.

url: en este atributo se indicar la direccin en la que se encuentra la pgina dentro del sitio
Web. Esta direccin siempre ser relativa.

ec

mp

lo

Inicio
---Alimentacin
------Carnes
------Pescados
------Frutas y verduras
------Congelados
---------Platos precocinados
---------Helados
---------Pizzas
---Droguera
------Productos limpieza
------Aseo personal
---Bebidas
-----Alcohlicas
-----No alcohlicas

de
l

A continuacin vamos a crear un mapa de un sitio para un caso concreto de ejemplo, en este caso se
quiere definir un fichero Web.sitemap para un sitio Web que contiene un supermercado online.
Supongamos que deseamos que nuestro sitio Web tenga la siguiente estructura.

Como podemos observar tenemos una pgina de inicio que ser la raz del sitio Web, de esta forma el
elemento <siteMapNode> que se corresponda con la pgina Inicio deber contener a los dems
elementos <siteMapNode>. Segn la estructura anterior deberamos tener un mapa de sitio Web tal
como el que aparece en el Cdigo fuente 3.

Eje

<?xml version="1.0" encoding="utf-8" ?>


<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
<siteMapNode url="Inicio.aspx" title="Inicio" description="Pgina de inicio">
<siteMapNode url="Alimentacion.aspx" title="Alimentacin"
description="Productos de alimentacin">
<siteMapNode url="Carnes.aspx" title="Carnes"
description="Productos crnicos" />
<siteMapNode url="Pescados.aspx" title="Pescados"
description="Productos de pescadera" />
<siteMapNode url="Congelados.aspx" title="Congelados"
description="Productos congelados">

P g i n a | 22

de
l

ec

tur
a

<siteMapNode url="PlatosPrecocinados.aspx" title="Platos precocinados"


description="Platos precocinados y especialidades" />
<siteMapNode url="Helados.aspx" title="Helados"
description="Helados y tartas heladas" />
<siteMapNode url="Pizzas.aspx" title="Pizzas"
description="Pizzas y pastas congeladas" />
</siteMapNode>
</siteMapNode>
<siteMapNode url="Drogueria.aspx" title="Droguera"
description="Productos de droguera">
<siteMapNode url="Limpieza.aspx" title="Productos de limpieza"
description="Productos de limpieza" />
<siteMapNode url="Aseo.aspx" title="Aseo personal"
description="Aseo personal, perfumes y colonias" />
</siteMapNode>
<siteMapNode url="Bebidas.aspx" title="Bebidas"
description="Bebidas y refrescos">
<siteMapNode url="Alcoholicas.aspx" title="Alcohlicas"
description="Bebidas alcohlicas" />
<siteMapNode url="NoAlcoholicas.aspx" title="No alcohlicas"
description="Bebidas no alcohlicas (zumos y refrescos)" />
</siteMapNode>
</siteMapNode>
</siteMap>
Cdigo fuente 3

A continuacin vamos a pasar a comentar brevemente los distintos controles que aparecen en este
nuevo grupo.
SiteMapPath: este control se alimenta directamente de los datos en XML indicados en el
fichero Web.sitemap, no necesita de un proveedor intermedio, como si sucede con los otros
dos controles de navegacin, el control TreeView y Menu. La funcin de este control es la
de indicar en que lugar exacto de la estructura del sitio Web nos encontramos actualmente,
adems de ofrecernos un sistema de navegacin de forma automtica, ya que, como hemos
dicho, lee directamente los datos del mapa del sitio y los interpreta, generando de forma
dinmica los enlaces que nos permiten navegar a travs de las distintas pginas que conforman
la estructura del sitio Web. Los enlaces se generan siguiendo una estructura lineal y utilizando
un separador. Estos enlaces se generan de forma dinmica a partir del fichero
Web.sitemap, y variarn segn en la pgina ASPX en la que nos encontremos en cada
momento. As si tenemos en cuenta el mapa de sitio Web definido anteriormente, y aadimos
un control SiteMapPath en la pgina Helados.aspx, obtendramos como resultado un
sistema de navegacin como el de la Figura 6.

Eje

mp

lo

Figura 6

TreeView: en este caso el acceso a la estructura del sitio Web definida por el fichero
Web.sitemap, no se realiza directamente, tal como hacamos en el caso del control
SiteMapPath, sino que se tiene que hacer a travs de un proveedor de fuente de datos, es
decir, ya no existe un vnculo directo entre el control de navegacin y el mapa del sitio Web.
P g i n a | 23

tur
a

El control TreeView posee un uso ms general, no slo para la navegacin dentro de un sitio
Web, sino que podremos utilizar el control TreeView para mostrar informacin de forma
jerrquica y de forma muy intuitiva para el usuario, ya que muestra la informacin en
estructura de rbol, como su propio nombre indica. El proveedor de fuente de datos que vamos
a utilizar para establecer el enlace con el fichero del mapa del sitio Web, es el control llamado
SiteMapDataSource.
Menu: este control va a ser utilizado para ofrecer un gran nmero de opciones de navegacin
al usuario mediante un men. El men suele constar de una serie de opciones que siempre son
visibles y al situarnos sobre ellas se van mostrando las subopciones que se encuentran dentro
de una opcin principal.

ec

Veamos en accin estos controles Web de navegacin. En primer lugar vamos a ver un ejemplo muy
sencillo de utilizacin del control Menu. En este ejemplo y en el siguiente vamos a utilizar el fichero
de mapa del sitio Web visto anteriormente. En el Cdigo fuente 4 se puede ver la utilizacin del
control Menu.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="EjemploVB5.aspx.vb"
Inherits="EjemploVB5" %>

de
l

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Pgina sin ttulo</title>
</head>
<body>
<form id="form1" runat="server">
<asp:Menu ID="Menu1" runat="server" DataSourceID="SiteMapDataSource1">
</asp:Menu>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
</form>
</body>
</html>

lo

Cdigo fuente 4

Como se puede ver el control de fuente de datos SiteMapDataSource, se utiliza indicando en la


propiedad DataSourceId el nombre del control SiteMapDataSource.

mp

Cada opcin del control Menu, cuando se utiliza la fuente de datos SiteMapDataSource, se
corresponde con un enlace a una pgina dentro de la estructura del mapa del sitio Web.
En la Figura 7 se puede ver el aspecto del control Menu, segn nos vamos posicionando con el
puntero del ratn en las distintas opciones se van abriendo las subopciones, si una opcin tiene
subopciones en su interior aparece un icono de un tringulo para indicarlo. Por defecto la distribucin
de las distintas opciones del control Menu es vertical y como se puede apreciar en el ejemplo, en un
primer momento slo aparece la opcin principal Inicio.

Eje

El control Menu posee elementos estticos y dinmicos, en este caso el elemento esttico es la opcin
Inicio que siempre aparece cuando se genera la pgina, y los elementos estticos son los que van
apareciendo segn nos vamos situando con el puntero del ratn.

P g i n a | 24

tur
a
ec

Figura 7

Ahora veremos en accin un control TreeView para mostrar el mapa del sitio Web en la estructura
de rbol. Vamos a seguir con el ejemplo del supermercado y con el mismo fichero Web.sitemap.

de
l

Antes de aadir el control TreeView, recordemos que tenemos que incluir el control
SiteMapDataSource, para poder acceder al mapa del sitio Web que tenemos definido en el
archivo Web.sitemap.
Una vez aadido el control de fuente de datos, ya estamos en disposicin de aadir el control
TreeView. Ahora nos queda conectar el control TreeView con el control
SiteMapDataSource, esto lo haremos a travs de la propiedad DataSourceId del control
TreeView, a esta propiedad le asignaremos el nombre del control SiteMapDataSource.
El Cdigo fuente 5 sera el cdigo de la pgina ASPX que mostrara el mapa del sitio Web dentro de
un control TreeView.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Limpieza.aspx.vb"
Inherits="Limpieza" %>

lo

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"


"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Eje

mp

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Pgina sin ttulo</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TreeView ID="TreeView1" runat="server"
DataSourceId="SiteMapDataSource1">
</asp:TreeView>
<asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />
</div>
</form>
</body>
</html>
Cdigo fuente 5

La Figura 8 mostrara el resultado de la ejecucin de esta pgina. Ahora la pgina en la que se muestra
el control TreeView no interviene en la forma en la que se muestra la informacin, tal como suceda
con el control SiteMapPath. Lo que si sucede es que cada uno de los nodos hoja (nodos finales) del
rbol se corresponde con una de las pginas definidas en el mapa del sitio Web, cada nodo hoja es un
enlace a la pgina que representa, y al pulsar sobre cada uno de estos nodos, el navegador nos llevar a
la pgina correspondiente.
P g i n a | 25

tur
a
ec
de
l
Figura 8

Controles Web de inicio de sesin

lo

Tambin aparece una nueva categora de controles llamada de inicio de sesin, estos controles nos van
a ofrecer un interfaz y funcionalidad para realizar labores de autenticacin y autorizacin dentro de
nuestro sitio Web. Dentro de este grupo tenemos por ejemplo, el control Login que nos ofrece un
interfaz grfico consistente en las cajas de texto y botones para indicar un nombre de usuario y una
contrasea, y el control ChangePassword que nos provee de un formulario para realizar el cambio
de contrasea.
Estos controles no van a ofrecer nicamente un interfaz, sino que tambin ofrecen un gran nmero de
funcionalidades, que estn estrechamente relacionadas con las tareas propias de la autenticacin y
autorizacin de usuarios.

mp

El proceso de autenticacin es el que determina la identidad del usuario, una vez que el usuario se ha
autenticado el siguiente paso ser comprobar si tiene la autorizacin necesaria para acceder a un
recurso determinado, como puede ser una pgina ASPX.
El proceso de autenticacin est implementado en ASP .NET mediante el servicio de pertenencia a
grupo (Membership), y el proceso de autorizacin mediante el servicio gestor de roles (RoleManager).
Y los controles de inicio de sesin, nos ofrecen una serie de funcionalidades, apoyndose en estos dos
nuevos servicios de ASP .NET 2.0, para que podamos realizar tareas de autenticacin y autorizacin
de usuarios en nuestras aplicaciones Web de forma muy sencilla.

Eje

A continuacin vamos a describir brevemente los distintos controles de inicio de sesin que nos ofrece
ASP .NET para realizar las tareas de autenticacin y autorizacin dentro de nuestras aplicaciones
Web, junto con esta descripcin se ofrece una figura con el aspecto bsico que tienen estos controles
en la vista de diseo de VS 2005.

CreateUserWizard: este control hereda del control nuevo control Web estndar Wizard
y nos ofrece la posibilidad de aadir un nuevo usuario a la aplicacin Web. Basndose en el
servicio de pertenencia a grupo aadir un nuevo usuario al almacn de datos del servicio. Por
P g i n a | 26

de
l

ec

tur
a

defecto se utilizar el proveedor AspNetSqlMembershipProvider y se aadir el


nuevo usuario a una base de datos SQL Server 2005 Express. Debido a que hereda del control
Wizard, podemos utilizar este control para crear un usuario en un solo paso o bien, utilizar
varios pasos. Por defecto nos solicita los datos del usuario que deseamos dar de alta en un
nico paso, y luego se muestra un segundo paso en el que se informa del xito de nuestra
operacin de insercin. Este control ser imprescindible para realizar el proceso de alta de
nuevos usuarios dentro de nuestra aplicacin Web.

Figura 9

Login: este control lo vamos a utilizar para autenticar un usuario, que ya ha sido creado
previamente, en nuestro sitio Web. Este control utilizar internamente la clase Membership
para autenticar el usuario en el servicio de pertenencia a grupo. Este control se utilizar
normalmente en la pgina de inicio de sesin de nuestra aplicacin Web.

mp

lo

ChangePassword: este control de inicio de sesin permite modificar la contrasea a un


usuario ya dado de alta, que ya se encuentra autenticado en la aplicacin Web. Para cambiar
la contrasea se pide una confirmacin de la antigua contrasea del usuario. Este control
comprobar la correspondencia de contraseas, y en el caso de que sea correcta, se modificar
la contrasea del usuario. Adems se mostrar al usuario un mensaje indicando que la
operacin de cambio de contrasea se ha llevado a cabo con xito.

Eje

Figura 10

P g i n a | 27

ec

PasswordRecovery: este otro control tambin nos va a permitir gestionar las contraseas,
en este caso su funcin es la de enviar al usuario, va correo electrnico, su contrasea actual.
Este control se utiliza cuando el usuario ha olvidado su contrasea, y le pedir su nombre de
usuario y una respuesta a una pregunta secreta, si es que tenemos ese tipo de configuracin en
nuestro servicio de pertenencia a grupo. Para utilizar este control, no es necesario que el
usuario se encuentre autenticado en la aplicacin Web. Tambin veremos que mediante este
control se puede cambiar tambin la contrasea del usuario segn la configuracin que
tengamos.

de
l

tur
a

Figura 11

Figura 12

LoginStatus: este control detecta automticamente el estado de autenticacin en el que se


encuentra el usuario, y muestra un control LinkButton que permitir al usuario iniciar la
sesin o bien cerrar la sesin con la aplicacin Web, segn se encuentre autenticado o no
respectivamente.

lo

Figura 13

mp

Figura 14

LoginView: en este caso este control adems de utilizar la clase Membership del servicio
de pertenencia a grupo, tambin har uso de la clase Roles del servicio gestor de perfiles.
Segn el rol al que pertenezca el usuario actual, este control mostrar unos contenidos u otros,
basndose en el, ya conocido por todos, mecanismo de plantillas (templates). Por defecto,
como se puede ver en la Figura 15, este control no tiene una representacin grfica, la tendr
cuando indiquemos una plantilla para el mismo. Este ser el nico control Web de inicio de
sesin que haga uso del servicio gestor de roles.

Eje

LoginName: mostrar el nombre del usuario que se encuentra conectado actualmente a la


aplicacin Web. Si el usuario se encuentra autenticado mostrar su nombre (identificador o
login), en caso contrario no mostrar nada.

P g i n a | 28

WebParts

tur
a

Figura 15

ec

El grupo de controles llamado Elementos Web tambin podemos encontrarlo por su nomenclatura en
ingls, que suele ser ms comn, se trata de los controles WebPart. Estos son unos controles de
servidor bastante potentes que permiten al usuario del sitio Web personalizar el aspecto y distribucin
del mismo, estos controles son utilizados en aplicaciones Web de tipo portal para que el usuario tenga
una experiencia completamente personalizada del sitio Web. Por lo tanto el usuario podr modificar en
tiempo de ejecucin las propiedades de los controles WebPart.

de
l

Adems cuando el usuario regrese al sitio Web lo encontrar de la misma forma que lo dej, y cada
usuario tendr su propia personalizacin del sitio Web.
Las operaciones que el usuario puede realizar sobre los controles WebPart vienen determinados por el
modo que se define para el control WebPartManager , que ser el gestor de todos los controles
WebPart de la pgina, y que se har a travs de su propiedad DisplayMode. Este control puede
presentar los siguientes modos:
Normal (BrowseDisplayMode): es el modo de navegacin y la pgina ASPX se presenta
como una pgina normal, sin que el usuario pueda editar las propiedades de los controles
WebParts o bien moverlos por la pgina y cambiarlos de posicin. Ni siquiera aparecen
destacados los controles WebPartZone, que son los que indican cada una de las secciones o
zonas en las que se divide la pgina. Aunque lo que si podremos hacer ser minimizar,
maximizar y cerrar los elementos WebPart presentes en la pgina. Este es el modo por defecto
que ofrece la propiedad DisplayMode del control WebPartManager.

Edicin (EditDisplayMode): en este modo se nos permite editar una serie de propiedades
que pueden mostrar los controles WebParts. Estas propiedades pueden ser, entre otras, el ttulo
del control WebPart, el color, la forma en la que se presenta por defecto, etc.

Diseo (DesignDisplayMode): en el modo de diseo el usuario podr mover los controles


WebPart de una seccin a otra y tambin cambiar el orden de los mismos, arrastrndolos
segn convenga en cada caso. La posibilidad de arrastrar y soltar los controles WebPart,
tambin se encuentra disponibles en el modo anterior, y en el modo de catlogo que vamos a
ver a continuacin.

mp

lo

Catlogo (CatalogDisplayMode): en este modo el usuario podr agregar a la pgina


controles WebPart que he eliminado de la misma, e incluso controles que no existen.

Eje

Veamos brevemente los principales controles que podemos encontrar dentro de esta nueva categora
que nos ofrece ASP .NET 2.0.

WebPartManager: este control va a ser el encargado de gestionar las distintas zonas en las
que se van a encontrar los distintos controles WebParts. Este control no va a tener un aspecto
visual, pero siempre ser necesario que exista un control de este tipo para poder utilizar lo que
se denomina el Framework de portal, que es la parte del .NET Framework que implementa el
mecanismo de WebParts.

WebPartZone: este control define las zonas en las que se van a distribuir los controles
WebParts dentro de la pgina ASPX correspondiente. Estos controles definen reas de
P g i n a | 29

tur
a

contenidos que sern gestionadas por el control WebPartManager presente tambin en la


pgina ASPX. En el momento que aadimos un control Web, sea del tipo que sea, a un control
WebPartZone se convierte de forma automtica en un control WebPart, sin que tengamos
que hacer nada especial.
CatalogZone: este control va a permitir aadir al usuario controles WebPart a la pgina
ASPX. Al aadir un control de este tipo se podr pasar al modo catlogo, que permite aadir
los elementos que se han ido eliminando de la pgina.

PageCatalogPart: un control CatalogZone no tiene sentido hasta que no se le aade


un control PageCatalogPart. Este control ser el que permite mostrar al control
CatalogZone todos los controles WebParts que se han eliminado de la pgina ASPX, para
que el usuario los seleccione y aada a la zona deseada.

EditorZone: este control tambin resulta muy interesante, ya que nos permite editar las
propiedades de los distintos controles WebPart presentes en la pgina ASPX. Este control se
podr utilizar nicamente en el modo de edicin.

BehaviorEditorPart: este control se utiliza en combinacin con el anterior, ya que al


arrastrar un control BehaviorEditorPart en un control EditorZone, le estamos
indicando al Portal Framework que se va a poder editar una serie de propiedades relacionadas
con el comportamiento del control, como pueden ser: permitir cerrar, ocultar, cambiar de zona,
etc.

LayoutEditorPart: este control se encuentra relacionado con los dos anteriores, y lo que
permite modificar al usuario es el diseo del control. Algunas de las propiedades que se
pueden editar mediante este control es la zona a la que pertenecen y el orden de posicin que
presentan dentro de la misma.

ApareanceEditorPart: al igual que los dos controles anteriores, utilizado conjuntamente


con el control EditorZone, nos va a permitir modificar algn aspecto de los controles
WebPart de nuestra pgina ASPX, en este caso nos permitir modificar una serie de
propiedades relacionadas con la apariencia de los controles WebParts. Algunas de las
propiedades que podr editar el usuario son: el tamao (ancho y alto) y el ttulo de los
controles WebPart.

lo

de
l

ec

mp

Todos estos controles, y otros ms, los veremos con ms detalle en este texto, en el captulo
correspondiente en el que se tratar el Portal Framework y todo lo relacionado con los controles
WebParts.
Como anticipo se muestra el Cdigo fuente 6 que se corresponde con una pgina ASPX que hace uso
de los distintos controles WebPart que se acaban de describir. En negrita se destacan los elementos
ms importantes de la pgina ASPX.
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb"
Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Eje

<html xmlns="http://www.w3.org/1999/xhtml" >


<head runat="server">
<title>Pgina sin ttulo</title>
</head>
<body>
<form id="form1" runat="server">
<asp:WebPartManager ID="WebPartManager1" runat="server">
</asp:WebPartManager>
<table width="100%" height="60%"><tr><td valign="top" style="width: 50%">

P g i n a | 30

mp

lo

de
l

ec

tur
a

<asp:WebPartZone ID="WebPartZone1" runat="server" Height="100%"


Width="100%" BorderColor="#CCCCCC" Font-Names="Verdana" Padding="6"
HeaderText="WebPartZone-1">
<ZoneTemplate>
<asp:Image ID="Image1" runat="server" Height="160px"
ImageUrl="~/DSCN5474.JPG" Width="336px" title="Foto" />
<asp:Calendar ID="Calendar1" runat="server"
Title="calendario"></asp:Calendar>
</ZoneTemplate>
<PartChromeStyle BackColor="#EFF3FB" BorderColor="#D1DDF1" FontNames="Verdana" ForeColor="#333333" />
<MenuLabelHoverStyle ForeColor="#D1DDF1" />
<EmptyZoneTextStyle Font-Size="0.8em" />
<MenuLabelStyle ForeColor="White" />
<MenuVerbHoverStyle BackColor="#EFF3FB" BorderColor="#CCCCCC"
BorderStyle="Solid" BorderWidth="1px" ForeColor="#333333" />
<HeaderStyle Font-Size="0.7em" ForeColor="#CCCCCC"
HorizontalAlign="Center" />
<MenuVerbStyle BorderColor="#507CD1" BorderStyle="Solid"
BorderWidth="1px" ForeColor="White" />
<PartStyle Font-Size="0.8em" ForeColor="#333333" />
<TitleBarVerbStyle Font-Size="0.6em" Font-Underline="False"
ForeColor="White" />
<MenuPopupStyle BackColor="#507CD1" BorderColor="#CCCCCC"
BorderWidth="1px" Font-Names="Verdana" Font-Size="0.6em" />
<PartTitleStyle BackColor="#507CD1" Font-Bold="True" Font-Size="0.8em"
ForeColor="White" />
</asp:WebPartZone>
<asp:EditorZone ID="EditorZone1" runat="server" BackColor="#F7F6F3"
BorderColor="#CCCCCC" BorderWidth="1px" Font-Names="Verdana" Padding="6">
<HeaderStyle BackColor="#E2DED6" Font-Bold="True" Font-Size="0.8em"
ForeColor="#333333" />
<LabelStyle Font-Size="0.8em" ForeColor="#333333" />
<HeaderVerbStyle Font-Bold="False" Font-Size="0.8em" FontUnderline="False" ForeColor="#333333" />
<PartChromeStyle BorderColor="#E2DED6" BorderStyle="Solid"
BorderWidth="1px" />
<PartStyle BorderColor="#F7F6F3" BorderWidth="5px" />
<FooterStyle BackColor="#E2DED6" HorizontalAlign="Right" />
<EditUIStyle Font-Names="Verdana" Font-Size="0.8em"
ForeColor="#333333" />
<InstructionTextStyle Font-Size="0.8em" ForeColor="#333333" />
<ErrorStyle Font-Size="0.8em" />
<VerbStyle Font-Names="Verdana" Font-Size="0.8em"
ForeColor="#333333" />
<EmptyZoneTextStyle Font-Size="0.8em" ForeColor="#333333" />
<PartTitleStyle Font-Bold="True" Font-Size="0.8em"
ForeColor="#333333" />
<ZoneTemplate>
<asp:LayoutEditorPart ID="LayoutEditorPart1" runat="server" />
<asp:BehaviorEditorPart ID="BehaviorEditorPart1" runat="server" />
<asp:AppearanceEditorPart ID="AppearanceEditorPart1" runat="server" />
</ZoneTemplate>
</asp:EditorZone>

Eje

</td>
<td width="50%" valign="top">
<asp:WebPartZone ID="WebPartZone2" runat="server" BorderColor="#CCCCCC"
Font-Names="Verdana" Padding="6" Height="70%" Width="100%"
HeaderText="WebPartZone-2">
<PartChromeStyle BackColor="#F7F6F3" BorderColor="#E2DED6" FontNames="Verdana" ForeColor="White" />
<MenuLabelHoverStyle ForeColor="#E2DED6" />
<EmptyZoneTextStyle Font-Size="0.8em" />
<MenuLabelStyle ForeColor="White" />
<MenuVerbHoverStyle BackColor="#F7F6F3" BorderColor="#CCCCCC"
BorderStyle="Solid" BorderWidth="1px" ForeColor="#333333" />

P g i n a | 31

Eje

mp

lo

de
l

ec

tur
a

<HeaderStyle Font-Size="0.7em" ForeColor="#CCCCCC"


HorizontalAlign="Center" />
<MenuVerbStyle BorderColor="#5D7B9D" BorderStyle="Solid"
BorderWidth="1px" ForeColor="White" />
<PartStyle Font-Size="0.8em" ForeColor="#333333" />
<TitleBarVerbStyle Font-Size="0.6em" Font-Underline="False"
ForeColor="White" />
<MenuPopupStyle BackColor="#5D7B9D" BorderColor="#CCCCCC"
BorderWidth="1px" Font-Names="Verdana" Font-Size="0.6em" />
<PartTitleStyle BackColor="#5D7B9D" Font-Bold="True" FontSize="0.8em" ForeColor="White" />
<ZoneTemplate>
<asp:FileUpload ID="FileUpload1" runat="server" Title="subida
fichero"/>
<asp:BulletedList ID="BulletedList1" runat="server"
Title="elementos">
<asp:ListItem>Elemento 1</asp:ListItem>
<asp:ListItem>Elemento 2</asp:ListItem>
<asp:ListItem>Elemento 3</asp:ListItem>
</asp:BulletedList>
<asp:DropDownList ID="DropDownList1" runat="server"
Title="Lista">
<asp:ListItem>Elemento 1</asp:ListItem>
<asp:ListItem>Elemento 2</asp:ListItem>
<asp:ListItem>Elemento 3</asp:ListItem>
<asp:ListItem>Elemento 4</asp:ListItem>
</asp:DropDownList>
</ZoneTemplate>
</asp:WebPartZone>
<asp:CatalogZone ID="CatalogZone1" runat="server" BackColor="#F7F6F3"
BorderColor="#CCCCCC" BorderWidth="1px" Font-Names="Verdana"
Padding="6">
<ZoneTemplate>
<asp:PageCatalogPart ID="PageCatalogPart1" runat="server" />
<asp:DeclarativeCatalogPart ID="DeclarativeCatalogPart1"
runat="server">
<WebPartsTemplate>
<asp:ListBox ID="ListBox1" runat="server">
<asp:ListItem>1</asp:ListItem>
<asp:ListItem>2</asp:ListItem>
<asp:ListItem>3</asp:ListItem>
<asp:ListItem>4</asp:ListItem>
<asp:ListItem>5</asp:ListItem>
</asp:ListBox>
</WebPartsTemplate>
</asp:DeclarativeCatalogPart>
</ZoneTemplate>
<HeaderVerbStyle Font-Bold="False" Font-Size="0.8em" FontUnderline="False" ForeColor="#333333" />
<PartTitleStyle BackColor="#5D7B9D" Font-Bold="True" FontSize="0.8em" ForeColor="White" />
<PartChromeStyle BorderColor="#E2DED6" BorderStyle="Solid"
BorderWidth="1px" />
<InstructionTextStyle Font-Size="0.8em" ForeColor="#333333" />
<PartLinkStyle Font-Size="0.8em" />
<EmptyZoneTextStyle Font-Size="0.8em" ForeColor="#333333" />
<LabelStyle Font-Size="0.8em" ForeColor="#333333" />
<VerbStyle Font-Names="Verdana" Font-Size="0.8em"
ForeColor="#333333" />
<PartStyle BorderColor="#F7F6F3" BorderWidth="5px" />
<SelectedPartLinkStyle Font-Size="0.8em" />
<FooterStyle BackColor="#E2DED6" HorizontalAlign="Right" />
<HeaderStyle BackColor="#E2DED6" Font-Bold="True" Font-Size="0.8em"
ForeColor="#333333" />
<EditUIStyle Font-Names="Verdana" Font-Size="0.8em"
ForeColor="#333333" />
</asp:CatalogZone>
</td>

P g i n a | 32

tur
a

</table>
</form>
</body>
</html>
Partial Class _Default
Inherits System.Web.UI.Page

ec

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) _


Handles Me.Load
'Me.WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode
'Me.WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode
'Me.WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode
'Me.WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayMode
Me.WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode
End Sub

End Class

de
l

public partial class EjemploCS : System.Web.UI.Page


{
protected void Page_Load(object sender, EventArgs e)
{
/*Me.WebPartManager1.DisplayMode = WebPartManager.CatalogDisplayMode
Me.WebPartManager1.DisplayMode = WebPartManager.EditDisplayMode
Me.WebPartManager1.DisplayMode = WebPartManager.BrowseDisplayMode
Me.WebPartManager1.DisplayMode = WebPartManager.ConnectDisplayMode*/
WebPartManager1.DisplayMode = WebPartManager.DesignDisplayMode;
}
}
Cdigo fuente 6

En este caso se tienen dos zonas definidas por dos controles WebPartZone, una zona de catlogo
definida mediante un control CatalogZone, y otra zona de edicin especificada mediante un control
EditorZone. Las distintas zonas de la pgina se encuentran en una tabla de HTML, para tener un
control sobre ellas y poder distribuirlas. Esta es una prctica muy comn a la hora de distribuir las
distintas zonas que incluyen en su interior uno o varios controles WebPart.

mp

lo

Sobre las distintas zonas se han aplicado formatos automticos que nos ofrecen sus smart tags
(etiquetas inteligentes), que son una serie de etiquetas especiales que nos ofrece el entorno de
desarrollo VS 2005 en la vista de diseo, y que nos van a permitir realizar distintas operaciones sobre
los controles Web de forma rpida y sencilla. Debido a estos formatos aparecen en la pgina ASPX
tantas etiquetas, estas se utilizan para definir distintos estilos que afectan a los controles
WebPartZone.
Como se puede ver en el evento Page_Load se indica el modo que va a utilizar el control
WebPartManager, recomiendo al lector que vaya cambiando los distintos modos que se encuentran
comentados y as tendr un primer contacto con los controles WebPart y podr ver las distintas
opciones de configuracin que presentan los controles WebParts en los distintos modos.

Eje

En la Figura 16 se puede ver un ejemplo de ejecucin de la pgina ASPX. En este caso se corresponde
con el modo de diseo.

P g i n a | 33

tur
a
ec
de
l
Figura 16

lo

Como ya hemos comentado, las distintas modificaciones que realice el usuario sobre los distintos
controles WebPart se mantendrn para las siguientes veces que el usuario visite la pgina, adems
cada usuario tendr su propia visin de la pgina ASPX, atendiendo a la configuracin de controles
WebPart que haya realizado sobre la misma.

mp

Para mantener el estado de los distintos controles WebPart, se recurre a una base de datos de SQL
Server Express 2005, llamada ASPNETDB.MDF. Esta base de datos la aade VS 2005 a nuestro
directorio App_Data de nuestra aplicacin, en el momento que empecemos a utilizar controles
WebPart en cualquiera de las pginas ASPX de nuestro proyecto. El directorio App_Data que va a
contener los almacenes de datos utilizados por la aplicacin, podrn contener ficheros de SQL Server
(.MDF), Access (.MDB), ficheros XML. En el siguiente captulo se comentarn los distintos
directorios especiales que presenta ASP .NET 2.0 para las aplicaciones Web.
Esta misma base de datos tambin es utilizada por los servicios de suscripcin (Membership) y de
gestin de roles (RoleManager), que nos ofrece ASP .NET 2.0.

Eje

Controles Estndar

Dentro del grupo de controles estndar tambin aparecen nuevos controles de servidor, tan sencillos
como puede ser el control BulletedList, que representa una lista de elementos, el control
HiddenField, para representar un campo oculto de un formulario, y ms complejos como puede ser
el control Wizard, que permite definir una serie de pasos en forma de un asistente. En general los

P g i n a | 34

tur
a

nuevos controles estndar que se han aadido en ASP .NET 2.0 nos van a permitir ahorrarnos mucho
trabajo debido a las funcionalidades que ofrecen.

A continuacin, al igual que hemos hecho en otros apartados, se van a comentar brevemente algunos
de estos nuevos controles:
BulletedList: este control representa una lista ordenada (etiqueta <ol>) o desordenada
(etiqueta <ul>). El control BulletedList est formado por controles ListItem.

HiddenField: representa un campo oculto del formulario, es decir, como cdigo HTML
generar <input type=hidden>. Ser muy til cuando queramos enviar informacin
que no queremos que se visualice en el formulario, pero esta informacin si que ser visible si
el usuario en el navegador selecciona ver el cdigo de la pgina.

FileUpload: nos permite enviar archivos al servidor Web de forma muy sencilla, por lo
tanto se corresponde con un elemento <input type=file> de HTML. Antes de
ponernos a utilizar este control Web debemos tener en cuenta dos aspectos, por un lado si
tenemos permisos de escritura en el destino en el que queremos copiar el archivo, y las
limitaciones de tamao que tenemos a la hora de enviar un archivo al servidor Web.

ImageMap: en este caso se trata de un control Web que nos permite definir un mapa de
imagen sensible, es decir, una imagen que posee varias secciones y segn en la seccin en la
que se pulse la pgina realizar una accin u otra. Con este control podemos utilizar una
imagen como un men de navegacin, por ejemplo.

MultiView: nos va a permitir mostrar/ocultar algunas partes de la pgina ASPX que


estamos mostrando en el navegador. El control MultiView va a actuar como un contenedor
de controles View, y estos a su vez van a contener grupos de controles Web hijos. El control
MultiView nos va a permitir ir ocultando y mostrando los distintos controles View que
contiene, sera similar a ir modificando la visibilidad de controles Panel. nicamente puede
estar activo en un mismo momento un control View. VS 2005 nos ofrece en la vista de diseo
la posibilidad de construir de manera visual nuestro control MultiView con los distintos
controles View que forman parte de el.

Wizard: nos va a permitir construir una secuencia de pasos ordenados, de ah viene su


nombre, va a representar un asistente. El control Wizard nos va a servir para realizar la
navegacin entre los distintos pasos de un proceso, como puede ser recoger en varios pasos la
informacin facilitada por un usuario.

lo

de
l

ec

mp

Para terminar con el presente captulo, se va a mostrar de forma rpida un ejemplo de utilizacin del
control Wizard.
A continuacin se ofrece el Cdigo fuente 7, que es el cdigo que se generara al crear un control
Wizard sencillo, con tres pasos, utilizando un formato predeterminado y luego aadiendo un control
Button al paso uno, y un control Image al paso dos.

Eje

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="EjemploCS1.aspx.cs"


Inherits="EjemploCS1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="cabecera" runat="server">
<title>Pgina sin ttulo</title>
</head>
<body>
<form id="formulario" runat="server">
<asp:Wizard ID="Wizard1" runat="server" ActiveStepIndex="0" BackColor="#EFF3FB"
BorderColor="#B5C7DE"
BorderWidth="1px" Font-Names="Verdana" Font-Size="0.8em" Height="135px"
Width="390px">

P g i n a | 35

de
l

ec

tur
a

<StepStyle Font-Size="0.8em" ForeColor="#333333" VerticalAlign="Top"/>


<SideBarStyle BackColor="#507CD1" Font-Size="0.9em" VerticalAlign="Top" />
<NavigationButtonStyle BackColor="White" BorderColor="#507CD1"
BorderStyle="Solid" BorderWidth="1px" Font-Names="Verdana"
Font-Size="0.8em" ForeColor="#284E98" />
<WizardSteps>
<asp:WizardStep runat="server" Title="Paso 1">
Este es el primer paso<br /><br />
<asp:Button ID="Button1" runat="server" Text="Bot&#243;n"/>
</asp:WizardStep>
<asp:WizardStep runat="server" Title="Paso 2">
Este es el segundo<br /><br />
<asp:Image ID="Image1" runat="server" ImageUrl="~/piqui.JPG"
Height="121px" Width="154px"/>
</asp:WizardStep>
<asp:WizardStep runat="server" Title="Paso 3">
Y este el tercero y ltimo
</asp:WizardStep>
</WizardSteps>
<SideBarButtonStyle BackColor="#507CD1" Font-Names="Verdana"
ForeColor="White" />
<HeaderStyle BackColor="#284E98" BorderColor="#EFF3FB" BorderStyle="Solid"
BorderWidth="2px"
Font-Bold="True" Font-Size="0.9em" ForeColor="White"
HorizontalAlign="Center" />
</asp:Wizard>
</form>
</body>
</html>
Cdigo fuente 7

Eje

mp

lo

A continuacin se ofrece el aspecto que tendra al situarnos en el paso dos.

Figura 17

En el siguiente captulo seguiremos comentando las novedades que podemos encontrarnos dentro de
ASP .NET 2.0.

P g i n a | 36

S-ar putea să vă placă și