ASP .NET Framework 3.5

449
A Apli icac co cio on . la WEB M ne .NE MC s ET 3 CTS: Web 3.5 : b 5 www.depurando.com 1

Transcript of ASP .NET Framework 3.5

Page 1: ASP .NET Framework 3.5

AApliicaccocioon .

���

���

���

��

� la WEB

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mne.NE

��

���

���

MCsET 3

� ��

���

CTS:Web3.5

:b5

www.depurando.com 1

Page 2: ASP .NET Framework 3.5

���� � �� �������� ��� ������ � �� ���

����� � �� �������� ���

������ � �� ��� ������� ��

��������

El proceso de comunicación entre el navegador y el servidor a través del protocoloHTTP se puede resumir de la siguiente forma:

1. El explorador Web inicia una petición de un recurso a un servidor Web.2. HTTP se utiliza para enviar la solicitud GET al servidor Web.3. El servidor Web procesa la solicitud.4. El servidor Web envía una respuesta al navegador Web. Protocolo HTTP se utilizapara enviar la respuesta HTTP al navegador Web.5. El navegador web procesa la respuesta, y muestra la página Web.6. El usuario introduce los datos y realiza una acción, como hacer clic en un botón"Enviar" que hace que los datos se envían de vuelta al servidor Web.7. HTTP se utiliza para enviar los datos al servidor.8. El servidor Web procesa los datos.9. El servidor Web envía la respuesta al navegador Web.10. HTTP se utiliza para enviar la respuesta HTTP al navegador Web.11. El navegador web procese la respuesta, y muestra la página Web.

Servidor WebLos servidores Web son responsables de la recepción y tramitación de las solicitudes de losnavegadores a través de HTTP. Cada servidor Web maneja la solicitud y envía una respuesta alnavegador Web. Después de eso, el servidor Web cierra la conexión y todos los recursosliberados que habían participado en la solicitud. Todos los recursos fueron liberados debido aque el servidor Web debe ser capaz de manejar miles de solicitudes por minuto, y el originalson simples páginas web, páginas HTML estáticas.

Ningún dato se conserva de la respuesta entre el servidor web y el navegador y la conexión secierra después de enviar la respuesta

www.depurando.com 2

Page 3: ASP .NET Framework 3.5

���� � �� �������� ��� ������ � �� ���

Además de servir archivos HTML, los servidores Web también pueden tramitar las solicitudesde páginas que contienen código que se ejecutará en el servidor.

También tienen la capacidad de almacenar datos a través de las solicitudes de páginas Web, loque significa que las páginas Web pueden estar conectadas para formar aplicaciones web.Debido a que muchos sitios Web están configurados como aplicaciones Webque contiene muchas páginas web, la idea de que un servidor Web entrega una sola páginapara el navegador Web y el cierre de la conexión es bastante anticuado.

El navegador WebEl navegador Web proporciona una plataforma independiente de la plataforma para mostrarpáginas web que fueron escritas con HTML. El explorador Web también tiene que mostrar lasimágenes y responder a los hipervínculos. Cada solicitud de una página web al servidorprovoca el refresco de la pantalla del navegador y su sustitución por la nueva página web.

Aunque el papel del explorador Web es simplemente presentar los datos y la recogida dedatos, existen nuevas tecnologías del lado del cliente que permiten a los navegadores webejecutar código, como JavaScript y AJAX , sin necesidad de refrescar la página web actual. Estastecnologías permiten una experiencia de usuario mucho mejor y más robusta que laexperiencia de usuario proporcionada por de los navegadores Web primitivos.

www.depurando.com 3

Page 4: ASP .NET Framework 3.5

���� � �� �������� ��� ������ � �� ���

�HTTP, Protocolo de Transferencia de HipertextoHTTP en el protocolo de comunicación basado en texto que se utiliza para solicitar las páginasWeb del servidor Web y enviar las respuestas de vuelta al navegador Web. Mensajes HTTPsuelen ser mensajes enviados entre el servidor Web y el navegador Web usando el puerto 80,o, cuando se utiliza HTTP seguro (HTTPS), el puerto 443

Cuando una página Web se solicita, un texto como el siguiente comando se envía al servidorWeb

GET /default.aspx HTTP/1.1

Host: www.northwindtraders.com

La primera línea contiene el método, también conocido como un verbo o un comando,llamado GET, y es seguido por la URL, de la página Web para ser recuperado, que es seguidopor un indicador de la versión de HTTP para ser utilizado. El método indica qué acción sellevará a cabo por el servidor Web utilizando la dirección URL que sigue el método.

La segunda línea identifica el nombre del host que puede ser utilizado por el servidor Web si elservidor Web sirve más de un sitio Web. Este proceso se conoce como el uso de encabezadosde host para identificar el sitio Web que se encargará de la petición (s).

Método SignificadoGET Devuelve el recurso identificado en la URL pedida. HEAD Funciona como el GET, pero sin que el servidor

devuelva el cuerpo del mensaje. Es decir, sólo se devuelve la información de cabecera.

POST Indica al servidor que se prepare para recibir información del cliente. Suele usarse para enviar información desde formularios.

PUT Envía el recurso identificado en la URL desde el cliente hacia el servidor.

OPTIONS Pide información sobre las características de comunicación proporcionadas por el servidor. Le permite al cliente negociar los parámetros de comunicación.

TRACE Inicia un ciclo de mensajes de petición. Se usa para depuración y permite al cliente ver lo que el servidor

www.depurando.com 4

Page 5: ASP .NET Framework 3.5

���� � �� �������� ��� ������ � �� ���

�recibe en el otro lado.

DELETE Solicita al servidor que borre el recurso identificado con el URL.

CONNECT Este método se reserva para uso con proxys. Permitirá que un proxy pueda dinámicamente convertirse en un túnel. Por ejemplo para comunicaciones con SSL.

El objeto Request representa la comunicación desde el navegador al Servidor solicitando unrecurso

El objeto Response representa la respuesta del servidor al navegador

HTTP/1.1 200 OK

Server: Microsoft�IIS/6.0

Content�Type: text/html

Content�Length: 38

<html><body>Hello, world.</body><html>

La primera línea contiene el protocolo, la versión del protocolo, un código de estado y la razón.

Los posibles códigos de estado se identifican con números de tres cifras y se clasifican en cincogrupos:

1. Números del estilo 1XX que representan mensajes de tipo informativo.

2. Números del estilo 2XX que indican que se completó satisfactoriamente la solicitud delcliente.

3. Números del estilo 3XX que indican que la solicitud fue redirigida.

4. Números del estilo 4XX que indican un error en la solicitud del cliente.

5. Números del estilo 5XX que indican un error en el lado del servidor.

Código Significado200 OK La solicitud del cliente fue satisfactoria y el

servidor ha devuelto la información solicitada. 204 No Content

El cuerpo de la respuesta no tiene contenido. Esto puede indicar, por ejemplo, un problema con un CGI que no devuelve datos.

301 Moved Permanently

El URI solicitado no está disponible en el servidor. Ha sido movido a otra ubicación. Las solicitudes futuras deberán hacerse a esa ubicación.

400 Bad Request

Hay un error de sintaxis en la solicitud del cliente. Por ejemplo mandar una solicitud indicando que el cliente soporta HTTP/1.1 y no

www.depurando.com 5

Page 6: ASP .NET Framework 3.5

���� � �� �������� ��� ������ � �� ���

�enviar el encabezado de Host.

404 Not Found

Este es junto con el 200 OK, el código más habitual. Indica que el documento solicitado no está disponible, probablemente el URI haya sido mal escrito.

500 Internal Server Error

Este mensaje indica que algo ha ido mal en el servidor, casi siempre tiene que ver con problemas en programas CGI.

La segunda línea de la respuesta indica el tipo de servidor web. La tercera línea indica el tipode recurso que está siendo enviado al navegador web. Este indicador es el tipo MIME. En estecaso el fichero es un fichero de texto HTML estático. El tipo MIME es una designación de dospartes "tipo / subtipo", en el que la primera parte es el tipo de recurso y la segunda parte es elsubtipo de recursos

El registro de los tipos MIME los controla la IANA (Internet Asigned Numbers Authority) segúnlo especificado en el RFC 2048 [102], y en su sitio Web podemos obtener la lista completa yactualizada de los tipos registrados. Es importante el registro de tipos MIME, esto asegura quedos tipos de contenido distintos no acaban con el mismo nombre. El prefijo especial x� quedareservado para tipos experimentales (desplegados sin que haya terminado el proceso deregistro) o tipos de uso interno de organizaciones, por ejemplo:

image/x�fwf

El protocolo HTTP usa tipos MIME en sus encabezados, por ejemplo para:

� Informar al cliente el tipo de datos que está recibiendo del servidor. Esto se hace conel encabezado Content�Type . Por ejemplo, un navegador típico puede manejar losdatos de tres maneras distintas según el tipo MIME indicado en Content�Type :

1. Visualizar el documento, por ejemplo con tipos text/html .

2. Llamar a una aplicación externa, por ejemplo con tipos application/pdf .

3. O preguntarle al usuario que hacer ante un tipo que no se entiende, porejemplo image/x�fwf .

� Permitir la negociación de contenido. El cliente, en su petición incluye los tipos MIMEque acepta. Por ejemplo, un navegador puede soportar documentos de tipoapplication/zip , lo indicará con el encabezado HTTP:

� Allow: application/zip

� Encapsular una o más entidades dentro del cuerpo de mensaje, mediante los tiposMIMEmultipart (definidos en el RFC 2046 [100]). Quizá el ejemplo más conocido sea eltipo:

� multipart/form�data

www.depurando.com 6

Page 7: ASP .NET Framework 3.5

���� � �� �������� ��� ������ � �� ���

!El tipo multipart/form�data ha sido definido en el RFC 1867 [96] para encapsular los datos deun formulario en su envío hacia el servidor mediante el método POST.

Tipo MIME Descripcióntext Información de texto. No se requiere

software especial para obtener el significadocompleto del texto. Un subtipo es plain, loque significa que el texto se puede leer sinnecesidad de software adicional. Otrossubtipos son HTML y XML, que indican el tipode archivo apropiado

image Los datos de la imagen. Requiere undispositivo de pantalla (por ejemplo, ungráfico o una impresora de gráficos) para verla información. Subtipos se definen dosformatos de imagen ampliamente utilizado,jpeg y gif

audio Datos de audio. Requiere un dispositivo desalida de audio (como un altavoz oauriculares) para "oír" los contenidos. Unprimer subtipo llamado basic se define deeste tipo.

video Datos de vídeo. Requiere la capacidad paramostrar imágenes en movimiento, por logeneralincluyendo hardware y softwareespecializados. Un primer subtipollamado MPEG se define para este tipo

application Otros tipos de datos, normalmente nointerpretados ya sea binaria o deinformación de datos para ser procesados poruna aplicación.

El registro contiene una lista de tipos MIME:

HKEY_CLASSES_ROOT\MIME\Database\Content Type.

Después de la línea con el tamaño del contenido, la respuesta envía el mensaje.

Enviando datos de formulario al ServidorLa etiqueta HTML <form> se puede utilizar para crear un formulario Web que recoge datos yenvía los datos al servidor Web. Un uso típico de etiqueta <form> es el siguiente

<form method="POST" action = "getCustomer.aspx" > Enter Customer ID: <input type="text" name="Id"> <input type="submit" value="Get Customer">

</form>

www.depurando.com 7

Page 8: ASP .NET Framework 3.5

���� � �� �������� ��� ������ � �� ���

"Hay dos métodos HTTP que se pueden utilizar para enviar el formulario de datos de vuelta alservidor Web: GET y POST. Cuando el verbo GET se usa, el que contiene los datos deQueryString se adjunta a la dirección URL. La QueryString es una colección de estados clave =valor, separados por ampersand (&),los caracteres que se pueden pasar al servidor Webconcatenando un signo de interrogación (?) a la final de la URL y, a continuación,concatenando la QueryString como sigue

GET /getCustomer.aspx?Id=123&color=blue HTTP/1.1

Host: www.northwindtraders.com

Una de las ventajas de utilizar el verbo GET es que la QueryString URL es enviada completay puede ser vista y modificada en la barra de direcciones del explorador Web, según seanecesario.

Dependiendo de la situación, esto también podría ser una desventaja. La URL completa yQueryString son fáciles de guardar como una unidad.

Una desventaja es que el QueryString tiene un tamaño limitado por el navegador Web y elservidor Web que se utilice. Por ejemplo, cuando se utiliza Microsoft Internet Explorer e IIS, ellímite es de 1024 caracteres. Otra consideración es que puede que no desea permitir que unusuario escriba la dirección URL y QueryString directamente en la barra de direcciones sinnavegar por otras páginas Web en primer lugar.

Cuando se usa el método POST. Los datos se colocan en el cuerpo del mensaje como sigue:

POST /getCustomer.aspx HTTP/1.1

Host: www.northwindtraders.com Id=123&color=blue

Con el método POST se elimina la limitación de tamaño en los datos, se han probado con hasta10 MB. Este método no permite al usuario simplemente escribir los datos ya que estos datosse esconden en el cuerpo del mensaje. En la mayoría de escenarios es el método másconveniente de enviar datos al servidor.

Una página Web ASP.NET contiene una propiedad denominada IsPostBack que se utiliza paradeterminar si los datos se envían de vuelta al servidor Web o si la página Web es simplementeque se solicita.

1. What is the name of the Web page property that you can query to determine that a Web page is being requested without data being submitted? (Choose one.)

A. FirstGetB. InitializedC. IncludesDataD. IsPostBack

www.depurando.com 8

Page 9: ASP .NET Framework 3.5

AApliicaccocioon .

��

���

��

�#$

Mne.NE

���

��� %

�� & '

����

$��

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsET 3

��

��

'(��

CTS:Web3.5

:b5

www.depurando.com 9

Page 10: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

����� �� ����� %�� ��� & '(���

����� �#$��

Desarrollar aplicaciones Web ASP.NET sobre el .NET Framework es similar a desarrollaraplicaciones Windows. El componente fundamental de ASP.NET es el formulario Web Form.Un formulario Web Form es la página Web que los usuarios visualizan en un navegador. Unaaplicación Web ASP.NET consta de uno o más formularios Web Form. Un Web Form es unapágina dinámica que puede acceder a recursos del servidor.

Por ejemplo, una página Web tradicional puede ejecutar scripts en el cliente para realizartareas básicas. En cambio, un formulario Web Form ASP.NET también puede ejecutar códigoen el lado servidor para acceder a una base de datos, generar formularios Web Formsadicionales, o aprovechar la seguridad incorporada en el servidor.

Además, como un formulario Web Form ASP.NET no depende de utilizar scripts en el cliente,no depende del tipo de navegador del cliente o del sistema operativo. Esta independenciapermite desarrollar un único formulario Web Form que puede ser visualizado prácticamenteen todos los dispositivos que dispongan de acceso a Internet y de un navegador Web.

Debido a que ASP.NET forma parte del .NET Framework, podemos desarrollar aplicacionesWeb ASP.NET en cualquier lenguaje basado en .NET.

La tecnología ASP.NET también permite la creación de servicios Web XML. Los servicios WebXML son aplicaciones distribuidas que utilizan XML para transferir información entre clientes,aplicaciones y otros servicios Web XML.

www.depurando.com 10

Page 11: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

�AplicaciónWeb de ASP.NET

Una aplicación Web ASP.NET contiene distintas partes y componentes. Crear aplicaciones WebASP.NET implica utilizar y trabajar con todos ellos

Formularios Web Forms o páginas .aspx

Los formularios Web Forms y las páginas .aspx proporcionan la interfaz de usuario para laaplicación Web.

Páginas con código trasero

Las páginas con código trasero están asociadas a los formularios Web Forms y contienen elcódigo del servidor para el formulario Web Form.

Archivos de configuración

Los archivos de configuración son archivos XML que definen la configuración predeterminadapara la aplicación Web y para el servidor Web. Cada aplicación Web tiene un archivo deconfiguración Web.config. Además, cada servidor Web tiene un archivo machine.config.

Archivo Global.asax

Los archivos Global.asax contienen el código necesario para responder a los eventos a nivel deaplicación provocados por ASP.NET.

www.depurando.com 11

Page 12: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

�Enlaces a servicios Web XML

Los enlaces a servicios Web XML permiten a la aplicación Web enviar y recibir datos de unservicio Web XML.

Conectividad a bases de datos

La conectividad a bases de datos permite a la aplicación Web transferir datos desde y haciafuentes de base de datos.

Caché

El uso de caché permite a la aplicación Web devolver más rápidamente formularios WebForms y datos tras la primera petición.

Proceso de una solicitudCuando el cliente solicita una página Web por primera vez, se genera el siguiente conjuntode eventos:

1. El navegador cliente envía una solicitud GET HTTP al servidor.

2. El parseador ASP.NET interpreta el código fuente.

3. Si el código no se ha compilado todavía en una biblioteca de enlace dinámico (DLL), ASP.NETinvoca el compilador.

4. El CLR carga y ejecuta el código Microsoft intermediate language (MSIL)

Cuando el usuario invoca la misma página Web por segunda vez, se genera el siguienteconjunto de eventos:

1. El navegador cliente envía una solicitud GET HTTP al servidor.

2. El CLR carga y ejecuta inmediatamente el código MSIL que ya se ha compilado durante elprimer intento de acceso del usuario.

Creando un sitio webEn la primera parte del tutorial, creará un sitio web de ASP.NET con una páginapredeterminada. Este sitio web será un sitio web de sistema de archivos que no requiereMicrosoft Internet Information Services (IIS). Esto permite crear y ejecutar la página desde elsistema de archivos local de su equipo.

Para crear un sitio web de sistema de archivos

1. Abra Visual Web Developer.

2. En el menú Archivo, haga clic en Nuevo sitio Web.

Aparece el cuadro de diálogo Nuevo sitio Web, como se muestra en la siguiente ilustración.

www.depurando.com 12

Page 13: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

3. En Plantillas instaladas de Visual Studio, haga clic en Sitio Web ASP.NET.

4. En el cuadro Ubicación, seleccione la casilla Sistema de archivos y escriba el nombre dela carpeta donde desea guardar las páginas del sitio web.

Por ejemplo, escriba el nombre de carpeta C:\Tasks.

5. En la lista Lenguaje, haga clic en Visual Basic o Visual C# para seleccionar el lenguaje deprogramación que utilizará en todo el proyecto web

6. Haga clic en Aceptar.

Visual Web Developer crea la carpeta y una página nueva denominada Default.aspx. De formapredeterminada, cuando se crea una nueva página, Visual Web Developer muestra la páginaen la vista Código fuente, donde puede ver los elementos HTML de la página. La ilustraciónsiguiente muestra una página web predeterminada en vista Código fuente.

www.depurando.com 13

Page 14: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

Visita guiada por Visual Web Developer

Antes de continuar, resultará útil familiarizarse con el entorno de desarrollo de Visual WebDeveloper. La ilustración siguiente muestra algunas de las ventanas y herramientas de VisualWeb Developer.

Diagrama del entorno de Visual Web Developer

Examine la ilustración anterior y relacione el texto con la lista siguiente, que describe lasventanas y herramientas que se utilizan con más frecuencia. (Aquí no se muestran todas lasventanas y herramientas disponibles, sólo las marcadas en la ilustración anterior.)

www.depurando.com 14

Page 15: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

!� Barras de herramientas. Proporcionan los comandos que permiten dar formato al

texto, buscar texto, etc. Algunas barras de herramientas sólo están disponibles cuandose trabaja en la vista Diseño.

� Explorador de soluciones. Muestra los archivos y carpetas del sitio web.

� Ventana Documento. Muestra los documentos en los que se está trabajando enventanas con fichas. Puede pasar de un documento a otro haciendo clic en las fichas.

� Fichas de vistas. Presentan distintas vistas del mismo documento. La vista Diseño es unárea de edición prácticamente WYSIWYG. La vista Código fuente es el editor de lapágina que muestra el marcado. La vista en dos paneles muestra la vista Diseño y lavista Código fuente del documento. Trabajará con las vistas Diseño y Código fuentemás adelante en este tutorial. Si prefiere abrir las páginas web en la vista Diseño, en elmenú Herramientas haga clic en Opciones, seleccione el nodo Diseñador HTML ycambie la opción Iniciar páginas en.

� Ventana Propiedades. Permite cambiar la configuración de la página, los elementosHTML, los controles y otros objetos.

� Ventana Propiedades de CSS. Muestra los estilos CSS actuales cuando la vista Diseñoestá activa.

� Ventanas Administrar estilos y Aplicar estilos. Ayudan a controlar los estilos CSS delsitio web.

� Cuadro de herramientas. Proporciona los controles y elementos HTML que se puedenarrastrar a una página. Los elementos del Cuadro de herramientas se agrupan porfuncionamiento común.

� Explorador de bases de datos. Muestra las conexiones de las bases de datos. Si no ve laventana Explorador de bases de datos en Visual Web Developer, en el menú Ver, hagaclic en Otras ventanas y, a continuación, haga clic en Explorador de bases de datos.

Puede reorganizar, cambiar el tamaño y acoplar las ventanas para adaptarlas a suspreferencias. El menú Ver permite mostrar otras ventanas.

Para recorrer el entorno de desarrollo

1. En el menú Ver, haga clic en Barras de herramientas.

Se muestra un submenú de barras de herramientas disponibles. Las barras de herramientasque están seleccionadas actualmente aparecen con una casilla junto a ellas.

2. Desplácese hasta el final de la lista de barras de herramientas y haga clic enPersonalizar.

Se muestra el cuadro de diálogo Personalizar.

3. Revise las barras de herramientas disponibles. Cuando termine, haga clic en Cerrar.

www.depurando.com 15

Page 16: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

"4. En el menú Ver, haga clic en el Explorador de soluciones.

Se mostrará la ventana Explorador de soluciones. De forma predeterminada, esta ventana seacopla en un lado del entorno de Visual Web Developer.

5. En el Explorador de soluciones, haga clic con el botón secundario del mouse en elelemento superior de la lista de sitios.

Se muestra un menú de acceso directo con las operaciones de sitio web más habituales.

6. Presione ESC para cerrar el menú de acceso directo.

7. En el Explorador de soluciones, haga clic con el botón secundario del mouse en elarchivo Web.config y, a continuación, haga clic en Abrir para abrir el archivo en laventana de documento.

8. Haga doble clic en la página Default.aspx para abrirla en la ventana de documento.Hacer doble clic en un archivo es una alternativa a utilizar el comando Abrir del menúde acceso directo.

Observe que el nombre de cada página abierta se muestra en una ficha en la parte superior dela ventana de documento.

9. En la parte inferior de la ventana de documento, haga clic en Dividir para mostrar vistaCódigo fuente y la vista Diseño al mismo tiempo.

10. En el menú Ver, haga clic en Ventana Propiedades.

Se mostrará la ventana Propiedades.

Al seleccionar un objeto en la ventana de documento, la ventana Propiedades muestra laspropiedades del objeto seleccionado.

11. En el panel de vista Código fuente, seleccione el elemento form y, a continuación, enla ventana Propiedades, examine las propiedades disponibles.

12. En el menú Ver, haga clic en Cuadro de herramientas.

Se mostrará la ventana Cuadro de herramientas.

13. En vista Diseño, en la ficha Estándar del Cuadro de herramientas, arrastre un controlButton hacia el documento y colóquelo en el elemento div.

Observe que la vista Código fuente se actualiza con el marcado correspondiente.

14. En el menú Ver, haga clic en Explorador de bases de datos.

Se mostrará la ventana Explorador de bases de datos.

15. Haga clic con el botón secundario del mouse en Conexiones de datos para ver lasopciones de bases de datos disponibles.

www.depurando.com 16

Page 17: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

)Crear una página web ASP.NET

Al crear un nuevo sitio web, Visual Web Developer agrega una página web ASP.NET (página deformularios Web Forms) denominada Default.aspx. Puede utilizar la página Default.aspx comopágina principal de su sitio web. Sin embargo, en este tutorial, creará una nueva página ytrabajará con ella.

Para agregar una página al sitio Web

1. En la ventana de documento, haga clic con el botón secundario en la ficha de la páginaDefault.aspx y, a continuación, haga clic en Cerrar.

2. Si se le pide que guarde los cambios, haga clic en No.

3. En el Explorador de soluciones, haga clic con el botón secundario en el sitio web, (porejemplo, C:\Tasks) y, a continuación, haga clic en Agregar nuevo elemento.

Se abrirá el cuadro de diálogo Agregar nuevo elemento.

4. En Plantillas instaladas de Visual Studio, haga clic en Web Forms.

5. En el cuadro Nombre, escriba Home.aspx.

6. En la lista Lenguaje, seleccione el lenguaje de programación con el que desea trabajar(Visual Basic o C#).

7. Desactive la casilla Colocar el código en un archivo independiente.

La ilustración siguiente muestra el cuadro de diálogo Agregar nuevo elemento.

www.depurando.com 17

Page 18: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

*

8. Haga clic en Agregar.

Visual Web Developer crea la nueva página. De forma predeterminada, la página se muestraen la vista Código fuente.

Agregar HTML a la página

En esta parte del tutorial, agregará texto estático a la página.

Para agregar texto a la página

1. En la parte inferior de la ventana de documento, haga clic en la ficha Diseño para pasara la vista Diseño.

2. En la página, escriba To�Do List.

Ejecutar la página

Antes de continuar, puede probar la página. Para ejecutar una página, necesita un servidorWeb. En un sitio web de producción, se utiliza IIS como servidor web. Sin embargo, paraprobar una página puede utilizar el servidor de desarrollo de ASP.NET, que se ejecutalocalmente y no requiere IIS. En los sitios web de sistema de archivos, el servidor webpredeterminado de Visual Web Developer es el servidor de desarrollo de ASP.NET.

Para ejecutar la página

1. Presione CTRL+F5 para ejecutar la página.

www.depurando.com 18

Page 19: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

Visual Web Developer inicia el servidor de desarrollo de ASP.NET. En la barra de herramientasde Windows aparece un icono que indica que el servidor web de Visual Web Developer se estáejecutando, como se muestra en la ilustración siguiente:

La página se muestra en el explorador. Aunque la página creada tiene una extensión .aspx, seejecuta como cualquier página HTML.

2. Cierre el explorador.

Tipos de Sitios WebEn lugar de crear sólo sitios Web que se ejecutan como aplicaciones de Servicios de Internet Information

Server (IIS), ahora puede crear los tipos siguientes:

� Sitio Web del sistema de archivos Puede almacenar archivos en cualquier carpeta, y abrir

y trabajar con cualquier colección de páginas Web, independientemente de dónde se

encuentren. Una característica importante es que no necesita tener IIS instalado para ejecutar

las páginas de un sitio Web del sistema de archivos. En su lugar, puede probar los sitios Web

utilizando el Servidor de desarrollo de ASP.NET, un servidor de pruebas poco complicado.

� Sitio Web de FTP Puede abrir y editar archivos de sitios Web utilizando el Protocolo de

transferencia de archivos (FTP) directamente desde Visual Web Developer.

� Sitio Web de IIS local Puede seguir creando sitios Web que se ejecutan en la copia local de

IIS, como lo hacía con versiones anteriores de Visual Studio. Los sitios Web de IIS locales no

requieren Extensiones de servidor de FrontPage.

� Sitio Web remoto Puede crear sitios Web que se ejecutan en IIS en un equipo distinto que

esté ejecutando Extensiones de servidor de FrontPage 2000 o extensiones de servidor

FrontPage 2002.

www.depurando.com 19

Page 20: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

�Carpetas EspecialesComo en versiones anteriores de Visual Studio, las páginas Web se conservan en la raíz delsitio Web y en subcarpetas, tal como sea necesario para la aplicación. No obstante, el sitioWeb de Visual Web Developer puede contener las subcarpetas siguientes que tienencaracterísticas concretas:

� Carpeta App_Browsers Contiene archivos de definición de exploradores que ASP.NETutiliza para identificar exploradores individuales y determinar sus funciones.

� Carpeta App_Data Contiene bases de datos de Microsoft Access (archivos .mdb),archivos XML y otros datos almacenadas en archivos locales. La cuenta de usuario quese utiliza para ejecutar la aplicación (por ejemplo, la cuenta ASPNET local) tienepermisos de lectura, escritura y creación de archivos en esta carpeta. Varias funcionesde aplicación ASP.NET, como proveedores para suscripciones y funciones, así como laherramienta Administración de sitios Web, están configuradas para trabajar con lacarpeta App_Data específicamente.

� Carpeta Bin Contiene el código compilado, como en versiones anteriores de VisualStudio. Se hace referencia automáticamente a cualquier clase representada por elcódigo en la carpeta Bin del sitio Web.

� Carpeta App_LocalResources Contiene archivos .resx enlazados a una páginadeterminada. Puede definir varios archivos .resx para cada página ya que cada archivo.resx representa un idioma o una combinación de idioma/referencia cultural diferente.

� Carpeta App_GlobalResource Igual que las carpetas App_LocalResources perocontiene archivos .resx que no están enlazados a una página determinada. Se puedetener acceso a valores de recursos de archivos .resx en las carpetasApp_GlobalResource mediante programación a partir del código de aplicación.

� Carpeta App_Code Contiene archivos de código fuente. El código se compila comoparte de la aplicación y se hace referencia a él automáticamente. La carpeta App_Codefunciona como la carpeta Bin, salvo que se puede colocar código fuente en lugar decódigo compilado. Mientras trabaja en Visual Web Developer, el código fuente de lacarpeta App_Code se compila dinámicamente para que IntelliSense puede hacerreferencia a cualquier clase definida en los archivos.

� Carpeta App_Themes Contiene una colección de archivos que definen el aspecto delas páginas Web y controles ASP.NET.

� Carpeta App_Browsers Contiene archivos .browser que definen funciones delexplorador.

� Carpeta App_WebReferences Contiene archivos que se utilizan para crear unareferencia a un servicio Web (en el mismo proyecto o externas al proyecto), incluidosarchivos .disco y .wsdl.

www.depurando.com 20

Page 21: ASP .NET Framework 3.5

���� �� ����� %�� ��� & '(��� ����� �#$��

�Visual Web Developer no crea de manera predeterminada estas carpetas, excepto la carpetaApp_Data. En algunos casos, hay utilidades que crean carpetas. Al ejecutar el comandoGenerar recurso local, por ejemplo, se crea la carpeta App_LocalResources. En otros casos,puede crear las carpetas manualmente.

TEST1. If you want to create a Web site on a remote computer that does not have Front Page Server Extensions installed, which Web site type will you create? (Choose one.)

A. Remote HTTP B. FileC. FTPD. Local HTTP

2. If you want to create a new Web site on a Web server that is hosted by your ISP and the Web server has Front Page Server Extensions installed, what type of Web site would you create? (Choose one.)

A. Local HTTP B. FileC. FTPD. Remote HTTP

3. If you want to separate your server-side code from your client-side code on a Web page, what programming model should you implement? (Choose one.)

A. Separation model B. Code-Behind model C. In-Line model D. ClientServer model

4. Joe created a new Web site using Visual Studio 2005, setting the Web site type to File, and the programming language to C#. Later, Joe received an elaborate Web page from his vendor, which consisted of the Vendor.aspx file and the Vendor.aspx.vb code-behind page. What must Joe do to use these files? (Choose one.)

A. Joe can simply add the files into the Web site, because ASP.NET 2.0 supports Web sites that have Web pages that were programmed with different languages. B. The Vendor.aspx file will work, but Joe must rewrite the code-behind page using C#. C. Both files must be rewritten in C#. D. Joe must create a new Web site that contains these files and set a Web reference to the new site.

www.depurando.com 21

Page 22: ASP .NET Framework 3.5

AApliicaccocioon .

��

���

��

��

��

��

Mne.NE

���

���+�

�� ,

,$�

��

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsET 3

��

���

�-��

�����

CTS:Web3.5

��

:b5

www.depurando.com 22

Page 23: ASP .NET Framework 3.5

���� �� �����+��� �� �� ,�-��� �� ��,$����� ���

����� ��� �����+�� �� �� /�-��� ��

��,$����� ���

Los Sitios Web se han configurado sobre la base de una jerarquía de archivos de configuraciónXML, como se muestra en la Figura 1�9. El primer archivo de configuración es el archivoMachine.config. Este archivo se encuentra en la carpeta de configuración de la versión de. NETFramework instalado en el equipo, y generalmente se encuentra en la siguiente ubicación:

%WINDIR%\Microsoft.NET\Framework\version\Config\machine.config

El archivo Machine.config contiene configuración para todo tipo de aplicaciones. NET, comoWindows, la consola, Librerias de Clases, y aplicaciones Web. Estos ajustes son globales a lamáquina. Algunos de los ajustes en el archivo Machine.config pueden ser anulados por losajustes Web.config en archivos que están en la jerarquía, mientras que otros son globalesLosglobales están protegidos y no pueden ser anulados por los archivos Web.config

El siguiente archivo en la jerarquía es el principal archivo Web.config, que se encuentra en elmismo directorio que el archivo Machine.config. Este archivo contiene la configuración Webpredeterminada del servidor, algunas de las cuales pueden anular los ajustes en el archivoMachine.config.

En el directorio raíz de cada sitio Web, usted tiene la posibilidad de añadir un archivoWeb.config. Este archivo es opcional y puede contener ajustes adicionales para el sitio Web,así como anular configuraciones. En cada aplicación Web, también puede tener un archivoWeb.config para proporcionar más opciones y ajustes. Por último, cada subdirectorio en unaaplicación Web Opcionalmente, puede tener un archivo Web.config en que sólo unsubconjunto de las opciones es válida.

www.depurando.com 23

Page 24: ASP .NET Framework 3.5

���� �� �����+��� �� �� ,�-��� �� ��,$����� ���

�Procesar Ficheros de ConfiguraciónCuando se ejecuta la aplicación Web, en tiempo de ejecución se crea una caché de laconfiguración efectiva de la aplicación Web por el anidamiento de las capas de los archivos deconfiguración de la siguiente manera:

1. Se recuperan los ajustes del archivo Machine.config2. La configuración del archivo raíz Web.config se añaden a la caché, sobrescribiendo

cualquier configuración que se creó anteriormente.3. Si existe un archivo Web.config en la raíz del sitio Web, este archivo se lee en la

memoria caché, sobrescribir las entradas existentes.4. Si existe un archivo Web.config en la aplicación Web, que es leído en la caché, también

sobrescribe cualquier configuración existente. El resultado de la caché contiene laconfiguración de este sitio Web

5. Si tiene subdirectorios en su aplicación Web, los subdirectorios pueden tener unWeb.conifg archivo que incluye los ajustes que son específicos para los archivos ycarpetas que están contenidas dentro de esta carpeta.

Modificando el archivo de configuraciónDebido a que son archivos XML, los archivos de configuración se pueden abrir y modificar concualquier editor de texto o editor XML. También puede usar el. NET Framework 2.0Configuración complemento con la Microsoft Management Console (MMC), que proporcionauna interfaz gráfica de usuario (GUI) para modificar algunos de los archivo de configuración delos ajustes que un administrador puede querer cambiar.

Visual Studio 2005 también proporciona el Sitio Web Herramienta de administración, quepuede ser usado para modificar muchos de los ajustes de archivo de configuración. Puedeacceder a esta herramienta mediante la selección de Sitio Web | ASP.NET Configuración.

La Herramienta de administración del sitio Web permite editar las siguientes categorías de losarchivos de configuración:

� Seguridad Esta configuración permite la configuración de seguridad para su sitio web.En esta categoría, puede agregar los usuarios, roles, y permisos para su sitio Web.

� Configuración de la Aplicación esta categoría se utiliza para modificar la configuraciónde las aplicaciones.

� Configuración de Proveedor Este archivo contiene los ajustes de configuración quepermiten especificar el proveedor de la base de datos a utilizar para el mantenimientode la composición y funciones

www.depurando.com 24

Page 25: ASP .NET Framework 3.5

���� �� �����+��� �� �� ,�-��� �� ��,$����� ���

El Sitio Web Herramienta de administración le permite crear y modificar la configuración delsitio Web que no son hereditarios. Si una propiedad se hereda y no puede ser anulada,aparecerá, pero será atenuado cuando la configuración está desactivada.

www.depurando.com 25

Page 26: ASP .NET Framework 3.5

���� �� �����+��� �� �� ,�-��� �� ��,$����� ���

<system.web> <! Establezca debug "true" en la compilación para insertar símbolos de depuración en la página compilada. Dado que este proceso afecta al rendimiento, debe establecer este valor como true durante la depuración.

> <compilation debug "true">

</system.web>

Test1. You want to make a configuration setting change that will be global to all Web and Windows applications on the current computer. Which file do you change? (Choose one.)

A. Global.asaxB. Web.config C. Machine.config D. Global.asa

2. You want to make a configuration setting change that will affect only the current Web application. Which file will you change? (Choose one.)

A. Web.config that is in the same folder as the Machine.config file B. Web.config in the root of the Web application C. Machine.config D. Global.asa

3. You want to make a configuration setting change that will affect only the current Web application, and you want to use a tool that has a user-friendly Graphical User Interface (GUI). Which tool should you use? (Choose one.)

A. The Microsoft Management Utility B. Microsoft Word C. Visual Studio, using the | Tools | Options path D. Web Site Administration Tool

www.depurando.com 26

Page 27: ASP .NET Framework 3.5

AApliicaccocioon .

��

��

'%

a

Mne.NE

��

�:��

��;�

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsET 3

���

CTS:Web3.5

:b5

www.depurando.com 27

Page 28: ASP .NET Framework 3.5

���� ��� ���:�� '%��;��

����� ��� <���� ���:� =���

�>=����� �#$�� ���

Se puede utilizar para solucionar problemas y diagnosticar problemas con su sitio Web.También puede utilizar la traza para explorar la utilización de recursos en cada página Web.Esta lección se refiere a la habilitación y configuración de la traza y, a continuación, analiza losdatos que son puestos a disposición por la traza.

Activar y Configurar TrazaLa traza se puede activar en el archivo Web.Config. Pero también se puede utilizar laHerramienta de administraciónd el Sitio Web para proporcionar una interfaz gráfica fácil deusar para habilitar y configurar esta opción

Atributo Descripción enabled Atributo Boolean opcional.

www.depurando.com 28

Page 29: ASP .NET Framework 3.5

���� ��� ���:�� '%��;��

�Especifica si el seguimiento está habilitado o no para una aplicación. Para poder utilizar el visor Trace.axd, el seguimiento debe estar habilitado. El valor predeterminado es false.

localOnly Atributo Boolean opcional. Especifica si el visor de seguimiento (Trace.axd) sólo está disponible en el servidor Web del host. Si es false, el visor de seguimiento está disponible en cualquier equipo. El valor predeterminado es true.

mostRecent Atributo Boolean opcional. Especifica si se muestran los resultados de seguimiento de aplicación más recientes y se descartan los datos de seguimiento más antiguos que superen los límites indicados por requestLimit.Si es false, se muestran los datos de seguimiento de las solicitudes hasta alcanzar el valor del atributo requestLimit.Se trata de un atributo nuevo en .NET Framework, versión 2.0. El valor predeterminado es false.

pageOutput Atributo Boolean opcional. Especifica si se debe mostrar el resultado del seguimiento al final de cada página. Si es false, el acceso al resultado del seguimiento sólo es posible a través de la herramienta de seguimiento. El valor predeterminado es false.

requestLimit Atributo Int32 opcional. Especifica el número de solicitudes de seguimiento que deben almacenarse en el servidor. Si se alcanza el límite y el atributo mostRecent es false, se deshabilita el seguimiento automáticamente. El límite máximo de la solicitud es 10.000. Si se especifica un valor superior, ASP.NET lo redondeará automáticamente a la baja hasta 10.000.El valor predeterminado es 10.

traceMode Atributo TraceDisplayMode opcional. Especifica el orden en el que se mostrará la información de seguimiento. El atributo traceMode puede ser uno de los siguientes valores posibles:

Valor Description

SortByCategory Especifica que la información de seguimiento se muestra en el orden en que se procesa.

SortByTime Especifica que la información de seguimiento debe mostrarse ordenada alfabéticamente por las categorías definidas por el usuario.

El valor predeterminado es SortByTime.writeToDiagnosticsTrace Atributo Boolean opcional.

Especifica si los mensajes de seguimiento de ASP.NET se han de reenviar a la infraestructura de seguimiento de System.Diagnosticspara que los agentes de escucha registrados muestren los mensajes de Trace. El valor predeterminado es false.

<configuration>

<system.web>

<trace enabled "true"

pageOutput "true"

requestLimit "15"

mostRecent "true" />

<system.web>

www.depurando.com 29

Page 30: ASP .NET Framework 3.5

���� ��� ���:�� '%��;��

</configuration>

Si ha habilitado el seguimiento para la aplicación, al solicitar cualquier página, ésta reúneinformación de seguimiento y ejecuta cualquier instrucción de seguimiento que contenga.Puede ver el resultado del seguimiento en el visor de seguimiento. El visor de seguimientopermite elegir una solicitud específica entre las páginas solicitadas a la aplicación.

Si se reciben múltiples solicitudes para una aplicación que tiene habilitado el seguimiento, enel visor de seguimiento aparecen las solicitudes en el orden en que se procesaron. Lainformación de la página inicial del visor de seguimiento incluye la hora de la solicitud, elarchivo solicitado, el código de estado, el verbo HTTP asociado y un vínculo Ver detalles quepermite ver información más detallada acerca de la solicitud. El número de solicitudesdisponibles no superará el límite requestLimit especificado en el archivo Web.config.

En la captura de pantalla siguiente se muestra un visor de seguimiento con las siete solicitudesenviadas a la aplicación desde que se habilitó el seguimiento.

Para ver los detalles de seguimiento de una solicitud específica 1. Desplácese a Trace.axd en la raíz de la aplicación.

Por ejemplo, si la dirección URL de la aplicación es http://localhost/SampleApplication, vaya a

http://localhost/SampleApplication/trace.axd para ver información de seguimiento para la

aplicación.

2. Seleccione el vínculo Ver detalles de la solicitud que desee investigar.

Para borrar las solicitudes del visor de seguimiento 1. Desplácese a Trace.axd en la raíz de la aplicación.

2. Seleccione el vínculo borrar rastro actual para quitar todas las solicitudes almacenadas en el

visor de seguimiento.

www.depurando.com 30

Page 31: ASP .NET Framework 3.5

���� ��� ���:�� '%��;��

�Habilitar seguimiento a una páginaPuede controlar si se habilita o deshabilita el seguimiento para páginas individuales. Si elseguimiento está habilitado, cuando se solicita la página, ASP.NET agrega a la página una seriede tablas que contienen detalles de ejecución sobre la solicitud de la página. De formapredeterminada, el seguimiento está deshabilitado.

Para habilitar el seguimiento de una página

1. Incluya una directiva @ Page al principio del archivo .aspx.

2. Agregue un atributo Trace y establezca su valor en true, tal como se muestra en elejemplo siguiente:

<%@ Page Trace="true" %>

Test1. You want to identify which event in the Web page life cycle takes the longest time to execute. How can you accomplish this? (Choose one.)

A. Turn on ASP.NET trace and run the Web application. After that, review the trace results.B. Add a line of code to each of the life-cycle events that will print the current time. C. In the Web.config file, add the monitorTimings attribute and set it to True. D. In the Web site properties, turn on the performance monitor and run the Web application. After that, open performance monitor to see the timings.

2. You want to run the trace continuously to enable you to quickly look at the 10 most recent traces from anyone using your Web site, but you are concerned about filling your hard drive with an excessive amount of data. Which of the following settings will accomplish your objective? (Choose one.)

A. <trace enabled="false" requestLimit="10"pageOutput="false" traceMode="SortByTime" localOnly="true" mostRecent="true" />

B. <trace enabled="true" requestLimit="10"pageOutput="true"traceMode="SortByTime" localOnly="true" mostRecent="true" />

C. <trace enabled="true" requestLimit="10"pageOutput="false" traceMode="SortByTime" localOnly="true" mostRecent="false" />

D. <trace enabled="true" requestLimit="10"pageOutput="false" traceMode="SortByTime" localOnly="false"mostRecent="true" />

3. You are interested in examining the data that is posted to the Web server. What trace result section can you use to see this information? (Choose one.)

A. Control Tree B. Headers Collection C. Form Collection D. Server Variables

www.depurando.com 31

Page 32: ASP .NET Framework 3.5

AApliicacocioon .

��

'(

��

��

��

%�

Mne.NE

���

(��

�,$

���

����

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsET

� ��

� &

$���

�����

���

CTS:Web3.5

��

:b5

www.depurando.com 32

Page 33: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

����� �� � <���� � ������ ��

%������

Cuando crea páginas Web ASP.NET, puede utilizar estos tipos de controles:

� Controles de servidor HTML Elementos HTML expuestos al servidor para que sepuedan programar. Los controles de servidor HTML exponen un modelo de objeto quese relacionan muy estrechamente con los elementos HTML que representan.

� Controles de servidor Web Controles con más funciones incorporadas que loscontroles de servidor HTML. Los controles de servidor Web incluyen no sólo controlesde formulario como botones y cuadros de texto, sino también controles con finesespeciales como un calendario, menús y un control de vista de árbol. Los controles deservidor Web son más abstractos que los controles de servidor HTML pues su modelode objetos no refleja necesariamente la sintaxis HTML.

� Controles de validación Controles que incorporan lógica para permitirle comprobarlos controles de entrada de los usuarios como el control TextBox. Los controles devalidación le permiten comprobar un campo necesario, su adecuación a un valor o unmodelo de caracteres concreto, comprobar que un valor se encuentra en un intervalopredefinido, etc.

� Controles de usuario Controles que crea como páginas Web ASP.NET. Se puedenincrustar controles de usuario de ASP.NET en otras páginas Web ASP.NET; esta es una

forma sencilla de crear barras de herramientas y otros elementos reutilizables.

Controles de Servidor HTMLLos controles de servidor HTML son elementos HTML (o elementos en otro marcadocompatible, como XHTML) que contienen atributos que los convierten en programables encódigo del servidor. De forma predeterminada, los elementos HTML en una página WebASP.NET no están disponibles para el servidor. En su lugar, se tratan como texto opaco y sepasan al explorador. Sin embargo, cuando se convierten en controles de servidor HTML, loselementos HTML quedan expuestos como elementos programables en el servidor.

www.depurando.com 33

Page 34: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

�El modelo de objetos de los controles de servidor HTML se relaciona estrechamente con el delos elementos correspondientes. Por ejemplo, los atributos HTML se exponen en controles deservidor HTML como propiedades.

Cualquier elemento HTML de una página se puede convertir en control de servidor HTMLagregando el atributo runat="server". Durante el análisis, el marco de trabajo de la páginaASP.NET crea instancias de todos los elementos que contienen el atributo runat="server". Sidesea hacer referencia al control como un miembro dentro del código, también deberáasignarle un atributo id al control.

El marco de trabajo de la página proporciona controles de servidor HTML predefinidos para loselementos HTML que se utilizan con más frecuencia dinámicamente en una página: elelemento form, los elementos input (cuadro de texto, casilla, botón Enviar), el elementoselect, etc. Estos controles de servidor HTML predefinidos comparten las propiedades básicasdel control genérico y, además, cada control normalmente proporciona su propio conjunto depropiedades y su propio evento.

Los controles de servidor HTML ofrecen las funciones siguientes:

� Un modelo de objetos que pueda volver a programar en el servidor con las técnicashabituales orientadas a objetos. Los controles de servidor exponen propiedades quepermiten manipular los atributos de marcado del control mediante programación en elcódigo del servidor.

� Un conjunto de eventos para los que pueda escribir controles de eventos de la mismaforma que lo haría en un formulario basado en cliente, con la excepción de que unevento se controla en código del servidor.

� La capacidad de controlar eventos en un script de cliente.

� Mantenimiento automático del estado del control. Cuando la página realiza una acciónde ida y vuelta al servidor, los valores que el usuario escriba en los controles deservidor HTML se mantendrán automáticamente y la página se devuelve al explorador.

� Interacción con los controles de validación ASP.NET para poder comprobar que unusuario ha escrito la información adecuada en un control.

� Enlace de datos a una o varias de las propiedades del control.

� Compatibilidad con estilos si la página Web ASP.NET se muestra en un explorador queadmite hojas de estilos en cascada.

� Paso a través de atributos personalizados. Pueden agregarse los atributos que senecesiten a un control de servidor HTML: el marco de trabajo de páginas losrepresentará sin ningún cambio en la funcionalidad. Esto permite agregar atributosespecíficos del explorador a los controles.

www.depurando.com 34

Page 35: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

�Controles de Servidor WebLos controles de servidor Web son un segundo conjunto de controles diseñado con otroenfoque. No se asignan necesariamente uno a uno a controles de servidor HTML. En lugar deello, se definen como controles abstractos, en los que el marcado real representado por elcontrol puede ser muy diferente al modelo con respecto al que se han programado. Porejemplo, un control RadioButtonList de servidor Web podría representarse en una tabla ocomo un texto en línea con otro marcado.

Los controles de servidor Web incluyen controles de formulario tradicionales como botones ycuadros de texto, además de controles complejos, como, por ejemplo, las tablas. Tambiénincluyen controles que proporcionan funcionalidad de formulario de uso frecuente, como lapresentación de datos en cuadrícula, la elección de fechas, la visualización de menús, etc.

Los controles de servidor Web ofrecen todas las funciones descritas anteriormente para loscontroles de servidor HTML (excepto la asignación uno a uno a elementos) y estas funcionesadicionales:

� Un modelo de objetos enriquecido que proporciona capacidades de programación detipo seguro.

� Detección automática del explorador. Los controles pueden detectar las funciones delexplorador y representar el marcado adecuado.

� Para algunos controles, la capacidad para definir su propio diseño para el controlutilizando Templates.

� Para algunos controles, la capacidad de especificar si un evento del control provoca unenvío inmediato al servidor o, en su lugar, se almacena en caché y se activa cuando seenvía la página.

� Compatibilidad para temas, lo que le permite definir un aspecto uniforme para loscontroles en todo el sitio.

� Capacidad para pasar eventos de un control anidado (como un botón en una tabla) alcontrol contenedor.

Los controles utilizan una sintaxis como la que se muestra a continuación:

<asp:button atributos runat="server" id="Button1" />

En este caso los atributos no son los de los elementos HTML. En lugar de ello, son propiedadesdel control Web.

Cuando se ejecuta la página Web ASP.NET, el control de servidor Web se representa en lapágina utilizando el marcado apropiado, que con frecuencia no sólo depende del tipo deexplorador sino también de la configuración que haya realizado para el control. Por ejemplo,un control TextBox podría representarse como una etiqueta input o una etiqueta textareadependiendo de sus propiedades.

www.depurando.com 35

Page 36: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

�Ciclo de Vida de una página web y sus ControlesCuando se ejecuta una página ASP.NET, ésta recorre un ciclo de vida en el que realiza una seriede pasos de procesamiento. Entre ellos se incluyen la inicialización, la creación de instancias decontroles, la restauración y el mantenimiento del estado, la ejecución del código delcontrolador de eventos y la representación. Es importante que comprenda el ciclo de vida dela página para que pueda escribir código en la fase del ciclo de vida apropiada y conseguir elefecto deseado. Además, si crea controles personalizados, debe estar familiarizado con el ciclode vida de la página para poder inicializarlos, asignar datos de estado de vista a laspropiedades de los controles y ejecutar el código de comportamiento de éstos correctamente.(El ciclo de vida de un control está basado en el ciclo de vida de la página, pero ésta produceen un control más eventos de los que están disponibles para la página ASP.NET por sí sola.)

Fase Descripción

Solicitud de página La solicitud de página se produce antes de que comience el ciclo de vida de la página. Cuando un usuario solicita la página, ASP.NET determina si ésta se debe analizar y compilar (a fin de que comience el ciclo de vida de la página) o si se puede enviar una versión en caché de la página como respuesta sin ejecutar la página.

Inicio En el paso de inicio, se establecen las propiedades de la página, como Request y Response. En esta fase, la página también determina si la solicitud es una devolución de datos o una nueva solicitud, y establece la propiedad IsPostBack. Además, durante esta fase se establece la propiedad UICulture de la página.

Inicialización de página

Durante la inicialización de la página, los controles incluidos en ella están disponibles y se establece la propiedad UniqueID de cada uno de ellos. Además, se aplican los temas correspondientes a la página. Si la solicitud actual es una devolución de datos, los datos de devolución aún no se han cargado y los valores de las propiedades del control no se han restaurado a los valores del estado de vista.

Carga Durante la carga, si la solicitud actual es una devolución de datos, las propiedades del control se cargan con información recuperada del estado de vista y del estado del control.

Validación Durante la validación, se llama al método Validate de todos los controles de validación, que establece la propiedad IsValid de cada uno de los controles de validación y de la página.

Control de eventos de devolución de datos

Si la solicitud es una devolución de datos, se llama a los controladores de eventos.

Representación Antes de representar los datos, se guarda el estado de vista de la página y de todos los controles. Durante la fase de representación, la página llama al método Render para cada control, proporcionando un escritor de texto que escribe su resultado en OutputStream de la propiedad Response de la página.

Descarga Se llama a la descarga cuando la página se ha representado completamente, se ha enviado al cliente y está lista para ser descartada. Llegado este momento, se descargan las propiedades de la página, como Response y Request, y se llevan a cabo las operaciones de limpieza correspondientes.

ViewStateUna de las diferencias más importantes que había hasta ahora entre la programación de unprograma para PC y la programación de una Web, es que en las aplicaciones Web el clienterealiza una petición (de una página), el servidor ejecuta el código asociado a la petición y ledevuelve un resultado al cliente. A partir de ese momento, el servidor no tiene consciencia decómo está actuando el cliente.

www.depurando.com 36

Page 37: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

�Para explicarlo mejor, veamos un sencillo ejemplo:

paginaEjemplo.aspx<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox><asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>

paginaEjemplo.aspx.csprotected void Button1_Click(object sender, EventArgs e){Label1.Text = TextBox1.Text;

}

En este ejemplo, cuando el cliente hace clic en el Button1, el servidor devolverá una página enla que en Label1 estará el texto que haya escrito el cliente en TextBox1... pero sucede algomás: en TextBox1 sigue estando el texto que ha escrito el cliente.

Esto, que parece tan normal y que en los programas para PC es tan típico, esconde unacomplejidad muy grande. Pensémoslo bien... el cliente envío los resultados de un formulariomediante el método POST, el servidor los procesa y devuelve un resultado en forma de HTML,con los controles en el mismo estado que cuando el cliente hizo el envío, en este caso con elTextBox1 rellenado...

Ese es el concepto de ViewState: el mantener el estado de los controles de una misma páginaentre una ida y venida al servidor.

Pero es que ViewState no se queda sólo ahí. Rellenemos, por ejemplo, tanto el TextBox1 comoel TextBox2, y comprobamos que aunque al TextBox2 no se le hace alusión alguna en nuestrocódigo, también mantiene el mismo estado...

Pero, ¿dónde está el truco? Como ya sabrás, lo único que no se puede hacer en programaciónes magia. Por ejemplo, échale un vistazo al código fuente de esta página (o cualquier otrapágina ASP.NET), y verás que hay un campo hidden llamado ViewState con un valorincomprensible y generalmente muy largo (depende de la página, de la cantidad de controlesde los que haya que controlar el estado, etc.).

En ese valor tan extraño está almacenado el estado de todos los controles de la página (comoimaginarás es una codificación de los valores legibles). Pero el ViewState no sólo es eso, elViewState permite otras muchísimas cosas, como por ejemplo, averiguar si es la primera vezque ejecutamos una página o la hemos llamado antes ya.

Desde código se puede acceder al ViewState y guardar las variables que quieras en él, incluso

www.depurando.com 37

Page 38: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

!de tipos de datos que te hayas inventado tú (siempre que sean Serializables).

Por ejemplo, puedes guardar una variable en ViewState...

ViewState["ejemplo"] = 21;

... y acceder a su valor cuando has hecho clic en tres botones y has hecho un postback con 2listas desplegables

int i = (int)ViewState["ejemplo"];

Sólo tienes que recordar dos cosas básicas:1.� Hay que parsear el dato al tipo de datos que corresponde cuando leemos el valor delViewState (en este caso al tipo integer, pero puede tratarse de cualquier tipo de datos)2.� El ViewState es una variable del ámbito de petición una misma página. Es decir, tú puedestrabajar con el ViewState siempre que estés en la misma página y siempre que lo único quehagas en ella sean postBack. Por ejemplo, el ViewState se resetearía a su valor inicial siestando en una página presionamos el "Go" de nuestra barra de direcciones.

Si lo queremos pensar de otra forma, el ViewState es lo mismo que una variable de Session enel ámbito de una página

Eventos de PáginaEvento de página Uso típico

PreInit Utilice este evento para lo siguiente: � Examine la propiedad IsPostBack para determinar si es la

primera vez que se procesa la página.

� Crear o volver a crear controles dinámicos.

� Establecer una página maestra de forma dinámica.

� Establecer la propiedad Theme de forma dinámica.

� Leer o establecer los valores de las propiedades de perfil.

Init Se provoca cuanto todos los controles se han inicializado y se ha aplicado la configuración de máscara. Utilice este evento para leer o inicializar las propiedades del control.

InitComplete Lo provoca el objeto Page. Utilice este evento para tareas de procesamiento que requieran que todo el proceso de inicialización haya finalizado.

PreLoad Utilice este evento si necesita realizar tareas de procesamiento en su página o control antes de que se provoque el evento Load.Después de que Page provoca este evento, carga su estado de vista y el de todos los controles y, después, procesa todos los datos de devolución incluidos con la instancia de Request.

Load Page llama al método del evento OnLoad en Page, realiza la misma operación de forma recursiva para cada control secundario, los cuales realizan la misma operación para cada uno de sus controles secundarios hasta que se cargan la página y todos los controles. Utilice el método del evento OnLoad para establecer las propiedades

www.depurando.com 38

Page 39: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

"de los controles y establecer las conexiones a bases de datos.

Eventos de control Utilice estos eventos para controlar eventos de control específicos, como un evento Click del control Button o un evento TextChanged del control TextBox.

LoadComplete Utilice este evento para las tareas que requieran que se carguen todos los demás controles en la página.

PreRender Antes de que se produzca este evento: � El objeto Page llama a EnsureChildControls para cada control y

para la página.

� Cada control enlazado a datos cuya propiedad DataSourceID esté

establecida llama a su método DataBind. Para obtener más

información, vea Eventos de enlace de datos de controles

enlazados a datos más adelante.

El evento PreRender se produce para cada control de la página. Utilice el evento para realizar cambios finales en el contenido de la página o en sus controles.

SaveStateComplete Antes de que se produzca este evento, ViewState se ha guardado para la página y para todos los controles. Se omitirán todos los cambios que se realicen en este momento en la página o en los controles. Utilice este evento para realizar tareas que requieran guardar el estado de vista, pero que no efectúen cambios en los controles.

Render Éste no es un evento; en esta fase del procesamiento, el objeto Pagellama a este método en cada control. Todos los controles de servidor Web de ASP.NET tienen un método Render que escribe el marcado del control que se envía al explorador. Si crea un control personalizado, normalmente reemplazará este método para generar el marcado del control. Sin embargo, si el control personalizado sólo incorpora controles de servidor Web de ASP.NET estándar y ningún marcado personalizado, no necesita reemplazar el método Render.Un control de usuario (un archivo .ascx) incorpora automáticamente la representación, por lo que no necesita representar explícitamente el control en el código.

Unload Este evento se produce para cada control y después para la página. En los controles, utilice este evento para realizar tareas finales de limpieza en controles específicos, como cerrar las conexiones a bases de datos específicas del control. Para la propia página, utilice este evento para hacer un último trabajo de limpieza, como cerrar archivos abiertos y conexiones a bases de datos, finalizar el registro u otras tareas específicas de la solicitud.

Manejadores de EventosLa página Web y sus controles de servidor tienen un evento predeterminado. Por ejemplo,elevento por defecto de las páginas web es el de Carga, y el evento por defecto del botón es elevento Click. En Microsoft Visual Studio 2008, entorno en tiempo de diseño, puede agregar unmétodo al controlador de eventos para el evento predeterminado simplemente haciendodoble clic en la superficie del objeto. Un controlador de eventos se crea en el archivo de códigosubyacente. Por ejemplo, si hace doble clic en la página web, un evento Page_Load método secrea en la página de código subyacente, y puede agregar su código personalizado en estemétodo.

www.depurando.com 39

Page 40: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

)¿Controles de Servidor Web o Controles de Servidor HTML?Las siguientes secciones cubren HTML y controles de servidor Web. Con frecuencia, la cuestiónse plantea: ¿qué debo utilizar? Aquí hay algunas directrices que pueden ayudarle a elegir eltipo de control adecuado.

Considerar la utilización de los controles de servidor HTML cuando tengan lugar cualquiera delas condiciones siguientes:

Va a migrar las páginas ASP a ASP.NET.

El control necesita javascript del lado del cliente para sus eventos

Creando Controles de Servidor HTML

Para agregar un control de servidor HTML

� Escriba la sintaxis HTML del elemento que desea utilizar como un control. Incluya lasintaxis HTML normal para el elemento y, además, haga lo siguiente:

� Establezca el atributo (propiedad) ID del control en un valor único para esapágina, a menos que el control forme parte de un control complejo y serepetirá (como en los controles Repeater, DataList y GridView).

� Establezca el atributo runat="server" para convertir el elemento en control.

El ejemplo siguiente muestra cómo declarar unos controles HtmlInputText, HtmlInputText,HtmlInputButton y HtmlAnchor:

<input id="Name" type="text" size="40" runat="server" />

www.depurando.com 40

Page 41: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

*<input type="submit" id="Enter" value="Enter" runat="server" />

Click <a id="Anchor1" runat="server" href="more.html">More </a> to see the next page.

Ejemplo

<html><head>

<title>Customer Page</title></head><body>

<form name "Form1" method "post" action "update.asp" id "Form1"><input type "text" name "CustomerName" id "CustomerName"><input type "submit" name "SubmitButton" value "Submit" id "SubmitButton"></form>

</body></html>

<html><head>

<title>Customer Page</title></head><body>

<form name "Form1" method "post" id "Form1" runat "server"><input type "text" name "CustomerName" id "CustomerName" runat "server"><input type "submit" name "SubmitButton" value "Submit" id "SubmitButton"

runat "server"></form>

</body></html>

En esencia, se observa que se han usado los típicos controles HTML pero añadiéndolesrunat="server"

También se puede observar que el atributo de acción fue retirado de la etiqueta delformulario, porque es la costumbre de enviar los datos de vuelta a la misma página.

Los controles HTML también los podemos crear desde la barra de herramientas

www.depurando.com 41

Page 42: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

Propiedad Descripción Attributes Una lista de todos los pares de atributos nombre / valor

indicados en la etiqueta del control de servidor. Esto es accesible a través de código.

Disabled Desabilita el control

Id Identificador para programación

Style Propiedades CSS aplicadas al control

TagName Nombre del elemento

www.depurando.com 42

Page 43: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

�Visible Oculta o hace visible al control

<input type "button" id "myButton" runat "server" style "position: absolute; top: 50px;left: 100px;" value "Click Me" visible "true" />

<input id "Button1" name "myButton" type "button" style "position: absolute; top: 50px;left: 100px;" value "Click Me" />

Además de establecer las propiedades de los controles desde código, también las podemosestablecer desde la ventana de diseño

Otra posibilidad sería establecer las propiedades programáticamente:

using System; using System.Configuration; using System.Data; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq;

public partial class Default : System.Web.UI.Page{

protected void Page Load(object sender, EventArgs e) { myButton.Visible true; myButton.Style.Add("position", "absolute"); myButton.Style.Add("left", "75px"); myButton.Style.Add("top", "150px"); } }

www.depurando.com 43

Page 44: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

protected void myButton ServerClick(object sender,System.EventArgs e) { DIV1.InnerText Text1.Value; }

Desventajas de los Controles Web HTMLHay un par de inconvenientes a la utilización de controles de servidor HTML. Una desventaja esque los controles HTML no tiene un modelo de programación que sea compatible con Win�Forma de programación. Por ejemplo, en WinForm programación, los datos que se teclean enel cuadro de texto está disponible a través de la propiedad Text, mientras que el control deservidor HTML del cuadro de texto se dispone de datos a través de la propiedad Value.

Otra desventaja de los controles de servidor HTML es que un control de servidor HTML semapea directamente a una sola etiqueta HTML.

Controles de Servidor WEBLos controles de servidor Web ASP.NET son objetos de páginas Web ASP.NET que se ejecutancuando se solicita la página y representan el formato en un explorador. Muchos controles deservidor Web son similares a elementos HTML conocidos, como botones y cuadros de texto.Sin embargo, otros controles abarcan un comportamiento complejo, por ejemplo un controlde calendario o los controles que administran conexiones de datos.

Los temas de esta sección describen qué son los controles de servidor Web ASP.NET y cómotrabajar con ellos. La sección también contiene información sobre todos los controles deservidor Web ASP.NET integrados y sobre cómo puede crear sus propios controles.

www.depurando.com 44

Page 45: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

� <asp:textbox attributes runat="server" />

Para añadir controles de servidor web a una página web podemos hacerlo de las siguientesformas:

1. En vista Diseño2. Con código3. De forma dinámica vía código

protected void Page_Init(object sender,System.EventArgs e) { TextBox c = new TextBox(); c.ID = "txtUserName"; c.Visible = true; form1.Controls.Add(c); }

Propiedades de los Controles de Servidor Web

Propiedades Descripción

AccessKey Tecla de acceso para añadir a [alt]

Attributes Atributos

BackColor Color de Fondo

BorderColor Color del borde

BorderWidth Ancho del borde

BorderStyle Estilo del Borde

CssClass Clase CSS

Style Propiedades de Css

www.depurando.com 45

Page 46: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

�Enabled Activar o desactivar el control

EnableTheming Permitir Temas para el control

EnableViewState Activar View State

Font Fuente

ForeColor Color de la fuente

Height Altura

SkinID Skin a aplicar al control

TabIndex Posición en el Tab order. Si no tiene establecido valor es un 0

ToolTip Texto de ayuda

Width Anchura

<asp:Button ID "btnWebButton" runat "server" Style "position: absolute; top: 50px;left: 300px;" Text "WebButton" />

<input id "Submit1" type "submit" name "btnWebButton" value "WebButton" style "position:absolute;

top: 50px; left: 300px;" />

btnWebButton.Visible true; btnWebButton.Style.Add("position", "absolute"); btnWebButton.Style.Add("top", "200px"); btnWebButton.Style.Add("left", "350px");

PostBackEn ASP.NET los WebForms están diseñados para enviar información hacia al servidorpara su procesamiento. Esa operación es denominada POSTBACK. El PostBack tienelugar cuando el usuario hace click en un control Button o cuando se establece lapropiedad AutoPostBack a true en un control de servidor y se produce algún cambioen ese control.

Trabajar con nombres de los contenedores y los controles hijosUna página Web se compone de una jerarquía de los controles. la página web tiene unacolección de controles, cada uno de los controles en esa colección tiene su propia colección decontroles, y así sucesivamente.

www.depurando.com 46

Page 47: ASP .NET Framework 3.5

���� �� � '(��� & ��,$���� �������� �� %������

�Dentro de un contenedor de controles, cada control debe ser identificable inequivocamente.Normalmente, esto se logra mediante la asignación de un valor único para el control deservidor en la propiedad ID.

Control c = FindControl("lblMessage");

Control c = GridView1.FindControl("ctl08");

TEST1. To add an HTML Web server control to the Web page, you must drag an HTML element

from the ToolBox to the Web page and then perform which of the following tasks? (Choose one.)

A. Right-click the HTML element and click Run=Server.

B. Double-click the HTML element to convert it to an HTML server control.

C. Right-click the HTML element and click Run As Server Control.

D. Click the HTML element and set ServerControl to true in the Properties window.

2. You noticed that clicking a CheckBox does not cause a PostBack; you need the CheckBox to PostBack so you can update the Web page based on server-side code. How do you make the CheckBox cause a PostBack? (Choose one.)

A. Set the AutoPostBack property to true.

B. Add JavaScript code to call the ForcePostBack method.

C. Set the PostBackAll property of the Web page to true.

D. Add server-side code to listen for the click event from the client.

3. After writing code to create a new instance of a TextBox server control, what do you need to do to get the TextBox to display on the Web page? (Choose one.)

A. Call the ShowControl method on the TextBox.

B. Set the VisibleControl to true on the TextBox.

C. Add the TextBox instance to the form1.Controls collection.

D. Execute the AddControl method on the Web page.

www.depurando.com 47

Page 48: ASP .NET Framework 3.5

AApliicacocioon .

��

��

��

%�

Mne.NE

���

���

����

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsET

� ���

�����

���

CTS:Web3.5

��

:b5

www.depurando.com 48

Page 49: ASP .NET Framework 3.5

���� ���� �������� �� %������

����� �� �������� �� %������ ���

������

LabelRepresenta un control de etiqueta que muestra texto en una página Web. Utilice el controlLabel para mostrar texto en una ubicación establecida de la página. A diferencia del textoestático, se puede personalizar el texto que se muestra mediante la propiedad Text.

También es posible utilizar los controles Literal y PlaceHolder para mostrar texto en la páginade formularios Web Forms. Sin embargo, al contrario de lo que ocurre con el control Label,estos controles no representan etiquetas adicionales.

<%@ Page Language "C#" AutoEventWireup "True" %> <!DOCTYPE html PUBLIC " //W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1 transitional.dtd"><html ><head>

<title>Label Example</title><script language "C#" runat "server">

void Button Click(Object Sender, EventArgs e) { Label1.Text Server.HtmlEncode(Text1.Text); }

</script>

</head>

<body>

<form id "Form1" runat "server">

<h3>Label Example</h3>

<asp:Label id "Label1"Text "Label Control"runat "server"/>

<p>

<asp:TextBox id "Text1"Text "Copy this text to the label" Width "200px"runat "server" />

<asp:Button id "Button1"Text "Copy"OnClick "Button Click"runat "server"/>

</p>

</form>

</body></html>

TextBoxMuestra un control de cuadro de texto para la entrada de datos del usuario. El control deservidor TextBox es un control de entrada que permite al usuario escribir texto. De manera

www.depurando.com 49

Page 50: ASP .NET Framework 3.5

���� ���� �������� �� %������

�predeterminada, se establece la propiedad TextMode del control en TextBoxMode.SingleLine,que muestra un cuadro de texto de una sola línea. No obstante, también puede usar el controlTextBox para mostrar un cuadro de texto multilínea o un cuadro de texto que enmascara losdatos proporcionados por el usuario al cambiar el valor de la propiedad TextMode aTextBoxMode.MultiLine o TextBoxMode.Password, respectivamente. El texto mostrado en elcontrol TextBox se especifica o determina con la propiedad Text.

El control TextBox contiene varias propiedades que permiten controlar la apariencia delcontrol. El ancho de presentación del cuadro de texto, expresado en caracteres, vienedeterminado por la propiedad Columns. Si el control TextBox es un cuadro de texto multilínea,el número de filas que muestra lo determina la propiedad Rows. Para mostrar texto que seajusta dentro del control TextBox, establezca la propiedad Wrap en true.

También se puede especificar cómo se incluyen los datos en el control TextBox estableciendoalgunas propiedades. Para impedir que se modifique el texto mostrado en el control,establezca la propiedad ReadOnly en true. Para limitar los datos proporcionados por el usuarioa un número especificado de caracteres, establezca la propiedad MaxLength.

ButtonMuestra un control de botón de comando en la página Web. Utilice el control Button paracrear un botón de comando en la página Web. Se puede crear un botón Enviar o un botónComando.

De manera predeterminada, un control Button es un botón Enviar. Un botón Enviar no tieneasociado un nombre de comando (especificado por la propiedad CommandName) ysimplemente devuelve la página Web al servidor. Se puede proporcionar un controlador deeventos para el evento Click con el fin de controlar mediante programación las accionesrealizadas cuando se hace clic en el botón Enviar.

Un botón Comando puede tener asociado un nombre de comando, como Sort, mediante elestablecimiento de la propiedad CommandName. Esto permite crear varios controles Buttonen una página Web y determinar mediante programación en qué control Button se hace clic.También se puede usar la propiedad CommandArgument con un botón de comando parafacilitar información adicional sobre el comando que se va a ejecutar, como Ascending. Sepuede proporcionar un controlador de eventos para el evento Command con el fin decontrolar mediante programación las acciones realizadas cuando se hace clic en el botónComando.

De manera predeterminada, se realiza la validación de la página cuando se hace clic en uncontrol Button. La validación de la página determina si todos los controles de entradaasociados a un control de validación en la página cumplen las reglas de validaciónespecificadas por el control de validación. Para evitar que se realice la validación de la página,establezca la propiedad CausesValidation en false.

<%@ Page Language "C#" AutoEventWireup "True" %>

<!DOCTYPE html PUBLIC " //W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1 transitional.dtd">

www.depurando.com 50

Page 51: ASP .NET Framework 3.5

���� ���� �������� �� %������

<html ><head>

<title>Button Example</title><script language "C#" runat "server">

void SubmitBtn Click(Object sender, EventArgs e) { Message.Text "Hello World!!"; }

</script></head><body>

<form id "form1" runat "server">

<h3>Button Example</h3>

Click on the submit button.<br /><br />

<asp:Button id "Button1"Text "Submit"OnClick "SubmitBtn Click"runat "server"/>

<br /><asp:label id "Message" runat "server"/>

</form></body></html>

CheckBoxMuestra una casilla de verificación que permite al usuario seleccionar una condición true o false. Utilice el control CheckBox para permitir que el usuario seleccione un estado true o false.

Si piensa utilizar varios controles CheckBox, el control CheckBoxList es un control alternativo que aporta funciones prácticas de enlace de datos. Sin embargo, los controles CheckBox individuales permiten un mayor control sobre el diseño.

RadioButtonRepresenta un control de botón de opción. El control de servidor RadioButton permiteintercalar botones de opción en un grupo con otro contenido dentro de la página. Los botonesse agrupan de forma lógica si todos ellos comparten la misma propiedad GroupName.

<%@ Page Language "C#" AutoEventWireup "True" %> <!DOCTYPE html PUBLIC " //W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1 transitional.dtd"><html ><head>

<title>RadioButton Example</title><script language "C#" runat "server">

void SubmitBtn Click(Object Sender, EventArgs e) {

if (Radio1.Checked) { Label1.Text "You selected " + Radio1.Text; }

else if (Radio2.Checked) { Label1.Text "You selected " + Radio2.Text; }

else if (Radio3.Checked) { Label1.Text "You selected " + Radio3.Text; }

www.depurando.com 51

Page 52: ASP .NET Framework 3.5

���� ���� �������� �� %������

}

</script>

</head><body>

<h3>RadioButton Example</h3>

<form id "form1" runat "server">

<h4>Select the type of installation you want to perform:</h4>

<asp:RadioButton id "Radio1" Text "Typical" Checked "True"GroupName "RadioGroup1" runat "server" /><br />

This option installs the features most typically used. <i>Requires 1.2 MB disk space.</i><br />

<asp:RadioButton id "Radio2" Text "Compact" GroupName "RadioGroup1"runat "server"/><br />

This option installs the minimum files required to run the product.<i>Requires 350 KB disk space.</i><br />

<asp:RadioButton id "Radio3" runat "server" Text "Full" GroupName "RadioGroup1"/><br />

This option installs all features for the product. <i>Requires 4.3 MB disk space.</i><br />

<asp:button ID "Button1" text "Submit" OnClick "SubmitBtn Click"runat "server"/>

<asp:Label id "Label1" font bold "true" runat "server" />

</form>

</body></html>

1. If you want multiple RadioButton controls to be mutually exclusive, what property must you set? (Choose one.)

A. Exclusive

B. MutuallyExclusive

C. Grouped

D. GroupName

2. You are creating a Web page that has several related buttons, such as fast forward, reverse, play, stop, and pause. You want to create a single event handler that processes the PostBack from these Button controls. Other than the normal Submit button, what type of button can you create as a solution? (Choose one.)

A. OneToMany

B. Command

C. Reset

D. ManyToOne

3. When in Design view, what is the simplest way to create an event handler for the default event of a server control? (Choose one.)

A. Open the code behind page and write the code.

B. Right click the control and select Create Handler.

C. Drag an event handler from the ToolBox to the desired control.

www.depurando.com 52

Page 53: ASP .NET Framework 3.5

���� ���� �������� �� %������

�D. Double click the control.

Ejemplo 1

<%@ Page Language "C#" AutoEventWireup "true" CodeFile "Default.aspx.cs"Inherits " Default" %>

<!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>Untitled Page</title></head><body>

<form id "form1" runat "server" ><div>

&nbsp;<div><asp:Label ID "Label1" runat "server" Style "z index: 100; left: 95px;

position: absolute;top: 30px" Text "MyLabel" Width "65px"></asp:Label>

<asp:TextBox ID "TextBox1" runat "server" Style "z index: 101; left: 95px;position: absolute;

top: 55px"></asp:TextBox><asp:Button ID "Button1" runat "server" OnClick "Button1 Click" Style "z

index: 102;left: 95px; position: absolute; top: 85px" Text "MyButton" />

<asp:CheckBox ID "CheckBox1" runat "server"OnCheckedChanged "CheckBox1 CheckedChanged"

Style "z index: 103; left: 95px; position: absolute; top: 115px"Text "MyCheckBox" />

<asp:RadioButton ID "RadioButton1" runat "server"OnCheckedChanged "RadioChanged"

Style "z index: 104; left: 95px; position: absolute; top: 140px"Text "MyRadioButton1" />

<asp:RadioButton ID "RadioButton2" runat "server"OnCheckedChanged "RadioChanged"

Style "z index: 105; left: 95px; position: absolute; top: 165px"Text "MyRadioButton2" />

<asp:RadioButton ID "RadioButton3" runat "server"OnCheckedChanged "RadioChanged"

Style "z index: 107; left: 95px; position: absolute; top: 190px"Text "MyRadioButton3" />

</div>

</div></form>

</body></html>

using System;

www.depurando.com 53

Page 54: ASP .NET Framework 3.5

���� ���� �������� �� %������

!

using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls;

public partial class Default : System.Web.UI.Page{

protected void Page Load(object sender, EventArgs e) { System.Diagnostics.Debug.WriteLine("Page Load"); }

protected void Page Init(object sender, EventArgs e) { System.Diagnostics.Debug.WriteLine("Page Init"); }

protected void Page PreRender(object sender, EventArgs e) { System.Diagnostics.Debug.WriteLine("Page PreRender"); }

protected void Page PreInit(object sender, EventArgs e) { System.Diagnostics.Debug.WriteLine("Page PreInit"); }

protected void Page Unload(object sender, EventArgs e) { System.Diagnostics.Debug.WriteLine("Page Unload"); }

protected void Button1 Click(object sender, EventArgs e) { Label1.Text Server.HtmlEncode(TextBox1.Text); }

protected void CheckBox1 CheckedChanged(object sender, EventArgs e) {

if (CheckBox1.Checked) { CheckBox1.Text DateTime.Now.ToString(); } }

protected void RadioChanged(object sender, EventArgs e) {

RadioButton r (RadioButton)sender; TextBox1.Text r.Text; }}

www.depurando.com 54

Page 55: ASP .NET Framework 3.5

���� ���� �������� �� %������

"Ejemplo 2

<%@ Page Language="C#"%>

<html><head>

<link rel "stylesheet"href "intro.css"></head>

<body>

<center>

<form action "intro2 cs.aspx" method "post">

<h3> Name: <input id "Name" type text>

Category: <select id "Category" size 1><option>psychology</option><option>business</option><option>popular comp</option>

</select>

</h3>

<input type submit value "Lookup">

<p>

<% for (int i 0; i <8; i++) { %><font size "<% i%>"> Welcome to ASP.NET </font> <br>

<% }%>

</form>

</center>

</body></html>

www.depurando.com 55

Page 56: ASP .NET Framework 3.5

���� ���� �������� �� %������

)Ejemplo 3

<%@ Page Language="C#" %>

<html><head>

<link rel "stylesheet"href "intro.css"></head>

<body>

<center>

<form action "intro3 cs.aspx">

<h3> Name: <input name "Name" type text value "<% HttpUtility.HtmlEncode(Request.QueryString["Name"])%>">

Category: <select name "Category" size 1>

<% String [] values { "psychology", "business", "popular comp" };

for (int i 0; i<values.Length; i++) { %>

<option <% if (Request.QueryString["Category"] values[i]) { Response.Write("selected"); } %>>

<% values[i]%></option>

<% } %>

</select>

</h3>

<input type submit name "Lookup" value "Lookup">

<p>

<% if (Request.QueryString["Lookup"] ! null) { %>

Hi <% HttpUtility.HtmlEncode(Request.QueryString["Name"]) %>, you selected: <% HttpUtility.HtmlEncode(Request.QueryString["Category"]) %>

<% } %>

</form>

</center>

</body></html>

Ejemplo 4<%@ Page Language="C#"%>

www.depurando.com 56

Page 57: ASP .NET Framework 3.5

���� ���� �������� �� %������

*<html>

<head><link rel "stylesheet"href "intro.css">

</head>

<body>

<center>

<form action "intro4 cs.aspx" method "post" runat server>

<h3> Name: <asp:textbox id="Name" runat="server"/>

Category: <asp:dropdownlist id="Category" runat=server><asp:listitem>psychology</asp:listitem><asp:listitem>business</asp:listitem><asp:listitem>popular comp</asp:listitem>

</asp:dropdownlist>

</h3>

<asp:button text="Lookup" runat="server"/>

</form>

</center>

</body></html>

Ejemplo 5<html>

<head><link rel "stylesheet"href "intro.css">

</head>

<script language "C#" runat server>

void SubmitBtn Click(Object sender, EventArgs e) { Message.Text "Hi " + HttpUtility.HtmlEncode(Name.Text) + ", you selected: " + Category.SelectedItem; }

</script>

<body>

<center>

<form action "intro6 cs.aspx" method "post" runat "server">

<asp:adrotator AdvertisementFile="ads.xml" BorderColor="black" BorderWidth=1 runat="server"/>

<h3> Name: <asp:textbox id="Name" runat="server"/>

Category: <asp:dropdownlist id="Category" runat=server><asp:listitem>psychology</asp:listitem><asp:listitem>business</asp:listitem><asp:listitem>popular comp</asp:listitem>

</asp:dropdownlist>

</h3>

<asp:button text="Lookup" OnClick="SubmitBtn Click" runat="server"/>

<p>

<asp:label id="Message" runat="server"/>

</form>

</center>

www.depurando.com 57

Page 58: ASP .NET Framework 3.5

���� ���� �������� �� %������

</body>

</html>

Ejemplo 6<html>

<script language "C#" runat "server">

void Page Load(Object Src, EventArgs E) { Message.Text "You last accessed this page at: " + DateTime.Now; }

</script>

<body>

<h3><font face "Verdana">Manipulating Server Controls</font></h3>

This sample demonstrates how to manipulate the &lt;asp:label&gt; server control within the Page Load event to output the current time.

<p>

<hr>

<asp:label id="Message" font-size="24" font-bold="true" runat=server/>

</body>

</html>

Ejemplo 7<html>

<script language "C#" runat "server">

void EnterBtn Click(Object Src, EventArgs E) { Message.Text "Hi " + Name.Text + ", welcome to ASP.NET!"; }

</script>

<body>

<h3><font face "Verdana">Handling Control Action Events</font></h3>

<p>

This sample demonstrates how to access a &lt;asp:textbox&gt; server control within the "Click" event of a &lt;asp:button&gt;, and use its content to modify the text of a &lt;asp:label&gt;.

<p>

<hr>

<form action "controls3.aspx" runat server>

<font face "Verdana">

Please enter your name: <asp:textbox id="Name" runat=server/> <asp:button text="Enter" Onclick="EnterBtn Click"

runat=server/>

<p>

<asp:label id="Message" runat=server/>

www.depurando.com 58

Page 59: ASP .NET Framework 3.5

���� ���� �������� �� %������

</font>

</form>

</body>

</html>

Ejemplo 8<html>

<script language "C#" runat "server">

void AddBtn Click(Object Src, EventArgs E) {

if (AvailableFonts.SelectedIndex ! 1) {

InstalledFonts.Items.Add(newListItem(AvailableFonts.SelectedItem.Value)); AvailableFonts.Items.Remove(AvailableFonts.SelectedItem.Value); } }

void AddAllBtn Click(Object Src, EventArgs E) {

while (AvailableFonts.Items.Count ! 0) {

InstalledFonts.Items.Add(new ListItem(AvailableFonts.Items[0].Value)); AvailableFonts.Items.Remove(AvailableFonts.Items[0].Value); } }

void RemoveBtn Click(Object Src, EventArgs E) {

if (InstalledFonts.SelectedIndex ! 1) {

AvailableFonts.Items.Add(newListItem(InstalledFonts.SelectedItem.Value)); InstalledFonts.Items.Remove(InstalledFonts.SelectedItem.Value); } }

void RemoveAllBtn Click(Object Src, EventArgs E) {

while (InstalledFonts.Items.Count ! 0) {

AvailableFonts.Items.Add(new ListItem(InstalledFonts.Items[0].Value)); InstalledFonts.Items.Remove(InstalledFonts.Items[0].Value); } }

</script>

<body>

<h3><font face "Verdana">Handling Multiple Control Action Events</font></h3>

<p>

This sample demonstrates how to handle multiple control action events raised from different &lt;asp:button&gt; controls.

<p>

<hr>

<form action "controls4.aspx" runat server>

<table><tr>

<td> Available Fonts

</td><td>

www.depurando.com 59

Page 60: ASP .NET Framework 3.5

���� ���� �������� �� %������

<! Filler ></td><td>

Installed Fonts</td>

</tr><tr>

<td><asp:listbox id="AvailableFonts" width="100px" runat=server>

<asp:listitem>Roman</asp:listitem><asp:listitem>Arial Black</asp:listitem><asp:listitem>Garamond</asp:listitem><asp:listitem>Somona</asp:listitem><asp:listitem>Symbol</asp:listitem>

</asp:listbox></td><td>

<! Filler ></td><td>

<asp:listbox id="InstalledFonts" width="100px" runat=server><asp:listitem>Times</asp:listitem><asp:listitem>Helvetica</asp:listitem><asp:listitem>Arial</asp:listitem>

</asp:listbox></td>

</tr><tr>

<td><! Filler >

</td><td>

<asp:button text="<<" OnClick="RemoveAllBtn Click" runat=server/><asp:button text="<" OnClick="RemoveBtn Click" runat=server/> <asp:button text=">" OnClick="AddBtn Click" runat=server/><asp:button text=">>" OnClick="AddAllBtn Click" runat=server/>

</td><td>

<! Filler ></td>

</tr></table>

</form>

</body>

</html>

Ejemplo 9

Controls 5.cs<html>

<script language "C#" runat "server">

void Page Load(Object Src, EventArgs E) {

Random randomGenerator new Random(DateTime.Now.Millisecond);

int randomNum randomGenerator.Next(0, 3);

switch(randomNum) {

case 0: Name.Text "Scott";

break;

case 1: Name.Text "Fred";

break;

case 2:

www.depurando.com 60

Page 61: ASP .NET Framework 3.5

���� ���� �������� �� %������

Name.Text "Adam"; break;

}

AnchorLink.NavigateUrl "controls navigationtarget cs.aspx?name " + System.Web.HttpUtility.UrlEncode(Name.Text); }

</script>

<body>

<h3><font face "Verdana">Performing Page Navigation (Scenario 1)</font></h3>

<p>

This sample demonstrates how to generate a HTML Anchor tag that will cause the client to navigate to a new page when he/she clicks it within the browser.

<p>

<hr>

<p>

<asp:hyperlink id="AnchorLink" font-size=24 runat=server> Hi <asp:label id="Name" runat=server/> please click this link!

</asp:hyperlink>

</body>

</html>

Controls NavigationTarget cs.aspx<html>

<script language "C#" runat "server">

void Page Load(Object Sender, EventArgs e) {

if (!Page.IsPostBack) { NameLabel.Text Server.HtmlEncode(Request.QueryString["Name"]); } }

</script>

<body>

<h3><font face "Verdana">Handling Page Navigation</font></h3>

<p>

This sample demonstrates how to receive a navigation request from another page, and extract the querystring argument within the Page Load event.

<p>

<hr>

<form action "controls NavigationTarget.aspx" runat server>

<font face "Verdana">

Hi <asp:label id="NameLabel" runat=server/>!

</font>

</form>

</body>

</html>

www.depurando.com 61

Page 62: ASP .NET Framework 3.5

���� ���� �������� �� %������

�Ejemplo 10

Controls6 cs.aspx<html>

<script language "C#" runat "server">

void EnterBtn Click(Object Src, EventArgs E) {

// Navigate to a new page (passing name as a querystring argument) if// user has entered a valid name value in the <asp:textbox>

if (Name.Text ! "") { Response.Redirect("Controls NavigationTarget cs.aspx?name " + System.Web.HttpUtility.UrlEncode(Name.Text)); }

else { Message.Text "Hey! Please enter your name in the textbox!"; } }

</script>

<body>

<h3><font face "Verdana">Performing Page Navigation (Scenario 2)</font></h3>

<p>

This sample demonstrates how to navigate to a new page from within a &lt;asp:button&gt; click event, passing a &lt;asp:textbox&gt; value as a querystring argument (validating first that the a legal textbox value has been specified).

<p>

<hr>

<form action "controls6.aspx" runat server>

<font face "Verdana">

Please enter your name: <asp:textbox id="Name" runat=server/><asp:button text="Enter" Onclick="EnterBtn Click"

runat=server/>

<p>

<asp:label id="Message" forecolor="red" font-bold="true" runat=server/>

</font>

</form>

</body>

</html>

Controls NavigationTarget cs.aspx<html>

<script language "C#" runat "server">

void Page Load(Object Sender, EventArgs e) {

if (!Page.IsPostBack) { NameLabel.Text Server.HtmlEncode(Request.QueryString["Name"]); } }

</script>

<body>

www.depurando.com 62

Page 63: ASP .NET Framework 3.5

���� ���� �������� �� %������

<h3><font face "Verdana">Handling Page Navigation</font></h3>

<p>

This sample demonstrates how to receive a navigation request from another page, and extract the querystring argument within the Page Load event.

<p>

<hr>

<form action "controls NavigationTarget.aspx" runat server>

<font face "Verdana">

Hi <asp:label id="NameLabel" runat=server/>!

</font>

</form>

</body>

</html>

Ejemplo 11<%@ page language="C#" %>

<script runat "server">

void Button1 Click(object sender, EventArgs e) { Label1.Text "Hello " + TextBox1.Text; } </script>

<html><head>

<title>ASP.NET Inline Pages</title></head><body>

<form id "Form1" runat "server"><h1>Welcome to ASP.NET 2.0!</h1><b>Enter Your Name:</b><asp:TextBox ID="TextBox1" Runat="server"/><asp:Button ID="Button1" Text="Click Me" OnClick="Button1 Click" Runat="server"/><br /><br /><asp:Label ID="Label1" Text="Hello" Runat="server" />

</form></body></html>

Ejemplo 11

CodeBehind cs.aspx<%@ page language="C#" CodeFile="CodeBehind cs.aspx.cs" Inherits="CodeBehind cs aspx" %>

<html><head>

<title>ASP.NET CodeBehind Pages</title></head><body>

<form runat "server"><h1>Welcome to ASP.NET 2.0!</h1><b>Enter Your Name:</b><asp:TextBox ID="TextBox1" Runat="server"/><asp:Button ID="Button1" Text="Click Me" OnClick="Button1 Click" Runat="server"/><br /><br />

www.depurando.com 63

Page 64: ASP .NET Framework 3.5

���� ���� �������� �� %������

!

<asp:Label ID="Label1" Text="Hello" Runat="server" /></form>

</body></html>

CodeBehind cs.aspx.csusing System;

public partial class CodeBehind cs aspx : System.Web.UI.Page {

protected void Button1 Click(object sender, EventArgs e) { Label1.Text "Hello " + TextBox1.Text; }

}

Ejemplo 12

CodeFolder cs.aspx<%@ page language="C#" %>

<script runat "server">

void Button1 Click(object sender, EventArgs e) { CustomClass c new CustomClass(); Label1.Text c.GetMessage(TextBox1.Text); } </script>

<html><head>

<title>ASP.NET Inline Pages</title></head><body>

<form id "Form1" runat "server"><h1>Welcome to ASP.NET 2.0!</h1><b>Enter Your Name:</b><asp:TextBox ID="TextBox1" Runat="server"/><asp:Button ID="Button1" Text="Click Me" OnClick="Button1 Click" Runat="server"/><br /><br /><asp:Label ID="Label1" Text="Hello" Runat="server" />

</form></body></html>

CustomClass.cs (AppCode) using System;

public class CustomClass {

public String GetMessage(String input) { return "Hello " + input;

} }

Ejemplo 13<%@ Page Language="C#" %>

<html>

<body>

<% for (int i 0; i<8; i++) { %><font size "<% i%>"> Hello World! </font> <br>

<% } %>

</body>

www.depurando.com 64

Page 65: ASP .NET Framework 3.5

���� ���� �������� �� %������

"</html>

Ejemplo 14<html>

<script language "C#" runat server>

int subtract(int num1, int num2) { return num1 num2;

}

</script>

<body>

<% int number 100;

while (number > 0) { Response.Write("Value: " + number + "<br>"); number subtract(number, 1); }

%>

</body>

</html>

Ejemplo 15<html>

<script language "C#" runat server>

void Page Load(Object sender, EventArgs e) { Message.Text "Welcome to ASP.NET"; }

</script>

<body>

<asp:label id="Message" font-size=24 runat=server/>

</body>

</html>

Ejemplo 16<html>

<script language "C#" runat server>

void Page Load(Object sender, EventArgs e) { Message.InnerHtml "Welcome to ASP.NET"; }

</script>

<body>

<span id "Message" style "font size:24" runat server/>

</body>

</html>

www.depurando.com 65

Page 66: ASP .NET Framework 3.5

���� ���� �������� �� %������

)Ejemplo 17<html>

<script language "C#" runat server>

void Page Load(Object sender, EventArgs e) {

ArrayList items new ArrayList();

items.Add("One"); items.Add("Two"); items.Add("Three");

MyList.DataSource items; MyList.DataBind(); }

</script>

<body>

<asp:datalist id="MyList" runat=server>

<ItemTemplate>

Here is a value: <%# Container.DataItem %>

</ItemTemplate>

</asp:datalist>

</body>

</html>

Ejemplo 18<%@ Page Language "C#"%><html>

<body>

The below content has been hidden from browser clients using a server side comment (view the .aspx source to see what we mean : )

<%

<asp:calendar id "MyCal" runat server/>

<% for (int i 0; i<45; i++) { %> Hello World <br> <% } %>

%>

</body>

</html>

Ejemplo 19<%@ Page Language="C#"%><html>

<body>

<! #Include File "Header.inc" >

<br/>

<h3> Main page content </h3>

www.depurando.com 66

Page 67: ASP .NET Framework 3.5

���� ���� �������� �� %������

�*

<br/>

<! #Include File "Footer.inc" >

</body>

</html>

www.depurando.com 67

Page 68: ASP .NET Framework 3.5

AApliicacco

��

��

%��

��=

cioon .

��

���

���

=��

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mne.NE

�?

����

���

��:

MCsET 3

� ��

:���

CTS:Web3.5

��

:b5

www.depurando.com 68

Page 69: ASP .NET Framework 3.5

��

��

LiteReserSystemostcontrprogr

<%@ P

<!DOC"

<html<head

<<scri

</

</hea<body

<f

</</bod</htm

��� �

�=���

eralrva una ubicem.Web.UI.Wrar texto. Elrol Literal noramación el t

Page Languag

CTYPE html P"http://www.l >d><title>Liteript runat "s

void Butto { Literal }

/script>

ad>y>form id "for

<h3>Litera

<asp:LiterTextrunat

<br /><br

<asp:ButtoTextOnClirunat

/form>dy>ml>

�� � �

��:��

ación en la pWebControlscontrol Litero permite apltexto mostra

ge "C#" Auto

PUBLIC " //Ww3.org/TR/x

ral Example<erver">

onClick(Obje

1.Text "Wel

rm1" runat "al Example</

ral id "Lite"Hello Worl

t "server"/>

/>

on id "Butto"Change Litck "ButtonC

t "server"/>

��

����

���

página Web ps.Literal pararal es similarlicar un estiloado en el con

EventWireup

3C//DTD XHTMhtml1/DTD/xh

/title>

ct sender, E

come to ASP

server">h3>

ral1"d!!"

n1"eral Text" lick"

��� �? � �

���� �

para mostrara reservar unr al control Lao al texto montrol, estable

"True" %>

ML 1.0 Transhtml1 transi

EventArgs e)

.NET!!";

��������

�� %��

r texto estátna ubicaciónabel, exceptostrado. Se peciendo la pr

sitional//ENitional.dtd"

)

�� %����

����

ico. Utilice een la páginao por el hechpuede controropiedad Tex

N"">

��� ��=��

��

el controla Web paraho de que elolar mediantxt.

���:����

te

www.depurando.com 69

Page 70: ASP .NET Framework 3.5

La prse rep

UtiliccontrLitera

ValorPassEncoTran

Si espexploconticomp

Si espen HTcontio exp

Si espdel tidispomismelem

CuanXHTMmarcTextejem

opiedad Litepresenta el c

ce la propiedrol Literal. EsalMode. En l

r DsThrough Node Esform L

cq

pecifica Passorador sin ninene una etiqpatible.

pecifica EncoTML antes deene una etiqplorador.

pecifica Tranpo de marcaositivo o explmo comportaentos de la p

do se represML, como WMado no compno admitidoplo, si la pro

eral.Mode Obcontenido de

adMode pasta propiedala siguiente t

DescripciónNo se modificEl contenido Los elementocontenido deque admite HsThrough, elnguna modifqueta <hr>, s

ode, el contee representaqueta <hr>, p

nsform, el coado que se valorador quemiento quepropiedad Te

senta el contML o cHTMLpatibles. En es en el lengu

opiedad Text

��

btiene o estael control Lit

ra especificad se establectabla se enum

ca el conteniddel control se

os del lenguajl control. Si e

HTML o XHTMcontenido coficación. Porse envía a tod

enido de la parse. Por ejemprimero se co

mportamiena a represenadmite HTMal especificaext se repres

trol Literal paL, puede utilieste caso, louaje de marcde un contr

��� �? � �

ablece un vaeral.

ar cómo se dce mediantemeran los po

do del controe convierte eje de marcadel control Lite

ML, no se modompleto deejemplo, si ldos los dispo

ropiedad Texmplo, si la pronvierte en &

nto de represtar. Cuando

ML o XHTML,ar PassThrougsentan para e

ara un lenguzar el valor Tos elementoscado de destol Literal con

��������

lor de enum

ebe represee uno de los vosibles valore

ol. en una cadendo no compateral se repredifica el contela propiedadla propiedadositivos y exp

xt se convierropiedad Tex&lt;Hr&gt; y

sentación dese represenal especificagh. Todas lasel explorado

aje de marcaTransform pas de lenguajeino no se repntiene una e

�� %����

eración que

ntar el contevalores de enes.

a codificada etibles se quitaesenta en unenido de contd Text se pasd Text de unploradores y

rte en una caxt de un conluego se env

e la propiedata el controlr Transform,s etiquetas dor que realizó

ado distintoara quitar loe de marcadopresentan paetiqueta <hr>

��� ��=��

especifica có

enido de unnumeración

en HTML. an del explorador trol. a al dispositicontrol Litera sea o no

adena codifictrol Literalvía al disposi

ad Text depeLiteral para, se genera ede marcado yó la solicitud

de HTML os elementoso de la propiara el contro>, se quita la

���:����

ómo

ivo oral

cada

itivo

ndeun

ely.

deedadol. Por

www.depurando.com 70

Page 71: ASP .NET Framework 3.5

etiqucompo expetiqu

usingusingusingusingusingusingusingusingusingusingpubli{

p{

}}

<asp:L

<br />

<asp:L

El re

<span

<br />

Que la

eta antes depatible contieplorador. Poretas <XYZ> y

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{ Literal1

@"This i Literal2

@"This i Literal3

@"This i Literal1 Literal2 Literal3

}

Label ID="lblEj

>

Literal ID="ltl

esultado es:

ID=”lblEjemplo

>

a Fuerza te aco

e que se envíene contenidr ejemplo, siy </XYZ> se q

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass Litera

oid Page Loa

.Text s <font siz.Text s <font siz.Text s <font siz.Mode Lit.Mode Lit.Mode Lit

emplo" runat="

lEjemplo" runat

o">Que la Fuerz

ompañe.

��

íe el contenido, sólo se qla propiedadquitan, y el t

rols;rols.WebParttrols;lControl : S

d(object sen

e 7>cool</fo

e 7>cool</fo

e 7>cool</foeralMode.TraeralMode.PaseralMode.Enc

"server" Text="

t="server" Text

za te acompañe.

��� �? � �

do a un dispuita la etiqud Text contieexto "Test" s

ts;

System.Web.U

nder, EventA

ont><script>

ont><script>

ont><script>ansform;ssThrough;code;

"Que la Fuerza

t="Que la Fuerz

</span>

��������

ositivo WMLeta, y se envene el contense envía al di

UI.Page

Args e)

>alert(""Hi"

>alert(""Hi"

>alert(""Hi"

te acompañe.">

za te acompañe.

�� %����

L. Si una etiqvía al contennido <XYZ>Tispositivo o e

"");</script

"");</script

"");</script

></asp:Label>

"></asp:Litera

��� ��=��

ueta noido al disposest</XYZ>, laexplorador.

t>";

t>";

t>";

al>

���:����

�sitivoas

www.depurando.com 71

Page 72: ASP .NET Framework 3.5

Con

TabMuesespecdiseñTableconte

Es imtablafilas yParadevoutilizatodocontr

<%@ P<!DOC

"<html<head

<</hea<body

<<

<<

ntroles Ta

lestra una tablcificar sus caño proporcioe sólo se ponenido dinám

mportante recmediante py las celdas dalmacenar lolución de daar un controello es que lroles.

Page LanguagCTYPE html P"http://www.l >d id "Head1"<title>Untitad>y><form id "fo<div>

<h3>Table ex<asp:Table i

able, Tab

a en una págaracterísticasnando contene de manifieico.

cordar que crogramaciónde la tabla soos cambios etos. De hechl DataList, Da clase Table

ge "C#" %> PUBLIC " //Ww3.org/TR/x

runat "servtled Page</t

orm1" runat

xample, consd "Table1"

��

bleRow y

gina Web. Els de una formenido estáticesto cuando

cualquier mon no se conseon en sí mismen la tabla, seho, si se prevataGrid o Gre suelen utili

3C//DTD XHTMhtml1/DTD/xh

ver">itle>

"server">

tructed at drunat "serve

��� �? � �

TableCe

control Tabma sencilla. Lco, pero la pola tabla se c

odificación oervará en losmas controlee deben recovén modificaridView en luizarla princip

ML 1.0 Transhtml1 transi

design time<er"

��������

ell

le permite cLas tablas seotencia de unrea mediant

adición realis envíos al ses y no propieonstruir las fciones sustaugar del contpalmente los

sitional//ENitional.dtd"

</h3>

�� %����

onstruir unapueden crean control dete programac

izada en las fervidor. Estoedades del cfilas y celdasnciales, se retrol Table. Las desarrollad

N"">

��� ��=��

a tabla HTMLar en tiemposervidor Weción con

filas o celdasse debe a qontrol Tabledespués deecomiendaa consecuencores de

���:����

L yo deeb

s de laue lase.cada

cia de

www.depurando.com 72

Page 73: ASP .NET Framework 3.5

<<<

</bod</htm

En elprogrlugarceldaContrfila dTableRepit

<%@ P

<!DOC

<scri

p{

}

</scr

<html<head

<</hea<body

<<

<<

CellPaddGridLineHorizont<asp:Tab

<asp

</as<asp

</as</asp:Ta<asp:Tab

<asp

</as<asp

</as</asp:Ta

</asp:Table></div></form>dy>ml>

siguiente ejeramación. La, crear los obas se agrega erol.Controlse la tabla. AgeRow. Por últa este proce

Page Languag

CTYPE html P"http://www

ipt runat "s

private void{ // Gener int numr int numc for (int { Tabl for

} Tabl }

}

ript>

l >d id "Head1"<title>Untitad>y><form id "fo<div>

<h3>Table Ex<asp:Table i

ding "10"es "Both"talAlign "CebleRow>p:TableCell>Row 0, Col p:TableCell

p:TableCell>Row 0, Col p:TableCell

ableRow>bleRow>p:TableCell>Row 1, Col p:TableCell

p:TableCell>Row 1, Col p:TableCell

ableRow>>

emplo de cóa creación debjetos TableCestableciendde TableCellgregue los obtimo, agregueso para cada

ge "C#" %>

PUBLIC " //Ww.w3.org/TR/

erver">

d Page Load(

rate rows anrows 3; cells 2; t j 0; j <

eRow r new(int i 0; TableCell c c.Controls.A + j.ToSr.Cells.Add

e1.Rows.Add

runat "servtled Page</t

orm1" runat

xample, consd "Table1"

��

nter">

0>

1>

0>

1>

ódigo se muee una tabla dCell que reprdo la propiedl. A continuabjetos Tableue el controla fila de la ta

3C//DTD XHTMxhtml1/DTD/x

Object sende

d cells.

numrows; j+

w TableRow()i < numcell new Table

Add(new Litetring() + ",(c);

(r);

ver">itle>

"server">

tructed prog

��� �? � �

estra cómo coe forma dináresenten lasdad Text o agación, cree uCell creadosTableRow a

abla.

ML 1.0 Transxhtml1 trans

er, EventArg

++)

);ls; i++) { eCell();eralControl, cell " + i

grammaticall

��������

onstruir unaámica constaceldas de ungregando conn control Tabs anteriormea la colección

sitional//ENsitional.dtd

gs e)

("row "i.ToString()

ly</h3>

�� %����

tabla mediaa de tres pasna fila. El conntroles a la cbleRow quente a la colen Rows del co

N"d">

));

��� ��=��

antesos. En primentenido de lacolecciónrepresente ucción Cells dontrol Table

���:����

eras

unade.

www.depurando.com 73

Page 74: ASP .NET Framework 3.5

<<

</bod</htm

TabRepreTable

Esta cconteHoriz

Las ceLa co

TabReprecontrde la

La cladel coHorizconte

Se pucontrcontr

<html<head

GridLineHorizontFont NamFont SizCellPaddCellSpacRunat "s

</div></form>dy>ml>

leRowesenta una fe.

clase permitenido de la fizontalAlign y

eldas de la filección Cells

leCellesenta una crol Table. Secelda.

ase TableCelontenido dezontalAlign yenido de la c

uede especifirol Table, qurolan cuánta

l>d>

es "Both"talAlign "Cemes "Verdanae "8pt"

ding "15"cing "0"erver"/>

fila de un con

e controlar cila se especifVerticalAlig

ila pueden ads es una cole

celda en un cpuede utiliz

l permite cola celda se eVerticalAligelda se ajust

icar asimisme ocupa unas filas y colu

��

nter""

ntrol Table. L

cómo se muefica mediantn.

dministrarsección de obj

control Tablear la propied

ntrolar cómoespecifica men. Se puedeta dentro de

o el númeroa celda indivimnas se utili

��� �? � �

La clase Tabl

estra el conte el establec

e mediante petos TableCe

e. La clase Tadad Text par

o se muestraediante el esutilizar la prla misma.

o de filas o codual. Las proizan, respect

��������

eRow repres

enido de la fcimiento de l

programaciónell que repre

ableCell repra especificar

a el contenidstablecimientopiedad Wra

olumnas de lopiedades Rotivamente.

�� %����

senta una fil

fila. La alinealas propieda

n utilizandoesentan las c

esenta una cr o determin

do de la celdato de las proap para espe

a tabla, reprowSpan y Co

��� ��=��

a de un cont

ación deldes

la coleccióneldas de la f

celda en unar el conteni

a. La alineaciopiedadesecificar si el

resentada poolumnSpan

���:����

!

trol

Cells.ila.

ido

ión

or un

www.depurando.com 74

Page 75: ASP .NET Framework 3.5

<

+ i.T

<

</hea<body

<

<

CellS

<

</bod</htm

ImaMues

<script lang

void Pag

// G

intint

for

ToString()))

} }

</script>

ad>y>

<h3><font fa

<form runat

<asp:TabSpacing=0 Bo

<p> Table ro

<asp:Dro<asp<asp<asp<asp

</asp:Dr

<br> Table ce

<asp:Dro<asp<asp<asp<asp

</asp:Dr

<p><asp:but

</form>

dy>ml>

agestra una ima

guage "C#" r

ge Load(Obje

Generate row

numrows inumcells

(int j 0; j

TableRow r

for (int i TableCe c.Contr; r.Cells}

Table1.Rows

ace "Verdana

server>

ble id="TableorderColor="b

ows:opDownList idp:ListItem Vp:ListItem Vp:ListItem Vp:ListItem VropDownList>

ells:opDownList idp:ListItem Vp:ListItem Vp:ListItem Vp:ListItem VropDownList>

tton Text="Ge

gen en una p

��

unat "server

ct sender, E

s and cells

nt.Parse(Droint.Parse(Dr

<numrows; j+

new TableR

0; i<numcellll c new Tols.Add(new

.Add(c);

.Add(r);

">Table Exam

e1" Font-Namblack" Borde

d=DropDown1alue="1">1</alue="2">2</alue="3">3</alue="4">4</

d=DropDown2alue="1">1</alue="2">2</alue="3">3</alue="4">4</

enerate Tabl

página Web.

��� �? � �

r">

EventArgs e)

opDown1.SeleropDown2.Sel

++) {

Row();

ls; i++) { TableCell();LiteralCont

mple</font><

mes="VerdanaerWidth="1"

runat="serv/asp:ListIte/asp:ListIte/asp:ListIte/asp:ListIte

runat="serv/asp:ListIte/asp:ListIte/asp:ListIte/asp:ListIte

le" runat=se

��������

) {

ectedItem.ValectedItem.V

;trol("row "

</h3>

a" Font-SizeGridlines="

ver">em>em>em>em>

ver">em>em>em>em>

erver/>

�� %����

alue);Value);

+ j.ToStrin

e="8pt" Cell"Both" runat

��� ��=��

ng() + ", ce

lPadding=5t="server"/>

���:����

"

ll "

www.depurando.com 75

Page 76: ASP .NET Framework 3.5

Utilicrealizmueslugaralineaestab

<%@ P<!DOC

"<html<head

<<scri

ce el controlza la solicitudstra, establezde la imageación de la imbleciendo la p

Page LanguagCTYPE html P"http://www.l >d><title>Imageipt language

void Butto { switch( { case I

b

case I

b

case I

b

case I

b

case I

b

case I

b

Image parad en la páginzca la propien cuando ésmagen con rpropiedad Im

ge "C#" %> PUBLIC " //Ww3.org/TR/x

e Example</te "C#" runat

on Click(Obj

DropList1.S

e 0: mage1.ImageA

break;

e 1: mage1.ImageA

break;

e 2: mage1.ImageA

break;

e 3: mage1.ImageA

break;

e 4: mage1.ImageA

break;

e 5: mage1.ImageA

break;

��

mostrar cuala Web. Paraedad ImageUta no está direspecto a lomageAlign.

3C//DTD XHTMhtml1/DTD/xh

itle>"server">

ect sender,

electedIndex

Align Imag

Align Imag

Align Imag

Align Imag

Align Imag

Align Imag

��� �? � �

lquier imagea especificarUrl. Para espeisponible, ess demás elem

ML 1.0 Transhtml1 transi

EventArgs e

x)

geAlign.NotS

geAlign.Left

geAlign.Righ

geAlign.Base

geAlign.Top;

geAlign.Midd

��������

en válida admla ruta de acecificar el textablezca la pmentos de la

sitional//ENitional.dtd"

e)

Set;

t;

ht;

eline;

;

dle;

�� %����

mitida por elcceso a la imxto que se hapropiedad Ala página Web

N"">

��� ��=��

exploradoragen que sea de mostrarternateText.b se especifi

���:����

)

que

r en. Laca

www.depurando.com 76

Page 77: ASP .NET Framework 3.5

</

</hea

<body

<f

</

</bod

case I

b

case I

b

case I

b

case I

b

defa I

b

}

}

/script>

ad>

y>

form id "for

<h3>Image

<div style

Text Te Text Te Text Te

</div>

<asp:ImageAlterImageImage

<hr />

Select Ima

<asp:DropDrunat

<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li

</asp:Drop

<br /><br

<asp:ButtoTextOnClirunat

/form>

dy>

e 6: mage1.ImageA

break;

e 7: mage1.ImageA

break;

e 8: mage1.ImageA

break;

e 9: mage1.ImageA

break;

ault:mage1.ImageA

break;

rm1" runat "

Example</h3

e "font size

ext Text Texext Text Texext Text Tex

e id "Image1rnateText "ImeAlign "lefteUrl "images

age Align: <b

DownList idt "server">

stItem>NotSstItem>LeftstItem>RighstItem>BasestItem>Top<stItem>MiddstItem>BottstItem>AbsBstItem>AbsMstItem>Text

pDownList>

/>

on id "Butto"Apply Imagck "Button

t "server"/>

��

Align Imag

Align Imag

Align Imag

Align Imag

Align Imag

server">

>

:large">

t Text Text t Text Text t Text Text

" runat "sermage text" "/image1.jpg"

br />

"DropList1"

et</asp:List</asp:ListItt</asp:ListILine</asp:Li/asp:ListItele</asp:Listom</asp:Listottom</asp:Liddle</asp:LTop</asp:Lis

n1"e Alignment"Click"

��� �? � �

geAlign.Bott

geAlign.AbsB

geAlign.AbsM

geAlign.Text

geAlign.NotS

Text Text TText Text TText Text T

rver"

"/>

tItem>tem>Item>istItem>em>tItem>tItem>ListItem>ListItem>stItem>

"

��������

tom;

Bottom;

Middle;

tTop;

Set;

Text Text TeText Text TeText Text Te

�� %����

ext Textext Textext Text

��� ��=�����:����

*

www.depurando.com 77

Page 78: ASP .NET Framework 3.5

</htm

usingusingusingusingusingusingusingusingusingusingpubli{

p{

}}

<html<head

<

<

</hea

<body

<

<

Grain

ml>

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{ Image1.I Image1.D Image1.A

}

l>d>

<script lang

void Subm

Image1 Image1 }

</script>

ad>

y>

<h3><font fa

<form runat

<asp:Imans" runat="s

<p>

Select i

<asp:Dro<asp<asp

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass Image

oid Page Loa

mageUrl "DescriptionUAlternateTex

guage "C#" r

mitBtn Click

.ImageUrl "

.AlternateT

ace "Verdana

server>

age ID="Imageserver" />

mage file:

opDownList idp:ListItem Vp:ListItem V

��

rols;rols.WebParttrols;Control : Sy

d(object sen

~/Images/Girrl "~/Imagt "This is

unat "server

(Object send

images/" + Dext DropDown

">Simple Htm

e1" ImageUrl

d=DropDown1alue="Cerealalue="Cereal

��� �? � �

ts;

ystem.Web.UI

nder, EventA

rl.gif";geDescriptios a picture

r">

der, EventAr

DropDown1.Sen1.SelectedI

mlImage Samp

l="images/ce

runat="servl1.gif">Heall2.gif">Corn

��������

I.Page

Args e)

on.htm";of a girl";

rgs e) {

electedItem.Item.Text;

ple</font></

ereal1.gif"

ver">lthy Grains<n Flake Cere

�� %����

Value;

/h3>

AlternateTe

</asp:ListIteal</asp:Lis

��� ��=��

ext="Healthy

tem>stItem>

���:����

www.depurando.com 78

Page 79: ASP .NET Framework 3.5

<

</bod</htm

ImaContr

Espac

Utilic

Se pr

Utilizlas cocódigorige

De mImaga un ccontrpropi

<asp<asp<asp<asp

</asp:Dr

<asp:but

</form>

dy>ml>

ageButtonrol que mues

cio de nomb

ce el control

ovocan los e

ando el contoordenadas dgo de respuen (0, 0) está

manera predeeButton. Lacontrol de varol de validaciedad Causes

p:ListItem Vp:ListItem Vp:ListItem Vp:ListItem VropDownList>

tton text="Ap

nstra una ima

bres: System.

ImageButto

eventos Click

trolador de edel punto dosta tomandosituado en l

eterminada,validación dalidación ención. Para evsValidation e

��

alue="Cerealalue="Cerealalue="Cerealalue="Cereal

pply" OnClic

agen y respon

.Web.UI.We

n para most

k y Command

eventos OnConde se ha heo como basea esquina su

la validacióne la página dla página cuvitar que se ren false.

��� �? � �

l3.gif">U.F.l4.gif">Oatel5.gif">Stril7.gif">Frui

ck="SubmitBt

nde a los clic

bControls

rar una imag

d cuando se

Click, se puedecho clic enlos valores d

uperior izquie

n de la páginadetermina simplen las rerealice la vali

��������

.O.S</asp:Liey O's</asp:ike</asp:Lisity Pops</as

tn Click" ru

cs del mouse

gen que resp

hace clic en

den determinla imagen. Ade las coordeerda de la im

a se realiza atodos los co

eglas de valididación de la

�� %����

istItem>ListItem>

stItem>sp:ListItem>

unat=server/

e (ratón) en l

ponde a los c

el control Im

nar medianteA continuacióenadas. Obs

magen.

al hacer clic eontroles de edación especa página, esta

��� ��=��

>

>

a imagen.

lics del mou

mageButton.

e programacón, se puedeerve que el

en un controentrada asoccificadas porablezca la

���:����

se.

cióncrear

oliadosel

www.depurando.com 79

Page 80: ASP .NET Framework 3.5

usingusingusingusingusingusingusingusingusingusingpubli{

p{

}p{

}}

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{ ImageBut ImageBut ImageBut

}protected vo{ ImageBut

string.F}

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass ImageB

oid Page Loa

tton1.ImageUtton1.Descriptton1.Altern

oid ImageBut

tton1.AlternFormat("Butt

��

rols;rols.WebParttrols;utton Contro

d(object sen

rl "~/ImagptionUrl "ateText "T

ton1 Click(o

ateText on Clicked a

��� �? � �

ts;

ol : System.

nder, EventA

ges/Girl.gif"~/ImageDescThis is a pi

object sende

at {0},{1}",

��������

.Web.UI.Page

Args e)

f";cription.htmicture of a

er, ImageCli

, e.X, e.Y);

�� %����

e

m";girl";

ickEventArgs

��� ��=��

e)

���:����

www.depurando.com 80

Page 81: ASP .NET Framework 3.5

<html<head

<

<

</hea<body

<

<

Borde

<

</bod</htm

ImaCreala zondatos

Utilicdefinuna dejemun usURL q

l>d>

<script lang

void Ima

intint

Labe Labe

if (

} el

} }

</script>

ad>y>

<h3><font fa

<form runat

<table w<tr>

<td

erWidth="2px</td<td>

</td</tr>

</table>

<asp:Lab

</form>

dy>ml>

ageMapun control qna activa defs al servidor

ce el controlidas. Cuandodevolución dplo, puede usuario hace cque proporci

guage "C#" r

ageButton1 O

x e.X;y e.Y;

el1.Text "el2.Text "

x > 60 ) Label3.Textse { Label3.Text

ace "Verdana

server>

width "100%"

width "25%"<asp:ImageBu

x" onclick="d>><asp:Label

<br>

<asp:Labeld>

>

bel id=Label

que muestrafinida dentroo se desplaz

ImageMap po un usuarioe datos al seutilizar este cclic en una reiona datos a

��

unat "server

nClick(objec

X: " + x.ToSY: " + y.ToS

{ "You clic

"You clic

">Using Imag

border 0>

>utton id=ButImageButton1

id=Label1 Te

id=Label2 Te

3 font-bold=

una imageno del controlza a una direc

para crear unhace clic en

ervidor o descontrol paraegión concredicionales so

��� �? � �

r">

ct Source, I

String();String();

cked on the

cked on some

geButton as

tton1 ImageU1 OnClick" r

ext="X:" run

ext="Y:" run

="true" Text

en una págiImageMap,cción URL es

na imagen quuna región

splazarse a umostrar un meta del mapaobre la regió

��������

ImageClickEv

Purple Rain

e Extreme Or

an Image Ma

Url="images/runat="serve

nat="SERVER"

nat="SERVER"

t="" runat="

na. Cuando sel control gespecificada.

ue contengade zona activna direcciónmapa de una, el control sn selecciona

�� %����

ventArgs e)

n!";

range!";

ap</font></h

/imagebuttoner" />

"/>

"/>

"SERVER"/>

se hace clic eenera una de

las regionesva, el contron URL especifa región geogse desplaza aada. También

��� ��=��

{

h3>

n4.gif"

en una regióevolución de

s de zona actol puede genficada. Porgráfica. Cuana una dirección puede utiliz

���:����

n dee

tivaerar

ndoónzar

www.depurando.com 81

Page 82: ASP .NET Framework 3.5

este cfunciImaghaceregistregióTambejemotra r

Utilicen elcontrPolygHotS

Hay dImagdel copropiestabHotS

control paraón de la regieMap para cclic en la regtrar una respn de zona acbién puede mplo, puede eregión de zo

ce la propiedcontrol Imarol ImageMagonHotSpot ppot abstract

dos maneraseMap cuandontrol Imageiedades se eblecen ambapot individua

generar unaión de zona acapturar lasgión de zonapuesta afirmctiva definidamezclar estosespecificar unna activa pa

ad ImageUrlgeMap. Pueap. Puede utipara definira para defin

s de especificdo se hace cleMap o la prstablecen ms propiedadeal tiene prio

��

a devoluciónactiva en la qrespuestas dactiva definativa en unaa para los vos dos escenana región dera devolver l

para especide definir cuilizar las claslas regionesir un objeto

car el compoic en el objeropiedad Hotediante unoes, la propieridad sobre l

��� �? � �

de datos alque se hizo cdel usuario enida para losa base de datotos negativoarios dentro de zona activalos datos al s

ficar la rutaualquier númes CircleHotde zona actipropio de zo

ortamiento dto HotSpot.tSpotMode dde los valordad HotSpotla propiedad

��������

servidor y ejclic. Por ejemn forma de vvotos afirmatos. Cuandoos, se registrade un contropara desplaservidor.

de acceso amero de objetSpot, Rectaniva. Tambiénona activa pe

e un objetoPuede utilizade un objetores de enumetMode especd HotSpotMo

�� %����

jecutar códigmplo, puede uvotos. Cuandativos, se llamun usuario ha una respueol ImageMapzarse a una d

la imagen qutos HotSpotngleHotSpotn, puede deriersonalizado

HotSpot enar la propiedo HotSpot inderación HotScificada en code del cont

��� ��=��

go concretoutilizar un codo un usuarioma al códigohace clic en laesta negativap único. Pordirección UR

ue se va a mdentro de uyivar de la cla.

un controldad HotSpotMdividual. EstaSpotMode. Scada objetorol ImageMa

���:����

�enontroloo paraaa.

RL y

ostrarn

se

Modeasi se

ap.

www.depurando.com 82

Page 83: ASP .NET Framework 3.5

ParapropiNavig

ParaImagUtilicEste neventdatosrealizcontr

Paracompcompobjetpropi

ParaImagen Ho

<%@ p

<!DOC"

<html<head

<ti</hea

<bo<

desplazarseiedad HotSpgateUrl para

generar unaeMap.HotSpce la propiednombre se pto de devolus, se producezadas cuandorolador de ev

hacer que toportamiento,portamientoto HotSpot iniedad HotSp

especificar deMap, estabotSpotMode

page languag

CTYPE html P"http://www.l >d id "head1"itle>ImageMaad>ody><form id "fo

<h3>ImageM

<h4>Shoppi

<asp:imageimageurlwidth "1height "alternatrunat "S

<asp:cirnavigax "75"y "290radiushotspoaltern

</asp:ci

<asp:cirnavigax "75"y "120radiushotspoaltern

</asp:ci

a una direccot.HotSpotMespecificar l

devoluciónpotMode o lad PostBackpasa en los daución de datoe el evento Co se hace clicventos para

odos los obje, utilice la pr. A continuacndividual enot.HotSpotM

diferentes coblezca la proe.Navigate o

ge "C#" %>

PUBLIC " //Ww3.org/TR/x

runat "servap Class Nav

orm1" runat

Map Class Nav

ng Choices:

emap id "Shop"Images/Sh

50"360"

tetext "Shopperver">

rclehotspotateurl "http

""75"

otmode "Navinatetext "Shrclehotspot

rclehotspotateurl "http

""75"

otmode "Navinatetext "Shrclehotspot

��

ción URL, estMode en Hotla URL a la qu

de datos al sa propiedadValue para eatos del eveos. Cuando sClick. Para coc en un objetel evento Cli

etos HotSpotropiedad Imación, estableHotSpotMoMode.

omportamienpiedad HotSHotSpotMo

3C//DTD XHTMhtml1/DTD/xh

ver">igate Exampl

"server">

vigate Examp

</h4>

p"opChoice.jpg

ping choices

://www.tails

gate"op for toys">

://www.cohow

gate"op for wine">

��� �? � �

tablezca la prtSpotMode.ue desplazar

servidor, estHotSpot.Hoespecificar unto ImageMe hace clic eontrolar medto HotSpot dick.

t de un contrageMap.Hotezca la propieode.NotSet o

ntos para losSpot.HotSpotode.PostBack

ML 1.0 Transhtml1 transi

le</title>

ple</h3>

g"

s"

spintoys.com

">

winery.com"

">

��������

ropiedad ImaNavigate. Utrse.

ablezca la protSpotModen nombre paapEventArgsn un objetoiante prograde devolució

rol ImageMatSpotMode pedad HotSpoo no especifiq

s objetos HottMode de cak.

sitional//ENitional.dtd"

m"

�� %����

ageMap.Hottilice la prop

ropiedaden HotSpotara la regións cuando se pHotSpot deamación las aón de datos, p

ap tengan elpara especifiot.HotSpotMque ningún v

tSpot de unada objeto H

N"">

��� ��=��

tSpotMode oiedad

Mode.Postbde zona actiproduce undevolución daccionesproporcione

mismocar el

Mode de cadavalor para la

objetootSpot indiv

���:����

�o la

back.iva.

de

un

a

vidual

www.depurando.com 83

Page 84: ASP .NET Framework 3.5

<</b

</htm

usingusingusingusingusingusingusingusingusingusingpubli{

p{

</asp:imag

</form>body>ml>

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{ ImageMap ImageMap ImageMap ImageMap

CircleHoRectanglPolygonH

chs ne chs.X chs.Y chs.Radi chs.Post ImageMap chs ne chs.X chs.Y chs.Radi chs.Post ImageMap phs ne phs.Coor phs.Post ImageMap phs ne phs.Coor phs.Post ImageMap rhs ne rhs.Top rhs.Bott rhs.Left rhs.Righ rhs.Post ImageMap phs ne phs.Coor phs.Post ImageMap phs ne phs.Coor

"28,150, +

"103,9,1 +

"135,154 +

"51,56,4 phs.Post ImageMap chs ne chs.X chs.Y chs.Radi chs.Post

gemap>

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass ImageM

oid Page Loa

p1.ImageUrlp1.Descriptip1.Alternatep1.HotSpotMootSpot chs; eHotSpot rh

HotSpot phs; ew CircleHot75;75;us 6;

tBackValue p1.HotSpots.Aew CircleHot100;75;us 6;

tBackValue p1.HotSpots.Aew PolygonHordinates "tBackValue p1.HotSpots.Aew PolygonHordinates "tBackValue p1.HotSpots.Aew Rectangle

101; tom 110; t 74; ht 110; tBackValue p1.HotSpots.Aew PolygonHordinates "tBackValue p1.HotSpots.Aew PolygonHordinates 17,141,10,1

29,22,141,4

,128,142,12

2,81,44,140tBackValue p1.HotSpots.Aew CircleHot87;81;us 50;

tBackValue

��

rols;rols.WebParttrols;ap Control

d(object sen

"~/Images/onUrl "~/IText "Thisde HotSpot

s;

Spot();

"Left Eye CAdd(chs);Spot();

"Right Eye Add(chs);tSpot();76,57,82,64,"Left Eye";

Add(phs);tSpot();99,57,105,64"Right Eye"

Add(phs);HotSpot();

"Mouth";Add(rhs);tSpot();92,82,101,95"Nose";

Add(phs);tSpot();

29,22,57,46,

7,152,93,152

9,71,117,47,

";"Hair";

Add(phs);Spot();

"Face";

��� �? � �

ts;

: System.Web

nder, EventA

/Girl.gif";ImageDescrips is a pictutMode.PostBa

Center";

Center";

,81,76,76,82;

4,104,76,99,";

5,85,95";

,21,80,9,"

2,142,144,15

,93,34,69,34

��������

b.UI.Page

Args e)

ption.htm";ure of a girack;

2,71,76,70,6

,82,94,76,93

56,"

4,"

�� %����

rl";

63";

3,63";

��� ��=�����:����

!

www.depurando.com 84

Page 85: ASP .NET Framework 3.5

}p{

}

<%@ P<!DOC"http<scri

</scr<html<head

<</hea<body

<

Examp

butto

ImageMap rhs ne rhs.Top rhs.Bott rhs.Left rhs.Righ rhs.Post ImageMap

}protected vo{ Label1.Tex

Page LanguagCTYPE html Pp://www.w3.oipt runat "s

ript>l xmlns "httd runat "ser<title>Untitad>y><form id "fo

<div><h3>

ple</font></

<aspons"

p1.HotSpots.Aew Rectangle

127; tom 142; t 69; ht 107; tBackValue p1.HotSpots.A

oid ImageMapxt "You cl

ge="C#" %>PUBLIC " //Worg/TR/xhtmlerver">

tp://www.w3.rver">tled Page</t

orm1" runat

><font faceh3>

p:imagemap id

runat="Serve

<asp:Rectanghotspotmode=NavigateUrl=alternatetextop="30"left="175"bottom="110right="355"</asp:Rectan

<asp:Rectanghotspotmode=

��

Add(chs);HotSpot();

"Neck";Add(rhs);

1 Click(objeicked the "

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

itle>

"server">

"Verdana">Im

d="Buttons"

er">

gleHotSpot="Navigate"="navigate1xt="Button 1

">ngleHotSpot>

gleHotSpot="Navigate"

��� �? � �

ect sender, + e.PostBac

ML 1.0 Trans1 transition

tml">

mageMap Clas

imageurl="h

.htm"1"

>

��������

ImageMapEveckValue; }

sitional//ENnal.dtd">

ss Mixed Hot

hotspot.jpg"

�� %����

entArgs e)

N"

tSpotMode

" alternatet

��� ��=��

text="Naviga

���:����

"

te

www.depurando.com 85

Page 86: ASP .NET Framework 3.5

<</bod</htm

<%@ P

<!DOC"http

<scriv{

}</scr

<html<head

<</hea<body

<

Examp

butto

</as

</div></form>dy>ml>

Page Languag

CTYPE html Pp://www.w3.o

ipt runat "svoid Buttons{ label1.T

}ript>

l xmlns "httd runat "ser<title>Untitad>y><form id "fo

<div><h3>

ple</font></

<aspons"

NavigateUrl=alternatetextop="155"left="175"bottom="240right="355"</asp:Rectan

<asp:Rectanghotspotmode=NavigateUrl=alternatetextop="285"left="175"bottom="365right="355"</asp:Rectan

sp:imagemap>

ge="C#" %>

PUBLIC " //Worg/TR/xhtml

erver">Clicked(ob

Text e.Pos

tp://www.w3.rver">tled Page</t

orm1" runat

><font faceh3>

p:imagemap id

hotspotmode=

<asp:Rectanghotspotmode=postbackvalualternatetextop="30"left="175"bottom="110right="355"</asp:Rectan

<asp:Rectanghotspotmode=postbackvalualternatetextop="155"left="175"bottom="240right="355"</asp:Rectan

<asp:Rectanghotspotmode=postbackvalualternatetex

��

="navigate2xt="Button 2

">ngleHotSpot>

gleHotSpot="Navigate"="navigate3xt="Button 3

">ngleHotSpot>

3C//DTD XHTM1/DTD/xhtml1

ject sender,

tBackValue +

org/1999/xht

itle>

"server">

"Verdana">Im

d="Buttons"

="Postback"

gleHotSpot="Postback"ue="Button1"xt="Button 1

">ngleHotSpot>

gleHotSpot="Postback"ue="Button2"xt="Button 2

">ngleHotSpot>

gleHotSpot="Postback"ue="Button3"xt="Button 3

��� �? � �

.htm"2"

>

.htm"3"

>

ML 1.0 Trans1 transition

, ImageMapEv

+ " clicked!

tml" >

mageMap Clas

imageurl="h

onclick="Bu

"1"

>

"2"

>

"3"

��������

sitional//ENnal.dtd">

ventArgs e)

!";

ss Mixed Hot

hotspot.jpg"

uttons Click

�� %����

N"

tSpotMode

" alternatet

ked" runat="

��� ��=��

text="Naviga

Server">

���:����

)

te

www.depurando.com 86

Page 87: ASP .NET Framework 3.5

></as

<</bod</htm

CaleMuesal me

UtiliccontrCalenSysteutiliza

Se pumes c

De mde lames dpuedcontrpropi

</as

<p>

sp:label></f</p>

</div></form>dy>ml>

endarstra un calenes siguiente o

ce el controlrol permite sndar admiteem.Globalizaan diferente

uede especificompleto me

manera predesemana, unde forma inde personalizrolan el estiloiedades que

top="285"left="175"bottom="365right="355"</asp:Rectan

<asp:Rectanghotspotmode=postbackvalualternatetextop="0"left="0"bottom="390right="540"</asp:Rectan

sp:imagemap>

<h3><font ffont></h3>>

ndario de uno al mes ante

Calendar paseleccionar fetodos los tiption. Además sistemas d

icar si el conediante la pr

eterminada,encabezadodividual y vínar la aparieno de las diferespecifican

��

">ngleHotSpot>

gleHotSpot="Postback"ue="Backgrouxt="Backgrou

">ngleHotSpot>

ace "verdana

solo mes querior.

ra mostrar uechas y desppos System.Gás del calende año y mes,

trol Calendaropiedad Sele

el control mo con el nomnculos para dncia del contrentes parteel estilo de l

��� �? � �

>

und"und"

>

a"><asp:labe

ue permite al

un solo mes dplazarse al mGlobalizationario gregoria, como el cal

ar permite seectionMode

uestra los díbre del mesdesplazarse arol Calendars del controlas diferente

��������

el id="label

l usuario sele

de un calendes siguienten.Calendar deano, tambiénlendario Hjir

eleccionar un.

ías del mes, ly año, víncual mes siguier establecienl. La siguients partes del

�� %����

l1" runat="s

eccionar fech

dario en unao al mes antel espacio den se incluyenri.

n solo día, un

los encabezalos para selente y al mesdo las propiee tabla conticontrol.

��� ��=��

server"

has y desplaz

página Webterior. El cone nombresn calendarios

na semana o

ados de los deccionar díasanterior. Seedades queiene las

���:����

�*

zarse

. Elntrol

s que

un

díass dele

www.depurando.com 87

Page 88: ASP .NET Framework 3.5

<%@ P<!DOC

"<html<head

<</hea<body

<f

Page LanguagCTYPE html P"http://www.l >d><title>ASP.Nad>y>

form id "for

<asp:Calen

<Othe</Oth

<Titl

</Tit

<DayS</Day

<Sele

</Sel

</asp:Cale

ge "C#" AutoPUBLIC " //Ww3.org/TR/x

NET Example<

rm1" runat "

ndar id "cal

erMonthDayStherMonthDayS

eStyle BackFore

tleStyle>

tyle BackCoyStyle>

ectedDayStyl

ectedDaySty

endar>

��

EventWireup3C//DTD XHTMhtml1/DTD/xh

/title>

server">

endar1" runa

yle ForeColotyle>

Color "Blue"Color "White

lor "gray">

e BackColorFont Bold

le>

��� �? � �

"True" %> ML 1.0 Transhtml1 transi

at "server">

or "LightGra

"e">

"LightGray""True">

��������

sitional//ENitional.dtd"

>

ay">

"

�� %����

N"">

��� ��=�����:����

www.depurando.com 88

Page 89: ASP .NET Framework 3.5

</

</bod</htm

usingusingusingusingusingusingusingusingusingusingpubli{

Hp{

}p{

}p{

}pM{

}p{

}

/form>

dy>ml>

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

Hashtable scprotected vo{ GetSched Calendar Calendar Calendar Calendar Calendar Calendar Calendar Calendar Calendar Calendar Calendar Calendar Calendar System.D Calendar Calendar

}private void{ schedule schedule schedule schedule schedule schedule schedule schedule schedule

}protected vo{ Response + Calend

}protected voMonthChanged{ Response

}protected vo{

Literal lit.Visi lit.Text e.Cell.C

if (sche {

Labe lbl. lbl. e.Ce }

}

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass Calend

chedule newoid Page Loa

dule();r1.Style.Addr1.Style.Addr1.Style.Addr1.Caption r1.FirstDayOr1.NextPrevFr1.TitleFormr1.ShowGridLr1.DayStyle.r1.DayStyle.Vr1.DayStyle.r1.DayStyle.Wr1.OtherMontDrawing.Color1.TodaysDatr1.VisibleDa

d GetSchedul

e["11/23/200e["12/5/2006e["12/16/200e["12/23/200e["12/24/200e["12/25/200e["12/26/200e["12/31/200e["1/1/2007"

oid Calendar

e.Write("Seldar1.Selecte

oid CalendardEventArgs e

e.Write("Mon

oid Calendar

lit new Lble true;

t "<br />"Controls.Addedule[e.Day.

el lbl newVisible tText (str

ell.Controls

��

rols;rols.WebParttrols;ar Control

w Hashtabled(object sen

("position",("left", "5p("top", "50p"Special Da

fWeek Firsormat Nextat TitleFoines true;HorizontalAlVerticalAligHeight newWidth newhDayStyle.Bar.WhiteSmokee new Datete Calenda

e()

6"] "Thank"] "Birthd6"] "First6"] "Last6"] "Chris6"] "Chris6"] "Boxin6"] "New Y] "New Yea

1 SelectionC

ection changdDate.ToShor

1 VisibleMon)

th changed t

1 DayRender

iteral();

;(lit);Date.ToShort

Label();rue;ing)schedule.Add(lbl);

��� �? � �

ts;

: System.Web

();nder, EventA

, "absolute"px");px");ays";stDayOfWeek.tPrevFormat.ormat.MonthY;lign Horizgn Verticaw Unit(75);Unit(100);

ackColor e;eTime(2006,ar1.TodaysDa

ksgiving";day";t day of Chaday of Chan

stmas Eve";stmas";ng Day";Year's Eve";ar's Day";

Changed(obje

ged to: " rtDateString

nthChanged(o

to: " + e.Ne

(object send

tDateString

e[e.Day.Date

��������

b.UI.Page

Args e)

");

.Sunday;

.ShortMonth;Year;

zontalAlign.alAlign.Top;

12, 1); ate;

anukah";nukah";

;

ect sender,

g());

object sende

ewDate.ToSho

der, DayRend

()] ! null)

e.ToShortDat

�� %����

Left;

EventArgs e

er,

ortDateStrin

derEventArgs

teString()];

��� ��=��

e)

ng());

e)

���:����

��

www.depurando.com 89

Page 90: ASP .NET Framework 3.5

}

<html<head

<

Calen

<

</hea

<body

<

<

<

</bod</htm

l>d>

<script lang

void Dat Labe

ndar1.Select }

</script>

ad>

y>

<h3><font fa

<form runat

<asp:Cal

<p>

<asp:Lab

</form>

dy>ml>

guage "C#" r

te Selected(el1.Text "tedDate.ToSh

ace "Verdana

server>

lendar id=Ca

bel id=Label

��

unat "server

object s, EvSelected datortDateStrin

">Calendar E

lendar1 onse

1 runat="ser

��� �? � �

r">

ventArgs e) te is: " + ng();

Example</fon

electionchan

rver" />

��������

{

nt></h3>

nged="Date S

�� %����

Selected" ru

��� ��=��

unat="server

���:����

��

" />

www.depurando.com 90

Page 91: ASP .NET Framework 3.5

<html<head

<

Calen

Calen

Calen

<

</hea

<body

<<

<

l>d><script lang

void Pag

Cale

if (

}

void Dat

swit

ndar1.Select

ndar1.Select

ndar1.Select

} }

</script>

ad>

y>

<h3><font fa<p>

<form runat

Choose a <asp:Dro Auto

<asp<asp<asp<asp

guage "C#" r

ge Load(Obje

endar1.Selec

Calendar1.SCalendar1.S

te Selected(

tch (Calendacase (0): Label1.

break;case (1): Label1.

tedDate.ToShbreak;

case (7): Label1.

tedDate.ToShbreak;

default: Label1.

tedDate.ToShbreak;

ace "Verdana

server>

a Selection MopDownList idoPostBack=trup:ListItem Vp:ListItem Sep:ListItem Vp:ListItem V

��

unat "server

ct Sender, E

tionMode

electionModeelectedDates

object s, Ev

r1.SelectedD//None

Text "No d

//DayText "The ortDateStrin

//WeekText "The ortDateStrin

//MonthText "The ortDateStrin

">Date Selec

Mode:d="lstSelModue>alue="None"elected Valualue="DayWeealue="DayWee

��� �? � �

r">

EventArgs e)

(CalendarSel

e Calendas.Clear();

ventArgs e)

Dates.Count)

dates are cu

selected dang();

selection ing();

selection ing();

ction Modes<

de" runat=se

>None</asp:ue="Day" >Daek" >DayWeekekMonth" >Da

��������

) {

lectionMode)

arSelectionM

{

) {

urrently sel

ate is " +

is a week be

is a month b

</font></h3>

erver

:ListItem>ay</asp:Listk</asp:ListIayWeekMonth<

�� %����

lstSelMode.

Mode.None)

lected";

eginning " +

beginning "

>

tItem>Item></asp:ListIt

��� ��=��

SelectedInd

+

+

tem>

���:����

��

ex;

www.depurando.com 91

Page 92: ASP .NET Framework 3.5

<

</bod</htm

<html<head

<

Calen

Calen

Calen

<</hea

</asp:Dr

<p> <asp:Cal onse Font Heig Sele Toda DayH Othe Titl Titl Titl Sele Sele />

<p><asp:Lab

</form>

dy>ml>

l>d><script lang

void Dat

swit

ndar1.Select

ndar1.Select

ndar1.Select

} }

</script>ad>

ropDownList>

lendar id=Caelectionchangt-Names="Aright="180px" WectorStyle-BayDayStyle-BHeaderStyle-BerMonthDayStyleStyle-BackCleStyle-FontleStyle-FontectedDayStyleectedDayStyle

bel id=Label

guage "C#" r

te Selected(

tch (Calenda

case (0): Label1.

break;case (1): Label1.

tedDate.ToShbreak;

case (7): Label1.

tedDate.ToShbreak;

default: Label1.

tedDate.ToShbreak;

��

lendar1 runaged="Date Seal" Font-SizWidth="200pxackColor="gaackColor="gaBackColor="gyle-ForeColoColor="gray"-Bold="True"-Size="12px"e-BackColor=e-Font-Bold=

1 runat="ser

unat "server

object sende

r1.SelectedD

//NoneText "No d

//DayText "The ortDateStrin

//WeekText "The ortDateStrin

//MonthText "The ortDateStrin

��� �? � �

at="server"elected"ze="12px"x"ainsboro"ainsboro"gainsboro"or="gray""""="Navy"="True"

rver" />

r">

er, EventArg

Dates.Count)

dates are cu

selected dang();

selection ing();

selection ing();

��������

gs e) {

) {

urrently sel

ate is " +

is a week be

is a month b

�� %����

lected";

eginning " +

beginning "

��� ��=��

+

+

���:����

��

www.depurando.com 92

Page 93: ASP .NET Framework 3.5

<body

<<

<

onmouonmou

onmouonmou

<</bod</htm

FileMuesselec

La claperm

y>

<h3><font fa<p>

<form runat

<asp:Cal onse DayN Sele Font Heig Toda DayH Othe Titl Titl Titl Sele Sele

Next Prev Sele Sele

useover thisuseout this. Sele

useover thisuseout this.

/>

<p>

<asp:Lab

</form>dy>ml>

eUploadstra un contrcionar un ar

ase FileUploamiten a los us

ace "Verdana

server>

lendar id=CaelectionchangNameFormat="ectionMode="Dt-Names="Verdght="180px" WayDayStyle-FHeaderStyle-erMonthDayStyleStyle-BackCleStyle-ForeCleStyle-FontectedDayStyleectedDayStyletMonthText = vMonthText ectorStyle BectWeekText.style.backstyle.backg

ectMonthText.style.backstyle.backg

bel id=Label

rol de cuadrochivo para ca

admuestra usuarios selecc

��

">Selection

lendar1 runaged="Date SeShort"DayWeekMonthdana;Arial"Width="230pxont-Bold="TrFont-Bold="Tyle-ForeColoColor="#3366Color="white-Bold="True"e-BackColor=e-Font-Bold="<img src="<img src

ackColor "#9 "<img src

groundColorroundColor

"<img srcgroundColorroundColor

1 runat="ser

o de texto yargarlo al se

un control decionar un arc

��� �? � �

Link Graphi

at="server"elected"

h"Font-Size="

x"rue"True"or="gray"6ff"e""="#ffcc66"="True"'images/mont'images/mont99ccff"'images/sel'#ffcc66'

'#99ccff'>"c 'images/se'#ffcc66'

'#99ccff'>"

rver" />

un botón dervidor.

e cuadro dechivo en el c

��������

ics</font></

"12px"

thright.gif'thleft.gif'

lweek.gif' b

elmonth.gif'

búsqueda q

texto y un bliente y carg

�� %����

/h3>

border=0>"border 0>"

border 0

border 0

que permiten

otón de búsqgarlo en el se

��� ��=��

n a los usuari

queda queervidor Web.

���:����

��

ios

El

www.depurando.com 93

Page 94: ASP .NET Framework 3.5

usuarequippuedcuadr

El conusuarmecabotónguardarchivmétoPor epara

AntesmediHasFiusuarPostemanevalor

Cuanque del códarchivque laplica

El méaplicadispoaccesdeseeconce

Utiliccargaincluy

La prUtilicejemconteutiliza

rio especificapo local (pore seleccionaro de diálogo

ntrol FileUplrio lo seleccianismo que pn donde el udar el archivovo en una ruodo de controejemplo, si prguardar el a

s de llamar ao de la propile devuelverio que indicedFile para aera predeterno nulo aun

do llame al mdeba guardadigo de su apvo. Este comos usuarios pación y, a la v

étodo SaveAación ASP.NEone de dos mso de escritue guardar losede a la aplic

ce la propiedar utilizandoye la ruta de

opiedad Filece esta propiplo, puede uenido del arcar la propied

a el archivo qejemplo, C:\

ar el archivoo Elegir arch

oad no guarone para carpermita al ussuario puedo especificaduta especificaol de eventoroporciona urchivo en el

al método Saiedad HasFiltrue, llame

ca que el converiguar si eminada 0 bynque el contr

método Saverse el archivoplicación, semportamientopuedan escrvez, evitar e

s escribe el aET debe tenemedios para ora a la cuents archivos cacación ASP.N

ad FileNameel control Fi

e acceso al ar

Content obtedad para obusar el objetochivo en formdad FileBytes

��

que desea ca\MyFiles\Tehaciendo clicivo.

rda automátirgarlo. Debesuario enviara hacer clic pdo debe llamada del servios para un evun botón quemétodo de c

aveAs para ge si el controal método Satrol no contiexiste un archytes. Como corol FileUploa

eAs, especifio cargado. Sproducirá uno ayuda a mibir en ubical acceso a los

archivo cargaer derechos dobtener acceta bajo la cuaargados. O biNET.

e para obtenleUpload. Elrchivo en el c

tiene un objebtener acceso Stream devma de bytes ys para recupe

��� �? � �

argar escribieestFile.txt) enc en el botón

icamente unproporcionar el archivo epara cargar emar al métododor. Normalvento que inie permite encontrol del e

uardar el arcol FileUploadaveAs. Si deviene un archhivo para caronsecuenciaad esté en bl

que la ruta di no especificna excepciónantener segciones arbitrs directorios

ado en el dirde escrituraeso de escrital se ejecutaien, puede a

er el nombrenombre decliente.

eto Stream qso al contenivuelto por lay almacenarerar todos lo

��������

endo su rutan el cuadro dn Examinar y

archivo en ear explícitamespecificado.el archivo. Elo SaveAs, qumente, se llaicia una devonviar un archvento hacer

chivo en el sed contiene uvuelve false,ivo. No comrgar, porquea, la propiedaanco.

de acceso coca explícitamn cuando unuros los archrarias de la es raíz confide

rectorio espeen el directoura. Se puedla aplicaciónumentar el n

e de un archarchivo que

ue señala aido del archiva propiedad Flo en una maos bytes del a

�� %����

a de acceso cde texto del cy buscándolo

el servidor dmente un conPor ejemplocódigo que

ue guarda elama al métoolución de daivo, podría inclic.

ervidor, comn archivo. Si, muestra unpruebe la presta propiead PostedFile

mpleta del dmente una ruusuario inte

hivos del servestructura deenciales.

ecificado. Poorio del servide otorgar exn, en el direcnivel de conf

ivo de un cliedevuelve es

un archivo pvo en formaFileContentatriz de bytearchivo.

��� ��=��

completa encontrol. Tamo después en

espués de qntrol o uno, proporcionescriba paracontenido dodo SaveAs eatos al servidncluir un cód

mpruebe porla propiedad

n mensaje alropiedaddad contienee devuelve u

directorio enuta de accesoente cargar uvidor, al impe directorios

r consiguienidor. La aplicxplícitamentectorio dondefianza que se

ente que dessta propiedad

para cargarlode bytes. Popara leer eles. O bien, pu

���:����

�!el

mbiénn el

ue el

ne unae unen undor.digo

d

e deun

elo enunedirde la

te, lacacióneee

seed no

.or

uede

www.depurando.com 94

Page 95: ASP .NET Framework 3.5

La pra cargpropitipo dobtenotrola mis

Un prlimitaEstabcargade arParaatribuarchivelem

Durasiguie

aspneperce

Si loselemespecprocenuev

Puedservidrequetamaespec

En elarchivguard

<%@ P

<!DOC"http

<scri

pro {

/

opiedad Posgar. Puede uiedad Contende contenidoner acceso alado, la propsma funcion

rocedimientoar el tamañoblezca un límarán. El límiterchivos mayoaumentar elutomaxReqvo permitidoento locatio

nte la cargaente:

et_wp.exe (Pent of availab

usuarios recento processcifica la canteso de trabajo para reem

e controlar sdor, mientraestLengthDisño del búfercificado no d

ejemplo devos en una rdar el archivo

Page Languag

CTYPE html Pp://www.w3.o

ipt runat "s

otected void

// Specify t

stedFile obtieutilizar esta pntLength obto MIME del ala propiedad

piedad FileNaalidad.

o para proteo de los archimite de tamañe de tamañoores establectamaño máuestLength eo para una pn del archivo

de archivos g

PID: 1520) wble RAM).

ciben este msModel del aidad de memjo rebasa la cplazarlo, y se

si el archivoas se procesaskThresholdr de la secuedebe exceder

código siguieruta de acceso en la ruta d

ge "C#" %>

PUBLIC " //Worg/TR/xhtml

erver">

d UploadButt

the path on

��

ene el objetopropiedad patiene la longarchivo. Tamd FileName,ame, la prop

egerse de losvos que pueño que sea ao predetermiciendo el atriximo de archen el archivoágina determo Web.config

grandes, un

was recycled b

mensaje de erarchivo Webmoria máximcantidad espe reasignan t

cargado se aa la solicitud,d del elementncia de entrar del valor es

ente se mueso que se espde acceso es

3C//DTD XHTM1/DTD/xhtml1

on Click(obj

the server t

��� �? � �

o HttpPostedara tener accgitud del archmbién puedela propiedad

piedad FileCo

ataques poreden cargarsedecuado panado es de 4ibutomaxRehivo permitido Web.configminada, defing.

usuario tam

because mem

rror, aument.config de la

ma que puedepecificada potodas las sol

almacena temestableciento httpRuntiada. El valorspecificado p

estra cómo crpecifica en especificada e

ML 1.0 Trans1 transition

ject sender,

to

��������

dFile subyaceceso a otras phivo. La proputilizar la prod InputStreaontent y el m

r denegacióne, por mediora los tipos d4096 KB (4 MequestLengthdo para la apg. Para aumena el atributo

bién podría

mory consum

te el valor deaplicación.e utilizar un pormemoryLiicitudes actu

mporalmentedo el atributme. Este atrpredeterminpara el atribu

rear un contl código. Sen el servidor

sitional//ENnal.dtd">

, EventArgs

�� %����

ente para elpropiedadespiedad Conteopiedad Posm y el métodmétodo SaveA

n de servicioo del controlde archivos qMB). Puede ph del elemenplicación comentar el tamaomaxReque

recibir el me

mption excee

el atributomEl atributomproceso de tmit, se creauales al nuev

e en la memtoibuto permitnado es 256utomaxRequ

rol FileUploallama al métr.

N"

e)

��� ��=��

archivo quedel archivo.

entType obtiestedFile parado SaveAs. PAs proporcio

consiste enFileUpload.que prevea qpermitir la canto httpRuntmpleta, definaño máximoestLength en

ensaje de err

eded 460 MB

memoryLimitmemoryLimittrabajo. Si elun procesovo proceso.

oria o en el

te administrabytes. El valuestLength

ad que guardtodo SaveAs

���:����

�"se vaLaene elaPoronan

que sergatime.na elden el

ror

B (60

en elt

ar ellor

da lospara

www.depurando.com 95

Page 96: ASP .NET Framework 3.5

/S

///i{

}e{

}

} </scr

<html<head

<</hea<body

<<

<<

</bod</htm

En elarchivSyst

sistem

// save the String saveP

// Before at// on the fi// control cif (FileUplo{ // Get the String fil

// Append savePath +

// Call th // uploade // This ex // the nec // If a fi // already // the upl FileUpload

// Notify // was sav UploadStat

}else{ // Notify UploadStat

}

ript>

l >d id "Head1"<title>FileUad>y><form id "fo<div>

<h4>Selec

<asp:Filerunat

</asp:Fil

<br /><br

<asp:ButtTextOnClirunat

</asp:But

<hr />

<asp:Laberunat

</asp:Lab</div></form>dy>ml>

ejemplo devos en un ditem.Web.Ht

ma de archiv

uploaded fiPath @"c:\

ttempting to le, verify

contains a foad1.HasFile

e name of theName Fil

the name of + fileName;

he SaveAs meed file to txample does cessary errole with the

y exists in oaded file

d1.SaveAs(sav

the user of ved under. tusLabel.Tex

the user thtusLabel.Tex

runat "servUpload Examp

orm1" runat

ct a file to

eUpload id "t "server">eUpload>

r />

ton id "Uplo"Upload filck "UploadB

t "server">tton>

el id "Uploat "server">bel>

código siguierectorio espettpRequest

vos del direct

��

le to. temp\uploads

perform opethat the Filile.)

e file to upeUpload1.Fil

the file to

thod to savehe specifiednot perform r checking. same name

the specifieoverwrites ivePath);

the name of

t "Your fi

at a file wat "You did

ver">le</title>

"server">

upload:</h4

FileUpload1"

adButton"e"utton Click"

dStatusLabel

ente se mueecificado det.Physical

torio raíz par

��� �? � �

s\";

erationsleUpload

pload.leName;

o upload to

e thed path. all

ed path,it.

f the file

ile was save

as not upload not specif

4>

"

"

l"

estra cómo crl sistema delApplicati

ra la aplicaci

��������

the path.

ed as " + fi

aded.fy a file to

rear un contarchivos deionPath perón de servid

�� %����

ileName;

o upload.";

rol FileUploala aplicaciónrmite obtenedor actualme

��� ��=��

ad que guardn. La propieder la ruta físiente ejecutad

���:����

�)

da losdadca delda. Se

www.depurando.com 96

Page 97: ASP .NET Framework 3.5

llamaservid

<%@ P

<!DOC"http

<scri

p{

}</scr

<html<head

<</hea<body

<<<

a al método Sdor.

Page Languag

CTYPE html Pp://www.w3.o

ipt runat "s

protected vo{ // Save // that // curre // Creat // files // users // uploa string s

// Get t // execu string a

// Befor // that if (File { stri

// C // u // T // t // I // a // t File

// N Uplo

} else { // N Uplo }

}ript>

l >d id "Head1"<title>FileUad>y><h3>FileUplo<form id "fo<div>

<h4>Selec

<asp:Filerunat

</asp:Fil

<br/><br/

<asp:ButtTextOnClirunat

SaveAs para

ge "C#" %>

PUBLIC " //Worg/TR/xhtml

erver">

oid UploadBu

the uploadealready exi

ently executting an "Upl in a separ from overw

ading files waveDir @"

the physical uting applicappPath Re

re attemptinthe FileUpl

eUpload1.Has

ng savePath Server.Html

Call the Savuploaded filThis example the necessarf a file wi

already existhe uploaded eUpload1.Sav

Notify the uoadStatusLab

Notify the uoadStatusLab

runat "servUpload Class

oad Class Exorm1" runat

ct a file to

eUpload id "t "server">eUpload>

>

ton id "Uplo"Upload filck "UploadB

t "server">

��

guardar el a

3C//DTD XHTM1/DTD/xhtml1

tton Click(o

d file to ansts in the fing ASP.NET oads" directate directorriting existwith names l\Uploads\";

file systemation.quest.Physic

g to save thoad control File)

appPath +Encode(FileU

eAs method te to the spedoes not pe

y error checth the same ts in the spfile overwr

eAs(savePath

ser that theel.Text "Y

ser that a fel.Text "Y

ver">Example</ti

ample: Save "server">

upload:</h4

FileUpload1"

adButton"e"utton Click"

��� �? � �

archivo en la

ML 1.0 Trans1 transition

object sende

n "Uploads" file system application

tory isolatery. This helting applicalike "Web.co

m path for t

calApplicati

he file, vercontains a

+ saveDir +Upload1.File

to save the ecified patherform all cking.name

pecified patrites it. h);

e file was uYour file wa

file was notYou did not

itle>

To Applicat

4>

"

"

��������

ruta de acce

sitional//ENnal.dtd">

er, EventArg

directoryof the

n.es uploaded lps preventation files onfig".

the currentl

ionPath;

rifyfile.

eName);

h.

th,

uploaded sucas uploaded

t uploaded.specify a f

tion Directo

�� %����

eso especific

N"

gs e)

by

ly

ccessfully.successfull

file to uplo

ory</h3>

��� ��=��

cada en el

y.";

oad.";

���:����

�*

www.depurando.com 97

Page 98: ASP .NET Framework 3.5

<<

</bod</htm

En elarchivarchivla proarchivespecarchivelem

la apl

<%@ P

<!DOC"http

<scri

p{

uploa

</asp:But

<hr />

<asp:Laberunat

</asp:Lab</div></form>dy>ml>

ejemplo devos en una rvo que se puopiedad Convo que se cacificada del svo en el códmento http

licación.

Page Languag

CTYPE html Pp://www.w3.o

ipt runat "s

protected vo{ // Speci // save string s

// Befor // that if (File { // G int

// Aaded. if ( {

} else {

}

tton>

el id "Uploat "server">bel>

código siguieruta de accesuede cargar atentLength sarga es inferiservidor. Adeigo de la aplpRuntime en

ge "C#" %>

PUBLIC " //Worg/TR/xhtml

erver">

oid UploadBu

fy the path the uploadeavePath @

re attemptinthe FileUpl

eUpload1.Has

Get the size fileSize

Allow only f

fileSize <

// Append tsavePath +

// Call the // uploaded // This exam// the nece// If a fil// already // the uploFileUpload1

// Notify tUploadStatu

e

// Notify tUploadStatu

��

dStatusLabel

ente se mueso que se espa 5 MB. La psubyacente yor a 2 MB, seemás de comicación, puedn un tamaño

3C//DTD XHTM1/DTD/xhtml1

tton Click(o

on the servd file to. "c:\temp\upl

g to save thoad control File)

in bytes ofFileUpload1

iles less th

2100000)

he name of tServer.Html

SaveAs methfile to the

mple does nossary error e with the sexists in thaded file ov.SaveAs(save

he user thatsLabel.Text

he user why sLabel.Text

��� �? � �

l"

estra cómo crpecifica en eropiedad Poy devolver ee llama al mémprobar la code estableceo máximo pe

ML 1.0 Trans1 transition

object sende

ver to

loads\";

he file, vercontains a

f the file t.PostedFile.

han 2,100,00

the uploadedlEncode(File

hod to save e specified ot perform achecking.

same name he specifiedverwrites itePath);

t the file w "Your fil

their file "Your fil

"it excee

��������

rear un contl código. El cstedFile se ul tamaño delétodo SaveAonfiguracióner el atributormitido, en e

sitional//ENnal.dtd">

er, EventArg

rifyfile.

to upload. .ContentLeng

00 bytes (ap

d file to theUpload1.Fil

thepath.

all

d path,t.

was uploadedle was uploa

was not uplle was not ueds the 2 MB

�� %����

rol FileUploacontrol limitautiliza para ol archivo. Si eAs para guardde tamaño

omaxRequesel archivo de

N"

gs e)

gth;

pproximately

he path. leName);

d successfuladed success

loaded.uploaded becB size limit

��� ��=��

ad que guarda el tamañobtener accesel tamaño dedarlo en la rumáximo destLength dele configuraci

y 2 MB) to b

ly.fully.";

cause " +t.";

���:����

da losdeso aeluta

ón de

e

www.depurando.com 98

Page 99: ASP .NET Framework 3.5

}</scr

<html<head

<</hea<body

<<

<<

</bod</htm

En elarchivarchivla extméto

<%@ P

<!DOC"http

<scri

p{

} else { // N Uplo }

}ript>

l >d id "Head1"<title>FileUad>y><form id "fo<div>

<h4>Selec

<asp:Filerunat

</asp:Fil

<br/><br/

<asp:ButtTextOnClirunat

</asp:But

<hr />

<asp:Laberunat

</asp:Lab

</div></form>dy>ml>

ejemplo devos en una rvos con la extensión del aodo SaveAs p

Page Languag

CTYPE html Pp://www.w3.o

ipt runat "s

protected vo{ // Speci // save string s

// Befor // that if (File { // G stri

// G stri

Notify the uoadStatusLab

runat "servUpload Class

orm1" runat

ct a file to

eUpload id "t "server">eUpload>

>

ton id "Uplo"Upload filck "UploadB

t "server">tton>

el id "Uploat "server">bel>

código siguieruta de accesxtensión .docarchivo que spara guardar

ge "C#" %>

PUBLIC " //Worg/TR/xhtml

erver">

oid UploadBt

fy the path the uploadeavePath @

re attemptinthe FileUpl

eUpload1.Has

Get the name ng fileName

Get the exteng extensio

��

ser that a fel.Text "Y

ver">Example</ti

"server">

upload:</h4

FileUpload1"

adButton"e"utton Click"

dStatusLabel

ente se mueso que se espc o .xls. Se llase carga. Si erlo en la ruta

3C//DTD XHTM1/DTD/xhtml1

n Click(obje

on the servd file to. "c:\temp\upl

g to save thoad control File)

of the file Server.Ht

nsion of then System.I

��� �? � �

file was notYou did not

itle>

4>

"

"

l"

estra cómo crpecifica en eama al métoel archivo tieespecificada

ML 1.0 Trans1 transition

ect sender,

ver to

loads";

he file, vercontains a

e to upload.tmlEncode(Fi

e uploaded fIO.Path.GetE

��������

t uploaded.specify a f

rear un contl código. Estdo Path.Gene una extena del servido

sitional//ENnal.dtd">

EventArgs e

rifyfile.

.ileUpload1.F

file.Extension(fi

�� %����

file to uplo

rol FileUploae ejemplo sóetExtensio

nsión .doc oor.

N"

e)

FileName);

ileName);

��� ��=��

oad.";

ad que guardólo permite con para devo.xls, se llama

���:����

��

da loscargarolvera al

www.depurando.com 99

Page 100: ASP .NET Framework 3.5

}

</scr

<html<head

<</hea<body

<<

<<

</bod</htm

usingusingusingusingusingusingpubli{

p{

// A // t if ( {

} else {

}

}

}

ript>

l >d id "Head1"<title>FileUad>y><form id "fo<div>

<h4>Sele

<asp:Filruna

</asp:Fi

<br/><br

<asp:ButTextOnClruna

</asp:Bu

<hr />

<asp:Labruna

</asp:La</div></form>dy>ml>

g System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{

if (File

Allow only fto be upload(extension

// Append tsavePath +

// Call the // uploaded // This exam// the nece// If a fil// already // the uploFileUpload1

// Notify tUploadStatu

e

// Notify tUploadStatu

runat "servUpload Class

orm1" runat

ect a file t

eUpload idat "server">leUpload>

r/>

tton id "Uplt "Upload fiick "Upload

at "server">utton>

bel id "Uploat "server">abel>

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass FileUp

oid Button1

eUpload1.Has

��

iles with .ded.

".doc")

he name of tfileName;

SaveAs methfile to the

mple does nossary error e with the sexists in thaded file ov.SaveAs(save

he user thatsLabel.Text

he user why sLabel.Text

ver">Example</ti

"server">

o upload:</h

"FileUpload1

oadBtn"le"Btn Click"

adStatusLabe

rols;rols.WebParttrols;load : Syste

Click(object

File)

��� �? � �

doc or .xls

| (extension

the file to

hod to save e specified ot perform achecking.

same name he specifiedverwrites itePath);

t their file "Your fil

their file "Your fil

"it does

itle>

h4>

1"

el"

ts;

em.Web.UI.Pa

t sender, Ev

��������

extensions

n ".xls")

upload to t

thepath.

all

d path,t.

e was succesle was uploa

was not uplle was not unot have a

age

ventArgs e)

�� %����

)

the path.

ssfully uploaded success

loaded.uploaded bec.doc or .xl

��� ��=��

oaded.fully.";

cause " +s extension

���:����

��

.";

www.depurando.com 100

Page 101: ASP .NET Framework 3.5

}}

PanRepreconteprogr

La prmost

El concompmostespec

<%@ P<!DOC

"<html<hea

<<scri

{ Labe + File +

"<br +

"Fil + File +

"<br +

"MIM + Fi File MapP }

else { Labe }

}

nelesenta un coenedor de otramación, oc

opiedad Direrar texto par

ntrol Panel pportamientorar una imagcificar las ba

Page LanguagCTYPE html P"http://www.l >ad><title>Panelipt runat "s

el1.Text "

eUpload1.Fil

r />"

e Name: "

eUpload1.Fil

r />"

ME Type: " leUpload1.P

eUpload1.SavPath("~/Uplo

el1.Text "N

ontrol que actros controlecultar o most

ection es útilra idiomas q

proporcionay la presentgen personalrras de desp

ge "C#" AutoPUBLIC " //Ww3.org/TR/x

Example</terver">

��

File Length

eBytes.Lengt

eName

ostedFile.CoeAs(ads/" + File

No file rece

ctúa como coes. Resulta estrar un grupo

l para adaptaue se escribe

varias propieación de su clizada del coplazamiento d

EventWireup3C//DTD XHTMhtml1/DTD/xh

itle>

��� �? � �

: "

th

ontentType;

eUpload1.Fil

eived.";

ontenedor despecialmenteo de controle

ar el contenien de derech

edades quecontenido. Untrol Panel.del control.

"True" %> ML 1.0 Transhtml1 transi

��������

leName));

e otros contre útil si desees o adaptar

do de un conha a izquierd

le permitenUtilice la propUtilice la pro

sitional//ENitional.dtd"

�� %����

roles. El conta generar cor un grupo de

ntrol Panel cda, como el á

personalizarpiedad Backopiedad Scro

N"">

��� ��=��

trol Panel esontroles mede controles.

con el fin deárabe o el he

r elImageUrl paollBars para

���:����

��

s undiante

breo.

ra

www.depurando.com 101

Page 102: ASP .NET Framework 3.5

<

</he<bod

<

<

void Page

// Sho

if (Ch Pan } else { Pan }

// Gen

int nu

for (i Lab l.T l.I Pan Pan }

// Gen

int nu

for (i Tex t.T t.I Pan Pan } }

</script>

ead>dy>

<h3>Panel Ex

<form id "fo

<asp:PaneBackHeigWidt

Pane<br

</asp:Pan

<br />

Generate <asp:Drop

<asp:L<asp:L<asp:L<asp:L<asp:L

</asp:Dro

<br />

Generate <asp:Drop

<asp:L<asp:L<asp:L<asp:L<asp:L

</asp:Dro

e Load(Objec

ow or hide t

heck1.Checkenel1.Visible

nel1.Visible

nerate the L

umlabels I

nt i 1; i<bel l new Text "LabeD "Label"

nel1.Controlnel1.Control

nerate the T

umtexts In

nt i 1; i<xtBox t newText "TextD "TextBo

nel1.Controlnel1.Control

xample</h3>

orm1" runat

el id "PanelkColor "gainght "200px"th "300px">

el1: Here is />

nel>

Labels:pDownList idListItem ValListItem ValListItem ValListItem ValListItem ValopDownList>

TextBoxes:pDownList idListItem ValListItem ValListItem ValListItem ValListItem ValopDownList>

��

t sender, Ev

he Panel con

d) { false;

true;

abel control

nt32.Parse(D

numlabels; iLabel();l" + (i).ToS+ (i).ToStr

s.Add(l);s.Add(new Li

extbox contr

t32.Parse(Dr

numtexts; i+w TextBox();Box" + (i).Tx" + (i).ToSs.Add(t);s.Add(new Li

"server">

1" runat "sesboro"

some static

"DropDown1"ue "0">0</asue "1">1</asue "2">2</asue "3">3</asue "4">4</as

"DropDown2"ue "0">0</asue "1">1</asue "2">2</asue "3">3</asue "4">4</as

��� �? � �

ventArgs e)

ntents.

ls.

DropDown1.Se

i++) {

String();ring();

iteralContro

rols.

ropDown2.Sel

++) { ;ToString();String();

iteralContro

erver"

c content...

" runat "sersp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>

" runat "sersp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>

��������

{

electedItem.

ol("<br />")

lectedItem.V

ol("<br />")

.

rver">>>>>>

rver">>>>>>

�� %����

Value);

);

Value);

);

��� ��=�����:����

��

www.depurando.com 102

Page 103: ASP .NET Framework 3.5

<

</bo</ht

usingusingusingusingusingusingusingusingusingpubli{

p{

}p{

}p{

}}

<br /><asp:Chec

<br /><asp:Butt

</form>

ody>tml>

g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{ Panel1.V

}protected vo{

Unit lef left n Panel1.S

}protected vo{

Unit lef left n Panel1.S

}

ckBox id "Ch

ton ID "Butt

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass Panel

oid Button2

Visible !P

oid Button3

ft new Uninew Unit((dotyle["left"

oid Button4

ft new Uninew Unit((dotyle["left"

��

eck1" Text "

on1" Text "R

rols;rols.WebParttrols;Control : Sy

Click(object

anel1.Visibl

Click(object

t(Panel1.Styuble)left.Va] left.ToS

Click(object

t(Panel1.Styuble)left.Va] left.ToS

��� �? � �

"Hide Panel"

Refresh Pane

ts;

ystem.Web.UI

t sender, Ev

le;

t sender, Ev

yle["left"])alue 10, lString();

t sender, Ev

yle["left"])alue + 10, lString();

��������

" runat "ser

el" runat "s

I.Page

ventArgs e)

ventArgs e)

);left.Type);

ventArgs e)

);left.Type);

�� %����

rver"/>

server"/>

��� ��=�����:����

��

www.depurando.com 103

Page 104: ASP .NET Framework 3.5

<html<head

<

Syste

Syste

<

</hea<body

<

<

l>d>

<script lang

void Pag

// S

if (

} else

}

// G

int

for

em.Web.UI.We

}

// G

int

for

em.Web.UI.We

} }

</script>

ad>y>

<h3><font fa

<form runat

<asp:Pan Back Heig Widt

Pane<p>

</asp:Pa

<p>

Generate<asp:Dro

<asp<asp<asp<asp<asp

</asp:Dr

<br>

Generate<asp:Dro

guage "C#" r

ge Load(Obje

how/Hide Pa

Check1.ChecPanel1.Visib

e { Panel1.Visib

Generate lab

numlabels

(int i 1; iSystem.Web.

ebControls.Ll.Text "Ll.ID "LabPanel1.ContPanel1.Cont

Generate tex

numtexts

(int i 1; iSystem.Web.

ebControls.Tt.Text "Tt.ID "TexPanel1.ContPanel1.Cont

ace "Verdana

server>

nel id="PanekColor="gainght="200px"th="300px">

el1: Here is

anel>

e Labels: opDownList idp:ListItem Vp:ListItem Vp:ListItem Vp:ListItem Vp:ListItem VropDownList>

e TextBoxes: opDownList id

��

unat "server

ct sender, E

nel Contents

ked) { ble false;

ble true;

el controls

int.Parse(D

< numlabels;UI.WebControabel();abel" + i.Toel" + i.ToStrols.Add(l);rols.Add(new

tbox control

int.Parse(Dr

< numtexts;UI.WebControextBox();extBox" + itBox" + i.Torols.Add(t);rols.Add(new

">Panel Exam

l1" runat="ssboro"

some static

d=DropDown1alue="0">0</alue="1">1</alue="2">2</alue="3">3</alue="4">4</

d=DropDown2

��� �? � �

r">

EventArgs e)

s

DropDown1.Se

; i++) { ols.Label l

oString();tring();;w LiteralCon

ls

ropDown2.Sel

i++) { ols.TextBox

.ToString();oString();;w LiteralCon

mple</font><

server"

c content...

runat="serv/asp:ListIte/asp:ListIte/asp:ListIte/asp:ListIte/asp:ListIte

runat="serv

��������

) {

electedItem.

new

ntrol("<br>"

lectedItem.V

t new

;

ntrol("<br>"

</h3>

.

ver">em>em>em>em>em>

ver">

�� %����

Value);

"));

Value);

"));

��� ��=�����:����

�!

www.depurando.com 104

Page 105: ASP .NET Framework 3.5

<<

</bod</htm

Mul

MulRepreMultcontraplicacomoparámasisterepredesarun coestá dclientvistacontecontrejecu

La vispropise proprimecómo

<asp:

Si la pal mérepreprefe

<asp<asp<asp<asp<asp

</asp:Dr

<p><asp:Che

<p><asp:But

</font></form>

dy>ml>

ltiView y

tiviewesenta un coiView es unroles View enación puedeo la identidadmetro de cadentes. En estesenta un parrollar aplicaontrol View adefinido comte. Puede utiactiva. Si la penido en el crolMultiViewución.

sta activa seiedad Activeovoca que eera vez que so establecer

:MultiView id

propiedad Acétodo SetActesentar en elerencias del u

p:ListItem Vp:ListItem Vp:ListItem Vp:ListItem Vp:ListItem VropDownList>

eckBox id="Ch

tton Text="Re

y View

ontrol que accontenedorn el que cadarepresentard del usuariodena de conste escenario,so o páginaciones de ma la vez comomo la vista acilizar la proppropiedad Acliente. Si la vw, se produc

puede defineViewIndex sl control Viese llama al cola propiedad

d="MultiView

ctiveViewIndtiveView, lacliente en tusuario.

��

alue="0">0</alue="1">1</alue="2">2</alue="3">3</alue="4">4</

heck1" Text=

efresh Panel

ctúa como copara un grupa control Vier un control Vo, las preferesulta. El cont, cada controdiferente deúltiples panto vista activactiva, los conpiedad ActiveActiveViewInvista activa sce una excep

ir mediantese establecew establecidontrolMultiVd ActiveView

w1" ActiveVi

dex se estabaplicación puiempo de eje

��� �? � �

/asp:ListIte/asp:ListIte/asp:ListIte/asp:ListIte/asp:ListIte

="Hide Panel

l" runat="se

ontenedor depo de controew contieneView concreencias del ustrolMultiVieol View conteel asistente. Etallas para da en un contntroles secuneViewIndex odex está vace establecepción Argume

programaciómediante dedo como la vView. En el ewIndexmedi

iewIndex=0

blece medianuede determecución segú

��������

em>em>em>em>em>

l" runat="se

erver"/>

e un grupo doles View. Pecontroles seto en el clienuario e inforew también senido en unEste controlispositivos mrolMultiViewndarios que co el métodocía, el controen un controentOutOfRan

ón o medianeclaración alista activa seejemplo de cante declara

runat="Serve

nte programaminar qué coún criterios c

�� %����

erver"/>

de controlesermite definiecundarios. Ante basándosrmación pasase puede uticontrolMultambién se dmóviles. Sólow. Cuando ucontiene se rSetActiveVieolMultiViewol View quengeException

te declaraciól definir el coe representecódigo siguieación.

er">

ación o medintrol View secomo la ident

��� ��=��

View. El conir un grupo dA continuacióse en criterioada en unlizar para crtiViewdebe utilizarse puede de

un control Virepresentanew para defino represenno existe enn en tiempo

ón. Si laontrolMultiVe en el clienteente se mues

iante una llae va atidad o las

���:����

�"

troldeón, laos

ear

paraefinirewen elnir lantaelde

View,e lastra

mada

www.depurando.com 105

Page 106: ASP .NET Framework 3.5

ParaMultaprovactuael valcompNextVSwitc

En eluna eCuanActivclic eaume

<%@ P

<!DOC"

<html<head

<<scri

pro {

///i

permitir a loiView, puedvecharse dealmente activlor de uno deportamientoViewCommachViewByInd

ejemplo deencuesta básdo el usuarioveViewIndexn el botón Senta para de

Page Languag

CTYPE html P"http://www.l >d><title>Multiipt runat "s

otected void

// Determine// and set t// the view if (DevPollM

os usuarios de agregar unla actualizacvo, establezce los camposde desplaza

andName, SwexCommand

código siguiesica. Cada coo hace clic enx disminuye piguiente en csplazarse al

ge "C#" %>

PUBLIC " //Ww3.org/TR/x

View ActiveVerver">

d NextButton

e which buttthe ActiveViselected by

MultiView.Ac

��

esplazarse en control Linkción automátca la propieds de nombremiento desewitchViewBydName.

ente se muentrol View en el botón Apara desplazcualquier pácontrol View

3C//DTD XHTMhtml1/DTD/xh

ViewIndex Ex

Command(obj

on was clickewIndex propthe user.

tiveViewInde

��� �? � �

entre los conkButton o Butica en el condad Commande comando

eado: PrevioIDCommand

estra cómo ues una pregunterior en cuarse al contrgina, el valow siguiente.

ML 1.0 Transhtml1 transi

xample</titl

ject sender,

kedperty to

ex > 1 & De

��������

troles Viewutton a cadantrolMultiVindName delo siguientesusViewCommdName o

tilizar un connta indepenualquier págrol View anter de la propi

sitional//ENitional.dtd"

le>

, EventArgs

evPollMultiV

�� %����

dentro de uncontrol Viewiew del contbotón o botque correspmandName,

ntrolMultiVdiente de lagina, el valorerior. Cuandedad ActiveV

N"">

e)

View.ActiveV

��� ��=��

n controlw. Paratrol Viewón de vínculonda al

iew para creencuesta.de la propieo el usuarioViewIndex

ViewIndex <

���:����

�)

o en

ear

edadhace

3)

www.depurando.com 106

Page 107: ASP .NET Framework 3.5

{

}e{

}e{

} }

pro {

i{

}e{

}e{

} }

</s

</hea<body

<

{ // Increme // by one DevPollMul

}else if (Dev{ // This is // The use // Insert // Disable Page4Save. Page4Resta

}else{ throw new

}

otected void

if (DevPollM{ // Decreme // by one DevPollMul

}else if (Dev{ // This is // The use // Return DevPollMul

}else{ throw new

}

script>

ad>y><form id "Fo

<h3>Mult

<asp:PanWidtHeigHoriFontBackBordBordruna

<asp

ent the Activto advance tiView.Activ

vPollMultiVi

the final ver wants to code here t

e the navigaEnabled f

art.Enabled

Exception("A

d BackButton

MultiView.Ac

ent the Activto return ttiView.Activ

vPollMultiVi

the final ver wants to to the firstiView.Activ

Exception("A

orm1" runat

tiView Activ

nel id "Pageth "330px"ght "150px"zontalAlign

t size "12"kColor "#C0CderColor "#4derStyle "Doat "Server">

p:MultiViewActiveViewIrunat "Serv

<asp:View irunat "

<asp:LabFonTexrunAss

</asp:L

<asp:RaTeChGr

��

veViewIndexto the next veViewIndex

ew.ActiveVie

view.save the suro save survetion buttonsalse; false;

An error occ

Command(obj

tiveViewInde

veViewIndexo the previoveViewIndex

ew.ActiveVie

view.restart the t view. veViewIndex

An error occ

"Server">

eViewIndex E

1ViewPanel"

"Left"

0FF"04040"uble"

id "DevPollMndex "0"er">

d "Page1"Server">

bel id "Paget bold "truet "What kindat "Server"ociatedContrabel><br /><

dioButton idxt "Web Applecked "FalseoupName "Rad

��� �? � �

propertyview.+ 1;

ewIndex 3

rvey resultsey results.s.

curred.");

ject sender,

ex > 0 & Dev

propertyous view.

1;

ewIndex 3

survey.

0;

curred.");

Example</h3>

MultiView"

e1Label"e"d of applica

rolID "Page1<br />

d "Page1Radilications"e"dioGroup1"

��������

3)

s.

, EventArgs

vPollMultiVi

3)

>

ations do yo

1">

io1"

�� %����

e)

iew.ActiveVi

ou develop?"

��� ��=��

ewIndex <

���:����

�*

2)

www.depurando.com 107

Page 108: ASP .NET Framework 3.5

ru</asp:R

<asp:RaTeChGrru

</asp:

<asp:BuTexOnCHeiWidrun

</asp:B

</asp:View>

<asp:View irunat "

<asp:LabFonTexrunAss

</asp:L

<asp:RaTeChGrru

</asp:

<asp:RaTeChGrru

</asp:

<asp:BuTexOnCHeiWidrun

</asp:B

<asp:BuTexOnCHeiWidrun

</asp:B

</asp:View>

<asp:View irunat "

<asp:LabFonTexrunAss

</asp:L

<asp:RaTeChGrru

��

nat "server"adioButton><

dioButton idxt "Windowsecked "FalseoupName "Radnat "server"RadioButton>

tton id "Pagt "Next"lick "NextBught "25"th "70"at "Server"utton>

d "Page2"Server">

bel id "Paget bold "truet "How long at "Server"ociatedContrabel><br /><

dioButton idxt "Less thaecked "FalseoupName "Radnat "Server"RadioButton>

dioButton idxt "More thaecked "FalseoupName "Radnat "Server"RadioButton>

tton id "Pagt "Previoulick "BackBught "25"th "70"at "Server"utton>

tton id "Pagt "Next"lick "NextBught "25"th "70"at "Server">utton>

d "Page3"Server">

bel id "Paget bold "truet "What is at "Server"ociatedContrabel><br /><

dioButton idxt "Visual Becked "FalseoupName "Radnat "Server"

��� �? � �

" ><br />

d "Page1RadiForms Appli

e"dioGroup1"" >><br /><br /

ge1Next"

utton Comman

">

e2Label"e"have you be

rolID "Page2<br />

d "Page2Radian five yeare"dioGroup1"">><br />

d "Page2Radian five yeare"dioGroup1"">><br /><br /

ge2Back"us"utton Comman

">

ge2Next"

utton Comman

>

e3Label1"e"your primar

rolID "Page3<br />

d "Page3RadiBasic .NET"e"dioGroup1"">

��������

io2"ications"

/><br />

nd"

een a develo

2">

io1"rs"

io2"rs"

/><br />

nd"

nd"

ry programmi

3">

io1"

�� %����

oper?"

ing language

��� ��=��

e?"

���:����

www.depurando.com 108

Page 109: ASP .NET Framework 3.5

<</bod</htm

usingusingusingusingusing

</as

</asp:Pa

</form>dy>ml>

g System; g System.Datg System.Cong System.Colg System.Web

</asp:

<asp:RaTeChGrru

</asp:

<asp:RaTeChGrru

</asp:

<asp:BTexOnCHeiWidrun

</asp:B

<asp:BuTexOnCHeiWidrun

</asp:B

</asp:View>

<asp:View irunat "

<asp:LabFonTexrunAss

</asp:L

<br /><b

<asp:BuTexOnCHeiWidrun

</asp:B

<asp:BuTexOnCHeiWidrun

</asp:B

</asp:View>

p:MultiView

anel>

ta;nfiguration;lections;

b;

��

RadioButton>

dioButton idxt "C#"ecked "FalseoupName "Radnat "Server"RadioButton>

dioButton idxt "C++"ecked "FalseoupName "Radnat "Server"RadioButton>

utton id "Pat "Previoulick "BackBught "25"th "70"at "Server">utton>

tton id "Pagt "Next"lick "NextBught "25"th "70"at "Server">utton><br />

d "Page4"Server">

bel id "Labet bold "truet "Thank yat "Server"ociatedContrabel>

br /><br /><

tton id "Pagt "Save Relick "NextBught "25"th "110"at "Server">utton>

tton id "Pagt "Retakelick "BackBught "25"th "110"at "Server"utton>

>

��� �? � �

><br />

d "Page3Radi

e"dioGroup1"">><br />

d "Page3Radi

e"dioGroup1"">><br /><br /

age3Back"us"utton Comman

>

ge3Next"

utton Comman

>>

el1"e"you for taki

rolID "Page4

<br /><br />

ge4Save"esponses"utton Comman

>

ge4Restart"Survey"

utton Comman

">

��������

io2"

io3"

/>

nd"

nd"

ing the surv

4">

><br />

nd"

nd"

�� %����

vey."

��� ��=�����:����

��

www.depurando.com 109

Page 110: ASP .NET Framework 3.5

usingusingusingusingusingpubli{

p{

}p{

}p{

}p{

}}

g System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{ MultiVie

}protected vo{ MultiVie

}protected vo{ MultiVie

}protected vo{

if (!IsP { Mult }

}

b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass MultiV

oid Button1

ew1.ActiveVi

oid Button2

ew1.ActiveVi

oid Button3

ew1.SetActiv

oid Page Loa

PostBack)

tiView1.Activ

��

rols;rols.WebParttrols;iew and View

Click(object

ewIndex 1;

Click(object

ewIndex 2;

Click(object

eView((View)

d(object sen

veViewIndex

��� �? � �

ts;

w Controls :

t sender, Ev

;

t sender, Ev

;

t sender, Ev

)MultiView1.

nder, EventA

0;

��������

: System.Web

ventArgs e)

ventArgs e)

ventArgs e)

.FindControl

Args e)

�� %����

b.UI.Page

l("View1"));

��� ��=�����:����

��

www.depurando.com 110

Page 111: ASP .NET Framework 3.5

<%@ P<!DOC"http<scri

p{

}

</scr<html<head

<</hea<body

<

OnSel

</str

Navig

Navig

<</bod</htm

ViewReprecontr

El conestarcomo

La prde uncuanddeterrepre

Page LanguagCTYPE html Pp://www.w3.oipt runat "s

protected vo{ MultiVie

}

ript>l xmlns "httd id "Head1"<title>Untitad>y><form id "fo

<div><h3>

</h3<asp

lectedIndexC

</as<hr<asp

rong>

gateUrl="htt

gateUrl="htt

</as</form>dy>ml>

wesenta un corol MultiView

ntrol View econtenido d

o vista activa

opiedad Actn controlMudo el controrminar si unesentan en e

ge="C#" %>PUBLIC " //Worg/TR/xhtmlerver">

oid DropDown

ew1.ActiveVi

tp://www.w3. runat "serv

tled Page</t

orm1" runat

><font face>

p:DropDownLiChanged="Drop<asp:ListIte<asp:ListIte<asp:ListIte

sp:DropDownL/>

p:MultiView<asp:View ID Now show

<asp:Tex

<asp:Bu<asp:View ID Now show

<asp:Hyptp://www.asp

<asp:Hyptp://www.asp<asp:View ID Now show

<asp:Ca</asp:View>

sp:MultiView

ontrol que acw.

s un contenedentro de una en un contr

iveViewIndeultiView. El clMultiViewcontrol Viewl cliente.

��

3C//DTD XHTM1/DTD/xhtml1

List1 Select

ewIndex Co

org/1999/xhtver">itle>

"server">

"Verdana">Mu

st ID="DropDpDownList1 Sem Value="0"em Value="1"em Value="2"ist><br />

ID="MultiVieD="View1" ruwing View #1xtBox ID="Te

tton ID="ButD="View2" ruwing View #2perLink ID=".net">HyperLperLink ID=".net">HyperLD="View3" ruwing View #3lendar ID="C

></div>

ctúa como co

edor de un gn controlMurolMultiView

ex especificacontrol de viscontenedorw y sus contr

��� �? � �

ML 1.0 Trans1 transition

tedIndexChan

onvert.ToInt

tml">

ultiView wit

DownList1" rSelectedInde">View 1</as">View 2</as">View 3</as

ew1" runat="unat="server1<br />extBox1" run

tton1" runatunat="server2<br />"HyperLink1"Link</asp:Hy"HyperLink2"Link</asp:Hyunat="server3<br />Calendar1" r

ontenedor de

grupo de conltiView. Sólow.

el control Vista activa seesté visible.roles secunda

��������

sitional//ENnal.dtd">

nged(object

t32(DropDown

th 3 Views</

runat="serveexChanged">sp:ListItem>sp:ListItem>sp:ListItem>

"server" Actr">

nat="server"

t="server" Tr">

" runat="seryperLink>" runat="seryperLink></ar">

runat="serve

e un grupo d

troles. Un coo se puede d

ew activo derepresenta eUtilice la prarios están v

�� %����

N"

sender, Eve

nList1.Selec

/font>

er" AutoPost

>>>

tiveViewInde

"></asp:Text

Text="Button

rver"

rver"asp:View>

er"></asp:Ca

de controles

ontrol View sefinir un con

entro de la cen el cliente,opiedad Visivisibles en la

��� ��=��

entArgs e)

ctedValue);

tBack="True"

ex="0">

tBox><strong

n" /></asp:V

alendar>

contenidos e

siempre debntrol View a

colección Vie, siempre yble parapágina y se

���:����

��

>

iew>

en un

bela vez

ews

www.depurando.com 111

Page 112: ASP .NET Framework 3.5

Un coMultView

La clacuandpropicontrcuandActiv

ParaMultpropidesee

WizPropovario

El con

Pued

ontrol View piView. Un co

w, agregue un

ase View prodo el controiedad Activerol View difedo cambie lavate para Vie

permitir a loiView, puediedad Comme desplazars

zardorciona expls pasos. Pue

Recopilar

Separar edatos pro

Permitir l

ntrolWizard

Una coleccada paso

Funcionemostrar e

Un área dconcreta

Un área dpasos del

e utilizar el c

Recopilar

Separar edatos pro

Permitir l

puede conteontrol View nno o más con

oporciona losl View actuaeViewIndex cerente. Por eja propiedad Aew2 y el even

os usuarios de agregar un

mandName de.

oración y unede utilizar el

r datos relac

en pasos lógioporcionado

la exploració

d está formad

cción Wizardo, según lo d

es de desplazen función d

de encabezapara el paso

de barra latel control.

controlWiza

r datos relac

en pasos lógioporcionado

la exploració

��

ener controleno admite prntroles Panel

s eventos Acl se conviertcambia o sejemplo, si ViActiveViewInto Deactiva

esplazarse en control Linkdel control Li

na interfaz del controlWiz

ionados en v

icos menoress por el usua

ón lineal o no

do por los co

dStepCollectidefinido por e

zamiento inteel valor de S

do que se puo en el que se

eral que se pu

ard para:

ionados en v

icos menoress por el usua

ón lineal o no

��� �? � �

es de cualquropiedades dl al control V

tivate y Deate en la vistallama al métew1 es la visndex para este para View

entre varios ckButton o BunkButton o

e usuario (IUzard para:

varios pasos.

s una páginaario.

o lineal en lo

omponentes

ion de pasosel desarrolla

egradas quetepType.

uede persone encuentra

uede utilizar

varios pasos.

s una páginaario.

o lineal en lo

��������

ier tipo, include estilo. ParView.

ctivate. Se pactiva. Estotodo SetActivsta activa enspecificar View1.

controles Vieutton a cadaButton en el

) para recop

a Web mayor

s pasos.

siguientes:

s que contiendor de págin

determinan

alizar con elel usuario.

r para despla

a Web mayor

s pasos.

�� %����

uidos otros cra aplicar est

rovoca el evocurre cuanveView paraun controlMew2, se gene

ew contenidocontrol Viewl Id. del cont

pilar datos re

r utilizada pa

nen la interfanas.

n los botones

fin de mostr

azarse rápida

r utilizada pa

��� ��=��

controlestilos a un con

ento Activatndo el valor despecificar uMultiView,erará el even

os en un conw. Establezcarol View al q

lacionados e

ara recopilar

az de usuario

s adecuados

rar informac

amente por l

ara recopilar

���:����

��ntrol

tede laun

nto

ntrola laque

en

o para

para

ión

os

www.depurando.com 112

Page 113: ASP .NET Framework 3.5

El con

Pueddinám

El aspy conSideBStepN

TengaInternInternde m

El signombseparpeticStep2Wizapropi

<%@ P

<!DOC"http<html<head

<</hea<body

<<

OnAct

to fa

ntrolWizard

Una coleccada paso

Funcionemostrar e

Un área dconcreta

Un área dpasos del

e utilizar el mmicamente e

pecto del connfiguración dBarTemplateNavigationTe

a en cuentanet Explorernet Exploreranera prede

uiente ejembre y la direcrado. Si el usión para agre2 a Finish. Enrd haciendoiedad AllowR

Page Languag

CTYPE html Pp://www.w3.ol>d id "Head1"<title>ASP.Nad>y><form id "fo<asp:Wizard

BackColoBorderCo

tiveStepChan<StepSty<WizardS

<asp

alse,

d está formad

cción Wizardo, según lo d

es de desplazen función d

de encabezapara el paso

de barra latel control.

método Movel paso que s

ntrolWizarde estilo. Por, StartNavigaemplate para

que el contrr para el modr utilizando eeterminada e

plo de códigcción del ususuario no selegar una diren el paso Finiclic en GoBaReturn de St

ge "C#" Code

PUBLIC " //Worg/TR/xhtml

runat "servNET Example<

orm1" runatID "Wizard1

or "#EFF3FB"olor "#B5C7Dnged "OnActivyle ForeColoteps>

p:WizardStepWelcome to

so after yo

��

do por los co

dStepCollectidefinido por e

zamiento inteel valor de S

do que se puo en el que se

eral que se pu

veTo o la proe muestra ac

d es totalmenejemplo, puationTemplaa personaliza

olWizard nodo no estándel controlWizen Visual We

o muestra cóuario, con la oecciona Sepaección de enish, el usuariackButton; step1 está est

File "Wizard

3C//DTD XHTM1/DTD/xhtml1

ver">/title>

"server">" runat "serFont Names

E" Style "foveStepChanger "#333333"

ID "Step1"the Wizard e

u leave this

��� �? � �

omponentes

ion de pasosel desarrolla

egradas quetepType.

uede persone encuentra

uede utilizar

opiedad Activctualmente

nte personaluede utilizarate, FinishNaar la interfaz

o admite la rdar o quirks.zard, use elb Developer

ómo definiropción de esarateShippinnvío separado tiene la opsin embargo,tablecida en

dClass.cs" I

ML 1.0 Trans1 transition

rver" OnFini"Verdana" F

ont size: meed">Font Size "

Title "One"example. Thi

s step you w

��������

siguientes:

s que contiendor de págin

determinan

alizar con elel usuario.

r para despla

veStepIndexen el control

izable a travlas propiedaavigationTemdel controlW

representacióPara obtenetipo de docur y en Visual

un controlWscribir una dingCheckBoxa, el controlpción de volvlleva al usuafalse.

Inherits "Wi

sitional//ENnal.dtd">

ishButtonCliFont Size "0edium; font

"0.8em" />

" AllowReturis step's Al

will not be

�� %����

nen la interfanas.

n los botones

fin de mostr

azarse rápida

x para cambilWizard.

és de las plaades HeaderTmplate yWizard.

ón especial der la mejor reumento XHTMStudio.

Wizard para rirección de ey, por lo tanWizard pasaver al principario a Step2,

izardClasscs

N"

ick "OnFinis0.8em" Bordefamily: Ver

rn "false" rllowReturn p

able to ret

��� ��=��

az de usuario

s adecuados

rar informac

amente por l

ar

ntillas, máscTemplate,

de MicrosoftepresentacióML, que se a

recopilar elenvío pornto, envía una directamenpio del contro, porque la

aspx" %>

hButtonClicerWidth "1pxrdana;"

runat "serveproperty is

turn to it.

���:����

��o para

para

ión

os

caras

tón degrega

ante deol

k""

r">set

www.depurando.com 113

Page 114: ASP .NET Framework 3.5

/>

Heigh

Heigh

Heigh

/>

/>

check

>

Heigh

Heigh

Heigh

OnCli

</as<asp

ht "17px" />

ht "17px" />

ht "17px" />

k here if yo</as<asp

ht "17px" />

ht "17px" />

ht "17px" />

</as<asp

ick "OnGoBac

p:WizardStepp:WizardStep<! ... PuPlease ente<br />Name:<br /><asp:TextBo

<br />E mail Addr<asp:TextBo

><br />Address Lin<br /><asp:TextBo

><br />Address Lin<br /><asp:TextBo

><br />City:<br /><asp:TextBo

<br />State:<br /><asp:TextBo

<br />ZIP Code: <br /><asp:TextBo<br /><br /><asp:CheckB

ou would likp:WizardStep

p:WizardStep<! Gather

Please ente<br />Name:<br /><asp:TextBo<br />Address Lin<br /><asp:TextBo

><br />Address Lin<br /><asp:TextBo

><br />City:<br /><asp:TextBo<br />State:<br /><asp:TextBo

><br />ZIP Code: <br /><asp:TextBop:WizardStep

p:WizardStep<! Put UI <asp:Button

ckButtonClic

��

p>ID "Step2"

t UI elementr your billi

x runat "ser

ess:<br />x runat "ser

e 1:

x runat "ser

e 2:

x runat "ser

x runat "ser

x runat "ser

x runat "ser

ox runat "see to add a sp>ID "Step3"the shippin

r your shipp

x runat "ser

e 1:

x runat "ser

e 2:

x runat "ser

x runat "ser

x runat "ser

x runat "serp>ID "Finish"elements herunat "serv

k"

��� �? � �

Title "Two"ts here ... ing informat

rver" ID "Bi

rver" ID "Em

rver" ID "Bi

rver" ID "Bi

rver" ID "Bi

rver" ID "Bi

rver" ID "Bi

erver" ID "Sseparate shi

Title "Threng address i

ping informa

rver" ID "Sh

rver" ID "Sh

rver" ID "Sh

rver" ID "Sh

rver" ID "Sh

rver" ID "Sh

" Title "Finere for the ver" ID "GoB

��������

" runat "ser>

tion.

illingName"

mailAddress"

illingAddres

illingAddres

illingCity"

illingState"

illingZip" H

SeparateShipipping addre

ee" runat "sin this step

ation.

hippingName"

hippingAddre

hippingAddre

hippingCity"

hippingState

hippingZip"

nish" runatFinish step

BackButton"

�� %����

rver">

Width "226p

" Width "224

ssLine1" Wid

ssLine2" Wid

Width "155p

" Width "75p

Height "17px

ppingCheckBoess." />

server">p if CheckBo

" Height "17

ess1" Width

ess2" Width

" Height "17

e" Width "65

Height "17p

"server">p. > Text "Go Ba

��� ��=��

px" Height "

px"

dth "314px"

dth "314px"

px" Height "

px" Height "

x" />

ox" Text "Pl

ox1 was sele

px" />

"370px"

"370px"

px" />

px"

px" />

ack to Step

���:����

�!

17px"

17px"

17px"

ease

cted.

2"

www.depurando.com 114

Page 115: ASP .NET Framework 3.5

Borde

ID "C

Heigh

Size

BackC

Bold

Borde

ForeC

<<

</bod</htm

usingusingusingusingusingusingusingusingusingusingpubli{

p{

}p{

}p{

}}

erStyle "Sol

</as<asp

Complete">

ht "24px">

</as</Wizard<Navigat

"1.0em"Bord

Color "White<HeaderS

"True"Back

erWidth "2px<SideBar

Color "#0000Back

<HeaderT<b>W

</Header</asp:Wizard</form>dy>ml>

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{

if (!IsP}protected vo{ Wizard1.

}protected vo{

if (Wiza { Labe {

} }

}

ForeColid"

BorderWp:WizardStep

p:WizardStep

<asp:Label

</asp:Labelp:WizardStep

dSteps>tionButtonSt

derStyle "Soe" />tyle ForeCo

kColor "#284x" />rStyle Verti99"

kColor "#EFFTemplate>Wizard ExamprTemplate>d>

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass Wizard

oid Page Loa

PostBack) { W

oid Wizard1

Visible f

oid Wizard1 N

ard1.WizardS

el1.Text S

foreach (Co{

if (c i {

Che {

} } }

��

or "#284E98"

idth "1px" Bp>runat "serv

runat "serve

>p>

yle ForeColo

lid" BorderW

lor "White"

E98" BorderS

calAlign "To

3FB" Width "

le</b>

rols;rols.WebParttrols;Control : S

d(object sen

Wizard1.Acti

FinishButton

alse; Respon

NextButtonCl

teps[e.NextS

tring.Empty;

ntrol c in w

s CheckBox)

ckBox cb

Label1.Text

��� �? � �

" Font Names

BorderColor

ver" StepTyp

er" ID "Comp

or "#284E98"

Width "1px"

HorizontalA

Style "Solid

op" Horizont

"45px" />

ts;

System.Web.U

nder, EventA

iveStepIndex

nClick(objec

nse.Write("F

lick(object

StepIndex].T

; foreach (W

ws.Controls)

(CheckBox)c;

t + cb.Text

��������

s "Verdana"

"#507CD1" B

pe "Complete

pleteMessage

" Font Names

BorderColor

Align "Cente

d" BorderCol

talAlign "Ce

UI.Page

Args e)

x 0; }

ct sender, W

Finished<br

sender, Wiz

Title "Su

WizardStep w

)

; if (cb.Che

t + "<br />"

�� %����

Font Size "

BackColor "W

e" Title "Co

eLabel" Widt

s "Verdana"

r "#507CD1"

er" Font Siz

lor "#EFF3FB

enter" Font

WizardNaviga

/>" + Label

zardNavigati

ummary")

ws in Wizard

ecked)

";

��� ��=��

1.0em"

White" />

omplete"

th "408px"

Font

e "0.9em" F

B"

Size "0.8em

ationEventAr

1.Text);

onEventArgs

d1.WizardSte

���:����

�"

ont

"

gs e)

e)

ps)

www.depurando.com 115

Page 116: ASP .NET Framework 3.5

<%@ P

<!DOC"http

<scrivoi

{ L

DropD } </scr

<html<head

<ti</hea<body

<fo<

OnAct

Font-

StepT

<</f

</bod</htm

Page Languag

CTYPE html Pp://www.w3.o

ipt languageid GetFavori

Label1.TextDownList1.Se

ript>

l xmlns "httd id "Head1"itle>Simplead>y>orm id "form<div>

<h2>Simple <asp:Wizar

tiveStepChan BackColo

-Names="Verd Font-Siz

<WizardS<asp:W

<str<br

Favo<asp

<a<a<a<a<a<a<a<a<a<a

</as<br

</asp:<asp:W

Type="Comple<str<br<asp

</asp:</Wizard<SideBar

</asp:Wiza</div>form>dy>ml>

ge="C#" %>

PUBLIC " //Worg/TR/xhtml

e "C#" runatteNumberOnA

"Thank yoelectedItem.

tp://www.w3. runat "servSingle Step

m1" runat "s

e Single Steprd ID="Wizardnged="GetFavor="#FFFBD6"dana"ze="0.8em" Wteps>

WizardStep IDrong>Wizard/><br />

orite Numberp:DropDownLiasp:ListItemasp:ListItemasp:ListItemasp:ListItemasp:ListItemasp:ListItemasp:ListItemasp:ListItemasp:ListItemasp:ListItemsp:DropDownL/>WizardStep>

WizardStep IDete">rong>Wizard/>

p:Label ID="LWizardStep>

dSteps>rStyle Widthard>

��

3C//DTD XHTM1/DTD/xhtml1

"server">ctiveStepInd

u for tellinText;

org/1999/xhtver">Wizard Cont

erver">

p Wizard Cond1" runat="soriteNumberOBorderColor

idth="322px"

D="WizardSteStep 1</stro

:st ID="DropD>1</asp:List>2</asp:List>3</asp:List>4</asp:List>5</asp:List>6</asp:List>7</asp:List>8</asp:List>9</asp:List>10</asp:Lisist>

D="WizardSte

Step 2</stro

Label1" runa

"75px" Vert

��� �? � �

ML 1.0 Trans1 transition

dex(Object S

ng that your

tml">

trol</title>

ntrol</h2>server" ActiOnActiveStepr="#FFDFAD"

">

ep1" runat="ong>

DownList1" rtItem>tItem>tItem>tItem>tItem>tItem>tItem>tItem>tItem>stItem>

ep2" runat="

ong><br />

at="server"/

ticalAlign "

��������

sitional//ENnal.dtd">

Sender, Even

r favorite n

>

iveStepIndexpIndex"BorderWidth

"server" Tit

runat="serve

"server" Tit

/>

"Top"/>

�� %����

N"

ntArgs e)

number is:"

x="0"

h="1px" Cell

tle="Step 1"

er">

tle="Step 2"

��� ��=��

+

lPadding="5"

>

���:����

�)

www.depurando.com 116

Page 117: ASP .NET Framework 3.5

XmlMuesTransXML

Paraque fdocucadenrecog

PropieDocu

Docu

Docu

De mda foestabrepreutilizamediestilohojapredede es

PropieTran

lstra un docusformationssin formato

especificar efiguran a conmento XMLna XML o ungen las propi

edadument

umentConte

umentSourc

manera opciormato al docbleciendo unesentan los dar para dar fante un objeo de transforde estilo deeterminado.stilos de tran

edadsform

mento XML(XSLT). El coo utilizando

el documentontinuación. Eque se puedarchivo XMiedades para

DescripEstableSystem

ent Estable

ce Estable

nal, se puedcumento XMa de las dosdiferentes tipformato al doeto System.Xrmación XSL,transformacEn la siguien

nsformación

DescripcAplica foSystem.

��

sin formatontrol Xml setransformac

o XML que sstas tres proden mostrar.L si se estaba especificar

ciónce el docume

m.Xml.XmlDce el docume

ce el docume

e especificarML antes de qpropiedadespos de hojasocumento XMXml.Xsl.XslCoestablecien

ción XSL, se mnte tabla se eXSL.

ciónormato al docXml.Xsl.XslT

��� �? � �

o que utilizautiliza paraciones XSL.

e va a mostropiedades reSe puede mlece la propiel document

ento XML meDocument.ento XML me

ento XML me

r una hoja deque se escribs que figurande estilo deML. Se puedompiledTrando la propiedmostrará el denumeran la

cumento XMLransform esp

��������

a Extensible Smostrar el c

rar, establezcpresentan loostrar un Syedad adecuato XML.

diante un obj

diante una ca

diante un arc

e estilo de trba éste en lan a continuactransformace dar formatsform o meddad adecuaddocumento Xas propiedad

L mediante elpecificado.

�� %����

Stylesheet Laontenido de

ca una de lasos distintos tstem.Xml.Xmada. En la sig

jeto

adena.

chivo.

ansformaciósecuencia deción. Las dosción XSL queto al documediante un arcda. Si no se eXML con el fodes para espe

l objeto

��� ��=��

anguageun docume

s tres propieipos demlDocumentguiente tabla

ón XSL (XSLT)e salidas propiedadese puedenento XMLchivo de hojaespecifica ninormatoecificar una h

���:����

�*

nto

dades

t, unaa se

) que

es

a denguna

hoja

www.depurando.com 117

Page 118: ASP .NET Framework 3.5

Tran

<!The fXslTrThe odocumthe s

>

<%@ P<%@ I<%@ I<!DOC

"<html

<s

</<head

<</hea<body

<h

</bod</htm

<!For tnamedyour

<?xml

<xsl: <xs

< </x

<xs<

sformSourc

following exransform objobjects are ment. Make ssample XSL T

Page LanguagImport NamesImport NamesCTYPE html P"http://www.l >script runat void Page { XmlDocu doc.Loa

XslTran trans.L

xml1.Do xml1.Tr }

/script>d id "Head1"<title>Xml Cad>y>h3>Xml Examp

<form id "<asp:Xm

</form>dy>ml>

this exampled peopletabl.aspx file.

l version "1

stylesheetsl:template<xsl:apply txsl:template

sl:template<table width <tr> <td> <b> <xsl &#16 <xsl </b> </td> </tr> <tr> <td> <xsl:v <xsl:v , <xsl:v <xsl:v </td> </tr>

ce Aplica fode trans

xample demonects from tthen used bure the samp

Transform fi

ge "C#" Autopace "Systempace "System

PUBLIC " //Ww3.org/TR/x

t "server">Load(Object

ument doc ad(Server.Map

nsform trans Load(Server.M

ocument doransform t

runat "servClass Exampl

ple</h3>form1" runa

ml id "xml1"

e to work, pe.xsl. Stor

.0" encodin

version "1.match "/Peop

templates see>

match "Persh "100%" bor

:value of s0;:value of s

value of selvalue of sel

value of selvalue of sel

��

ormato al docsformación XS

strates how he sample XMy the Xml cople XML filele is called

EventWireupm.Xml" %> m.Xml.Xsl" %3C//DTD XHTMhtml1/DTD/xh

sender, Eve

new XmlDocumpPath("peopl

new XslTrMapPath("peo

c;rans;

ver">e</title>

t "server">runat "serv

aste the fole the file i

g "utf 8"?>

0" xmlns:xslple">lect "Person

on">der "1">

elect "Name/

elect "Name/

ect "Addressect "Address

ect "Addressect "Address

��� �? � �

cumento XMLSL especificad

to create XML and XSL Tontrol to die is called d Peopletabl

"True" %>

%>ML 1.0 Transhtml1 transi

entArgs e)

ment();le.xml"));

ransform();opletable.xs

ver" />

llowing codein the same

l "http://ww

n" />

/FirstName"

/LastName" /

s/Street" />s/City" />

s/State" />s/Zip" />

��������

L mediante eldo.

XmlDocumentTransform fiisplay the XPeople.xml

le.xsl.

sitional//ENitional.dtd"

sl"));

e into a fildirectory a

ww.w3.org/19

/>

/>

><br />

�� %����

l archivo de h

andiles.XMLand

N"">

leas

999/XSL/Tran

��� ��=��

hoja de estilo

nsform">

���:����

� o

www.depurando.com 118

Page 119: ASP .NET Framework 3.5

< </x

<xs

</

<x

</

</xsl

>

<!For tnamedyour

<?xml<Peop <Pe

<

<<

<<

< </P

<Pe<

<<

<<

< </P

<Pe<

<tr> <td> Job Ti Descri </td> </tr>

</table>xsl:template

sl:template

<bookstore <xsl:ap </bookstor

/xsl:templat

xsl:template <book> <xsl:at <xsl </xsl:a <price> <xsl </price <xsl:te </xsl:t </book>

/xsl:templat

l:stylesheet

this exampled people.xml.aspx file.

l version "1ple>erson><Name> <FirstName <LastName>

</Name><Address> <Street>18 <City>Redm <State>WA< <ZipCode>9

</Address><Job> <Title>CEO <Descripti

</Job>Person>

erson><Name> <FirstName <LastName>

</Name><Address> <Street>13 <City>Paso <State>CA< <ZipCode>9

</Address><Job> <Title>Att <Descripti

</Job>Person>

erson><Name> <FirstName

tle: <xsl:vption: <xsl

e>

match "book

e>pply templatre>te>

e match "boo

ttribute nam:value of s

attribute>>:value of s

e>ext>text>

te>

t>

e to work, p. Store the

.0" encodin

e>Joe</FirstN>Suits</LastN

00 Success Wmond</City></State>8052</ZipCo

O</Title>on>Wears th

e>Linda</Fir>Sue</LastNam

02 American o Robles</Ci</State>3447</ZipCo

torney</Titlon>Stands up

e>Jeremy</Fi

��

alue of sele:value of se

store">

es select "b

k">

e "ISBN">elect "@ISBN

elect "price

aste the folfile in the

g "utf 8" ?>

Name>Name>

Way</Street>

de>

e nice suit<

stName>me>

St.</Streetty>

de>

e>p for justic

rstName>

��� �? � �

ect "Job/Titelect "Job/D

book"/>

N"/>

e"/>

llowing codee same direc

>

>

</Descriptio

t>

ce</Descript

��������

tle" /><br /Description"

e into a filctory as

on>

tion>

�� %����

/>" />

le

��� ��=�����:����

��

www.depurando.com 119

Page 120: ASP .NET Framework 3.5

<<

<<

< </P

<Pe<

<<

<<

< </P</Peo

>

XML <?xml <CarLi<Car V<Car V<Car V<Car V

<Car V

XSL T<?xml versiocom:xs

<xsl:t

<title

<cente

</cent

<xsl:t

<font

</font

<font

</font

<font

</font

<font

</font

<font

</th>

</tabl<xsl:t<xsl:v

<LastName></Name><Address> <Street>34 <City>Waik <State>HI< <ZipCode>9

</Address><Job> <Title>Pro <Descripti

</Job>Person>

erson><Name> <FirstName <LastName>

</Name><Address> <Street>70 <City>Redm <State>WA< <ZipCode>9

</Address><Job> <Title>Web <Descripti

</Job>Person>ople>

File – CarLisversion="1.0ist> Vin="1A59B" MVin="9B25T" MVin="3H13R" MVin="7D67A" M

Vin="4T21N" M

Transformatversion="1.0on="1.0"xmlnsslt" xmlns:la

template matc

e>Car List</t

er> <h1>Car L

ter> </body>

template name=

size="4" > <

t> </th> <th

size="4" > <

t> </th> <th

size="4" > <

t> </th> <th

size="4"> <b>

t> </th> <th

size="4" > <

</tr> <xsl:c

le> </xsl:temtemplate name=value of sele

>Boards</Las

Palm Avenukiki</City></State>8052</ZipCo

o Surfer</Tion>Rides th

e>Joan</Firs>Page</LastN

0 Webmaster mond</City></State>8073</ZipCo

b Site Develon>Writes t

st.xml " encoding="u

ake="Chevroleake="Ford" Moake="BMW" Modake="Mazda" M

ake="VW" Mode

tion File – Ca" encoding="u:xsl="http://bs="http://la

h="/"> <html>

itle> </head>

ist</h1> <xsl

</html> </xsl

="CreateHeadi

b>VIN</b>

bgcolor="yell

b>Make</b>

bgcolor="yell

b>Model</b>

bgcolor="yell

>Year</b>

bgcolor="yell

b>Price</b> <

all template

plate> ="CreateTablect="@Vin"/> <

��

tName>

e</Street>

de>

tle>e big waves<

tName>ame>

Road</Stree

de>

oper</Title>he pretty pa

utf 8" ?>

et" Model="Impodel="F 250" Ydel="Z4" Year=Model="Miata"

el= "Beetle" Y

arList.xslutf 8" ?> <xsl/www.w3.org/19abs.com/myname

> <head>

> <body>

:call templat

:template>

ng"> <table b

ow">

ow">

ow">

ow">

</font>

name="CreateT

e"> <xsl:for e</td>

��� �? � �

</Descriptio

et>

>ages</Descri

pala" Year="19Year="1970" Pr="2006" Price=Year="2003" P

Year="1956" Pr

l:stylesheet 999/XSL/Transfespace">

te name="Creat

border="1" cel

Table"/>

each select="/

��������

on>

iption>

963" Price="1rice="1595.00="55123.00" />Price="28250.

rice="500.00"

form" xmlns:m

teHeading"/>

llpadding="5">

/CarList/Car">

�� %����

125.00" /> " /> > 00" />

/></CarList>

sxsl="urn:sch

> <tr > <th b

> <tr> <td al

��� ��=��

>

hemas microsof

bgcolor="yello

ign="center">

���:����

��

ft

ow">

>

www.depurando.com 120

Page 121: ASP .NET Framework 3.5

<td al

<xsl:v

<xsl:v

<xsl:v<xsl:v</xsl

publi{

}

Tes

1. Wcontr

2. Yoyourand othe be

lign="center">

value of sele

value of sele

value of selevalue of sele:template> </

ic partial c{

protecte { Xml1 Xml1 }

}

t

Which of the rols? (Choose

A. To creB. To creC. To creD. To dis

our graphics company sel

others are comest way to in

A. Use Imclicks to fB. Use thare displaproduct liC. Use thin each Vthe produD. Use anthe PostB

>

ct="@Make"/>

ct="@Model"/>

ct="@Year"/> ct="format nuxsl:styleshee

class Xml Co

ed void Page

.DocumentSo

.TransformS

following re one.) eate and popueate a customeate and popusplay a tabuladepartment jlls. Some of mplex shape

ncorporate thmageButtonfigure out whhe Table, Taayed in the ine that was he MultiViewView control uct line that wn ImageMapBackValue to

��

</td> <td>

></td> <td>

</td> <td aliumber(@Price,'et>

ntrol : Syst

Load(object

urce "~/Apource "~/A

represents th

ulate a Tablemized controlulate a Tablear result set just completethe product

es. You want he image into

and use the hat product l

ableRow, andcells, and usclicked.

w control andfor each pro

was clicked. control and identify the

��� �? � �

ign="right"> '$#,##0.00')"/

tem.Web.UI.P

t sender, Ev

pp Data/CarLApp Data/Car

he best use

e in Design vl that needs toe with images

ed an elaborline graphicsto use this im

o your Web sx- and y-co

line the user d TableCell se the Table

d break up thoduct line. U

define hot sproduct line

��������

/> </td> </tr>

Page

ventArgs e)

List.xml";rList.xsl";

of the Tabl

viewo display dats

ate image ths are circularmage as a msite? (Chooseoordinates thclicked.controls, bre

eCell control

he image intUse the Click

pot areas fore that was cli

�� %����

> </xsl:for e

le, TableRow

ta in a tabula

at shows ther, while othe

menu on your e one.)hat are return

eak the imagl’s Click eve

o pieces thatk event of th

r each of the icked.

��� ��=��

each>

w, and Tabl

ar fashion

e product lineers are rectan

Web site. W

ned when the

ge into pieceent to identi

t can be dispe View to id

product line

���:����

��

e-Cell

es that ngular,

What is

e user

es that fy the

played dentify

s. Use

www.depurando.com 121

Page 122: ASP .NET Framework 3.5

3. Yospreadata,to gaWhatpage?

ou are writinads over mult

validate the ather the datat is the easie? (Choose on

A. The ViB. The TeC. The WD. The D

ng a Web sitetiple Web padata, and sav

a that is spreest control tone.)

View controlextBox contro

Wizard controDataCollectio

��

e that collectages. When tve the data to

ead over mulo implement

ololon control

��� �? � �

ts lots of datthe user reaco the databasltiple pages t that can be

��������

ta from yourches the last pse. You noticand you wan used to col

�� %����

r users, and tpage, you nece that it cannt to simplifllect the data

��� ��=��

the data colleeed to gathern be rather dify this applica on a single

���:����

��ection

r all of fficult

cation.e Web

www.depurando.com 122

Page 123: ASP .NET Framework 3.5

AApliicaccocioon .

��

��

%��

��

���

Mne.NE

��� �

����

����

��:��

���

MCsET 3

����

��� ��

�� ��

��� �

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

CTS:Web3.5

��

:b5

www.depurando.com 123

Page 124: ASP .NET Framework 3.5

��

El endesarparaefecthastasino mcódigordenagreg

Éste cparteinmecorrecontr

El usofundadeclaASPXdatoscódigdesapexisteinterf

usingusingusingusingusingusingusingusingusingusing/// </// S/// <publi{

pp

vin;p{

}pp

��� �

��:��

lace a datosrrolladores eel acceso a dividad. No oa cierto puntmás bien engo para contrnación o elimga un nuevo

consiste en des visuales densa mayoríaectamente faroles: los com

o de componamental conarativo. EsteX o repartidos obliga a losgo de formaparecer y sonente. Los comfaces conoci

g System; g System.Datg System.Cong System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Col<summary>Summary desc</summary>ic class Car

public Car()public Car(sMake make

public strin{

get { reset { vi

}private stripublic strin

���� �

��� �

fue una de len ASP.NET 1datos, el enlabstante, al eo imperfectoel hecho derolar inclusominación. Pamodelo de o

diferentes coe los controldel código q

actorizado y cmponentes d

nentes de orsiste en la ponuevo modeentre las clas desarrolladinherente. Lon sustituidosmponentes ddas y ofrece

ta;nfiguration;b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConlections.Ge

cription for

r

{ } tring vin,

e; Model mng Vin

eturn vin; } n value;

ng vin; ng Make

� ����

����

� ����

as sorpresas1.x. Comparaace a datos senfrentarse ao. Las limitacque los desalas operaciora aportar unorigen de dat

ontroles nuees enlazadosque los desacreado, se ede origen de

igen de datoosibilidad deelo reduce elases de códigores a seguios extensoss por compode origen den, en genera

rols;rols.WebParttrols;neric;

Car

string make,odel; Year

}

�������

���� �

��

s más agradaado con la cosupuso una ma las necesidaciones no searrolladoresones sencillana solución atos.

vos sin IU qus a datos y lorrolladores dncuentra ahodatos.

os aporta nume un modelol código flexigo subyacentr unas reglasbloques de cnentes que sdatos se deal, un nivel m

ts;

, string mod year; Pric

� �� %���

�� %��

ables con lasompatibilidadmezcla extraades de los dencuentrandeben escribs y habitualea este proble

ue completanos contenedodebían escribora incrustad

merosas vende enlace able insertadte. La nuevas estrictas. Acódigo asociasimplementerivan de clas

más alto de re

del, int yeace price;

��� ���

����

que se encod de las págiordinaria dedesarrolladoen la funciobir una granes tales comoema, en ASP

n el vacío exores de datobir en ASP.NEdo en una nu

ntajas: la primdatos complo en línea enarquitecturademás, camados a evente se conectases abstractaeutilización.

ar, decimal}

���:���

�� ��

ontraron losnas Active Sesimplicidadres reales, renalidad genecantidad deo la paginaci.NET 2.0 se

istente entres. BásicamenET 1.x,ueva familia

mera yletamenten los recursoa de enlace abia la calidatos tienden an al marcoas, implemen

price) { Vi

�� � �����

���

erveryesultóeral,

ón,

e lasnte, la

de

os dead dela

ntan

n

www.depurando.com 124

Page 125: ASP .NET Framework 3.5

{

}pp{

}pp{

}pp{

}pp{

"Impa1595.Car(""Beet

}}

ConLos cocontr

��

. NETcomu

El Hiecontr

El DaCompque d

{get { reset { ma

}private stripublic strin{

get { reset { mo

}private stripublic int Y{

get { reset { ye

}private intpublic decim{

get { reset { pr

}private decipublic stati{

List<Carala", 1963, 00M)); carL

"7D67A", "Matle", 1956, }

troles Enontroles Datroles Data�Bo

Los contr

Los contrFormsVie

Los jerárq

T Frameworkunes y el com

erarchicalDatroles que mu

taBoundConpositeDataBodeben mostr

eturn make; ake value;

ng make; ng Model

eturn model; odel value

ng model; Year

eturn year; ear value;

year;mal Price

eturn price; rice value

mal price; c List<Car>

r> carList 1125.00M));

List.Add(newazda", "Miat500.00M));

lazados ata�Bound sonound se clas

roles Simples

roles Compuew.

quicos son aq

k proporcionamportamient

taBoundConuestran dato

ntrol heredaoundControlrarse en form

� ����

}}

}; }

}}

}; }

GetList()

new List<CacarList.AddCar("3H13R"

a", 2003, 28return carLi

a Datosn controles qifican en Sim

s son aquello

estos son aq

quellos relac

a varias claseto de los dato

ntrol heredas jerárquicos

de la BaseDal y la ListConma de cuadro

�������

ar>(); carLid(new Car("9", "BMW", "Z8250.00M));ist;

que se enlazamples, Compu

os que hered

quellos que h

cionados con

es base que sos concretos

de la BaseDas, como el m

ataBoundCotrol, que sono de datos, ta

� �� %���

ist.Add(new9B25T", "ForZ4", 2006, 5carList.Add

an o conectauestos o Jera

dan de ListCo

heredan de G

n controles d

se utilizan pas sujetos a co

ataBoundConmenú y contro

ntrol y es lan las clases dales como el

��� ���

Car("1A59B"rd", "F 250"55123.00M));d(new Car("4

an a las fuentarquicos.

ontrol y AdRo

GridView, De

de menú y Tr

ara proporciontroles.

ntrol y es la coles TreeView

clase padrede padres a oGridView y

���:���

, "Chevrole, 1970, carList.AdT21N", "VW"

tes de datos

otator.

etailsView, y

eeView

onar propied

clase padre aw.

a laotros controlDropDownL

�� � �����

t",

d(new,

. Los

dades

a los

esist.

www.depurando.com 125

Page 126: ASP .NET Framework 3.5

La clacuandeste mcontr

UsanEl Basclase

La prrecupclase

La prdatos

Normdos, t

El conejecu

ase DataBoudo los datosmétodo en uroles.

ndo ObjetseDataBouncontiene las

opiedad Datpera su listaque implem

opiedad Dats recupera su

malmente, fijtoma priorid

ntrol DataBoución llamand

ndControl tieestén listosun control, re

tos DataSdControl ess propiedade

taSource Obtde elemento

menta IEnume

taSourceID Ou lista de ele

aremos unadad DataSour

ound se conedo al método

� ����

ene un métopara ser llamecursivamen

Sourceun control des DataSourc

tiene o estabos de datos.erable, IListS

Obtiene o estementos de d

de las propirceID.

ecta automáto DataBind e

�������

odo llamadomados desdente se llama a

e Web que hce y DataSou

blece el objeEl objeto DaSource, IData

tablece el Iddatos.

edades Data

ticamente alen este cont

� �� %���

DataBind. Lle el origen dea este mismo

hereda direcurceID.

eto del que eataSource esaSource, o IH

. del control

aSource o Da

control de orol.

��� ���

lamaremos ae datos. Cuano método en

tamente de

l control enlun ejemplo

HierarchicalD

del cual el c

ataSourceID.

origen de dat

���:���

a este métodndo se llaman todos los

Control. Esta

azado a datotípico de un

Datasource.

ontrol enlaz

Si fijamos la

tos en tiemp

�� � �����

doa a

a

osna

ado a

as

po de

www.depurando.com 126

Page 127: ASP .NET Framework 3.5

Tene

�����

MapUn cosimplplant

Los co

GridV

En un

�������

UsanPropogenehered

mos una ser

AccessDa

SqlDataS

XmlDataS

ObjectDa

SiteMapD

pear Campontrol de plalemente protillas para de

ontroles con

View, Details

n control pod

HeaderTe

FooterTe

ItemTem

Alternatin

SelectedI

Separato

EditItemT

ndo la claorciona comrar y analizadar.

rie de objeto

ataSource

Source

Source

ataSource

DataSource

pos a las Pantilla es un cvee el mecaterminar el i

n soporte a p

sView, and Fo

demos usar l

emplate

mplate

plate

ngItemTemp

temTemplat

rTemplate

Template

ase DataBpatibilidad cr la sintaxis d

� ����

s fuente de d

Plantillascontrol que nnismo parainterface de

plantillas son

ormView

as siguiente

plate

te

Bindercon diseñadode expresion

�������

datos que po

sno tiene inteenlazar los dusuario.

:

s plantillas:

ores de desarnes de enlace

� �� %���

odemos cone

erface de usudatos. Los De

rrollo rápidoe de datos. E

��� ���

ectar a un ob

uario por defesarrolladore

o de aplicacioEsta clase no

���:���

bjeto DataBo

fecto. El contes usaran las

ones (RAD) pse puede

�� � �����

�ound

trols

para

www.depurando.com 127

Page 128: ASP .NET Framework 3.5

Las exutilizaunidi(actuuna een loproce

Las excontrexpredel co

En elun co

<aspDaDaRu

<I

Eval

Eval

Eval

Eval

Eval

</</as

Utiliz

El mécontrejecuelempartefila denlac

El mévalorsegun

xpresiones dan las funcioreccional (dealizable). Adexpresión des delimitadoesamiento de

xpresiones drol o de la claesiones de enontrol y no e

ejemplo deontrol FormV

p:FormViewataSourceIataKeyNameunAt="serv

ItemTempla<table><tr><td

l("Product<tr><td

l("Product<tr><td

l("Categor<tr><td

l("Quantit<tr><td

l("UnitPri</table>/ItemTemplsp:FormVie

zar el métod

étodo Eval evroles enlazadución, el métento de datoe más pequee un controlce dentro de

étodo Eval tode dicho cando parámet

de enlace deones Eval y Be sólo lecturademás de llame enlace de dores <%# y %e la página.

de enlace dease Page. Panlace de dates necesario

código siguieView en una

w ID="FormID="SqlDates="Producver">

ate>

d align="rtID") %></d align="rtName") %>d align="rryID") %><d align="rtyPerUnit"d align="rice") %></

late>ew>

o Eval

valúa las expdos a datos, codo Eval llamos actual delña del controGridView. Plas plantillas

oma el nombmpo desde etro opcional

� ����

datos estánind. La funcia). La funciómar a los méatos, puede> para ejecu

datos se resra los controos se resuelvllamar al mé

ente se muepropiedad It

mView1"taSource1"ctID"

right"><b>/td></tr>right"><b>></td></trright"><b></td></tr>right"><b>") %></td>right"><b>/td></tr>

presiones decomo GridVima al métodcontenedorol enlazado aPor consiguies de un cont

bre de un camel registro aca fin de espe

�������

contenidasión Eval se un Bind se utiétodos Eval yllamar a cuatar dicho có

suelven cuanoles como Grven automátétodo DataBi

estra el uso dtemTemplat

"

>Product I

>Product Nr>>Category>>Quantity></tr>>Unit Pric

datos enlazaiew, DetailsVo Eval del obr de nombresa datos queente, el métorol enlazado

mpo de datoctual en el orecificar un fo

� �� %���

dentro de lotiliza para deiliza para el ey Bind para ralquier códigdigo y devolv

ndo se llamaridView, Detaticamente duind de forma

de las exprese

ID:</b></t

Name:</b><

ID:</b></

Per Unit:

ce:</b></t

ados tardíamView y Formbjeto DataBis. El contenecontiene unodo Eval sóloo a datos.

os y devuelverigen de datoormato para

��� ���

os delimitadoefinir un enlaenlace de tipealizar el engo de ámbitover un valor

al método DailsView y Fourante el evea explícita.

iones de enl

td>

</td>

/td>

:</b></td>

td>

mente en lasmView. En tiender, hacienedor de nomregistro como se puede u

e una cadenaos. Puede prola cadena de

���:���

ores <%# y %ace de tipopo bidirecciolace de datoo público incldurante el

DataBind deormView, lasento PreRen

ace de datos

<td><%#

<td><%#

<td><%#

><td><%#

<td><%#

plantillas deempo dendo referencibres suele sempleto, comotilizar para e

a que contienoporcionar uevuelta. El

�� � �����

�%>, y

nalos enuido

unsder

s con

e

ia aler lao unael

ne elun

www.depurando.com 128

Page 129: ASP .NET Framework 3.5

parámString

Utiliz

El mésignifmétomodi

En ASutilizade orUpdaDetailos coorigerazónInser

El méfila Gentra

<Edi<t

metro de forg.

zar el métod

étodo Bind tificativas. Aunodo Bind o coficar los dato

SP.NET, los car automáticrigen de datoate para el coilsView, o enontroles secun de datos an, la funciónrtItemTempl

étodo Bind sGridView en mada como pa

itItemTemptable><tr><td ali<b>Em

</td><td>

<%# E</td>

</tr><tr><td ali<b>Fi

</td><td><asp:Tex

</td></tr><tr><td ali<b>La

</td><td><asp:

T</td>

</tr><tr><td col<asp:

rmato de cad

o Bind

iene algunasnque los valoon el métodoos.

ontroles enlcamente lasos. Por ejempontrol de orign una plantilundarios dea su vez ejecuBind se utilizate de un co

uele empleamodo de edirte de su pro

plate>

ign=right>mployee ID

Eval("Empl

ign=right>irst Name:

TextBox Ixt='<%# Bi

ign=right>ast Name:<

TextBox IText='<%#

lspan="2">LinkButto

� ����

dena utiliza la

s similitudesores de los cao Eval, el mé

azados a datoperacionesplo, si ha defgen de datosla de controlla plantilla yuta el comanza dentro deontrol enlaza

rse con contición. Cuandopia represe

>D:</b>

loyeeID")

></b>

ID="EditFiind("First

></b>

ID="EditLaBind("Las

>on ID="Upd

�������

a sintaxis de

con el métoampos enlazétodo Bind ta

tos como Grs de actualizafinido instrucs, el uso de Bl FormViewpasarlos al cndo correspoe las propiedado a datos.

troles de ento el control entación, pue

%>

irstNameTetName") %>

astNameTexstName") %

dateButton

� �� %���

finida para e

do Eval, perozados a datosambién se ut

idView, Detaación, suprescciones SQLBind en un copermite al cocontrol de orondiente parades EditIte

trada como Tenlazado a dede extraer lo

extBox" Ru>' />

xtBox" Run%>' />

n" RunAt="

��� ���

el método Fo

o hay diferens se puedentiliza cuando

ailsView y Fosión e insercSelect, Inserontrol GridVontrol extraerigen de datoa la base demTemplate

TextBox reprdatos crea esos valores de

unAt="Serv

nAt="Serve

"server"

���:���

ormat de la c

nciasrecuperar co

o se pueden

ormView puión de un cort, Delete yView oer los valoreos. El controdatos. Por eo

resentado postos controlee entrada.

ver"

er"

�� � �����

!clase

on el

edenontrol

s del deesta

or unaes de

www.depurando.com 129

Page 130: ASP .NET Framework 3.5

</</Ed

<%# Bi

<%# Bi

RepEl condispocadaplantformaHTM

ProgLa claINam

Conti

PropiAlter

DataM

DataS

DataS

Foote

Head

Tex&nbsp<asp:Tex

</td></tr>/table>ditItemTem

<%# Eval

<%# Eval

ind("Vin") %>

ind("Vin", "{

peaterntrol Repeatosición persoelemento vitillas. No tienato y de dispL y clases AS

gramacióase RepeatermingContaine

iene las sigui

iedadrnatingItemT

Member

Source

SourceID

erTemplate

derTemplate

xt="Updatep;LinkButtoxt="Cancel

mplate>

("Vin") %>

("Vin", "{0:C

0:C}" ) %>

ter es un cononalizada. Fusualizado enne caracterísposición debSP.NET

ón de la inr hereda de Cer.

ientes propie

Template

� ����

e" Command

on ID="Canl" Command

C}" ) %>

ntrol con vincnciona por rn la lista. Esteticas de dispe ser declara

nterfaz deControl y act

edades:

�������

dName="Upd

ncelUpdatedName="Can

culación a darepetición dee control es bposición interada explícita

l controltúa como un

DescLa plalos eModDatacontrModIEnumparaModorigeparaLa plaparteLa plaparte

� �� %���

date" />

eButton" Rncel" />

atos que muee una plantillbásico en curna ni de estmente y cod

Repeatercontenedor

ripciónantilla utilizalementos resifica o obtienSource que trolifica u obtienmerable querellernar la lifica u obtienen de datos qrellernar lasantilla que de inferiorantilla que de superior

��� ���

RunAt="ser

estra datos ula ASP.NET danto al funciilo. Toda la idificada medi

r.r implementa

ada para dibustantesne la tabla estiene que vin

ne el origene proporcionlistane el nombreque proporcis listaefine cómo

efine cómo

���:���

rver"

usando unadeterminadaionamiento cnformacióniante etiquet

ando la inter

ujar cada un

specífica dencularse con

de datosa cualquier d

e del controiona los dato

se dibuja la

se dibuja la

�� � �����

"

paracondetas

rfaz

o de

este

dato

l deos

www.depurando.com 130

Page 131: ASP .NET Framework 3.5

Items

ItemT

Sepa

Las pcontr

La prdatos

El confuent

Even

Item

Item

punto

Item

datos

Para

1

2

3

En elDataLmues

s

Template

ratorTempla

ropiedades sroles.

opiedad Items mostrada.

ntrol Repeatte de datos v

ntos

mCommandSe desenc

mCreatedSe desenc

o, la propied

mDataBoundSe desenc

s subyacente

responder a

1. Incluya u

2. Establezcfunción, c

3. Cree un mhaga lo si

a. Cp

b. E

ejemplo siguList. En el ejestra un carro

ate

son element

ms contiene

ter rellena lavinculada.

cadena cuan

cadena cuandad DataItem

dcadena despes. Esta vez,

a eventos de

n control Bu

ca la propiedcomo "sort"

método paraiguiente:

Compruebe lpara ver qué

Ejecute la lóg

uiente se muemplo, la proo de la compr

� ����

tos de la plan

la lista de ele

colección Ite

ndo un botón

ndo se está cm, siempre de

pués de que ula propiedad

e botón en co

tton, LinkBu

ad Commano "copy".

a el evento It

a propiedadcadena de c

gica adecuad

uestra cómoopiedad Itemra. El botón e

�������

DevuestoRepereprerepeaLa PlaelemLa plalos e

ntilla que for

ementos hijo

ems enumer

n se pulsa de

reando unoevuelve nulo

un elementod DataItem n

ontroles Dat

tton o Image

ndName del

temComman

CommandNomando se h

a para el bot

se puede remTemplate coenvía el com

� �� %���

uelve un objees, una coleceaterItem. Caesenta una fiaterantilla que dentosantilla que dlementos

rman la inter

os que están

rando todos

entro del con

de los elemeo.

o de Repeateo es nula.

taList y Repe

eButton en u

botón en un

nd del contro

Name del objha transferid

tón en que h

sponder a uontiene un c

mando AddTo

��� ���

eto Repeatercción de elemada elementila de datos m

efine cómo

ibuja los sep

rfaz de usuar

n asociados c

los objetos d

ntrol Repeate

entos de la re

er se haya vin

eater

una plantilla

a cadena qu

ol contenedo

jeto argumedo.

hizo clic el us

n clic del botcontrol ImageoCart. El cont

���:���

rItemcollectimentoso de la colecmostrados e

se dibujan lo

paradores en

rio de los

con cada fila

de datos en l

er

epetición. En

nculado con

de control.

e identifique

or. En el mét

nto del even

suario.

tón en un coeButton quetrolador de

�� � �����

)on,

cciónen

os

ntre

de

la

n este

los

e su

odo,

nto

ontrole

www.depurando.com 131

Page 132: ASP .NET Framework 3.5

eventcomp

1

2

3

4

5

6

7

8

9

1

<%@ PInher

<!DOC"http

<html<head

<</hea<body

<<

Comma%></t></as

Comma%></t

%></F

<<<

</bod</htm

prote{

Respoxt);

ListActúatodos

tos ItemCompra, ejecuta l

. protected

. DataL

. {

. if (e

. {

. //

. //

. //

. }

0. }

Page Languagrits "eRepea

CTYPE html Pp://www.w3.o

l xmlns "httd runat "ser<title>Páginad>y><form id "fo<div>

<asp:Reponit<Hea<Ite

andName "Imptd><td><asp:sp:TextBox><

<Alt

andArgumenttd></tr></Al

<FooFooterTempla

</asp:Re<asp:Obj

Sele

</div><asp:Label I</form>dy>ml>

ected void R{ Label1. Response

onse.Write(( }

tControla como la clas los controle

mmand deterla lógica corr

d void DataL

ListCommandE

.CommandName

Add code he

Use the val

item in the

ge "C#" Autoater1" %>

PUBLIC " //Worg/TR/xhtml

tp://www.w3.rver">na sin títul

orm1" runat

peater ID "Rtemcommand "aderTemplateemTemplate><<asp:Button

par" CommandATextBox ID

</td></tr></ternatingItem<asp:Button'<%# Eval("VternatingIt

oterTemplateate>epeater>ectDataSour

ectMethod "G

D "Label1"

Repeater1 It

Text e.Come.Write(e.It(TextBox)(e

ase base abstes de tipo de

� ����

rmina el botórespondiente

List1 ItemCo

EventArgs e)

e "AddToC

ere to add t

lue of e.Ite

e control.

EventWireup

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

o</title>

"server">

epeater1" ruRepeater1 It><h1>Venta dtr><td>ID "Button1

Argument '<%"TextBox1" rItemTemplatemTemplate><tID "Button2

Vin") %>'/><emTemplate>></table><%

ce ID "ObjecetList" Type

runat "serve

emCommand(ob

mmandName + em.ItemIndex.Item.Contro

tracta que de lista.

�������

ón en que see.

ommand(objec

Cart")

the item to

em.ItemIndex

"true" Code

ML 1.0 Trans1 transition

tml">

unat "servertemCommand"de Coches</h

1" runat "se%# Eval("Vinrunat "servee>tr bgcolor "2" runat "se<%# Eval("Vi

DateTime.N

ctDataSourceeName "Car">

er" Text "La

bject source

" : " + e.Cx);ols[e.Item.I

efine las pro

� �� %���

e hizo clic y, s

t source,

the shopping

to retrieve

eFile "eRepe

sitional//ENnal.dtd">

r" DataSourc>

h1><table></

erver" Textn") %>' /><%er" Text '<%

"#eeeeee"><terver" Textin") %></td>

Now.ToLongDa

e1" runat "s></asp:Objec

abel"></asp:

e, RepeaterC

CommandArgum

ItemIndex].F

opiedades, m

��� ���

si fue el botó

g cart.

e the data

eater1.aspx.

N"

ceID "Object

/HeaderTempl

"Button"%# Eval("Vin%# Eval("Mod

td>"Button" Co

><td><%# Eva

ateString()

server"ctDataSource

Label>

CommandEvent

ment;

FindControl(

métodos y eve

���:���

ón del carro d

cs"

tDataSource1

ate>

n")del") %>'

ommandName "al("Model")

e>

tArgs e)

"TextBox1")

entos comun

�� � �����

*de la

"

Par"

)).Te

nes a

www.depurando.com 132

Page 133: ASP .NET Framework 3.5

No seello, oListBo

Las pel cona enlapropidistinelemrespecontr

TodoUtilicíndicepropi

La claselecperm

<%@ P

<!DOC"

<html

<head<

<scri

</

</hea

<body

<f

e puede creaotras clasesox y RadioBu

ropiedades dntrol de listaazar al contriedad DataMntos camposentos del coectivamente.rol de lista es

s los elemence la propiede de un elemiedad del ele

ase ListContrción del con

mite incluir un

Page Languag

CTYPE html P"http://www.l >

d id "Head1"<title> Listipt runat "s

void Butto {

// Perftry

{ List Mess }

catch ( { List Mess }

}

/script>

ad>

y>

form id "for

<h3> ListC

<asp:ListBrunat

<asp:Li<asp:Li

ar directameheredan estauttonList, y a

de la clase Lia. Utilice la prol de lista. SMember paradel origen dntrol de lista. Se puede dstableciendo

ntos mostradad SelectedI

mento seleccemento selec

rol proporciotrol de lista cn controlado

ge "C#" Auto

PUBLIC " //Ww3.org/TR/x

runat "servtControl Selerver">

on Click(Obj

form this op

t.SelectedVaageLabel.Te

Exception e

t.SelectedVaageLabel.Te

rm1" runat "

Control Sele

Box ID "Listt "server">

stItem>ItemstItem>Item

� ����

nte una instaa clase comoasí se propor

istControl peropiedad Dai el origen dea especificarde datos a lasa establecienar formato ao la propieda

dos en el conndex para esionado en elccionado me

ona el eventocambia valoror personaliza

EventWireup

3C//DTD XHTMhtml1/DTD/xh

ver">ectedValue E

ect sender,

eration in a

lue ItemText "You se

x)

lue null;xt "Item n

server">

ctedValue Ex

"

1</asp:List2</asp:List

�������

ancia de la co, por ejempciona una fu

ermiten espetaSource pae datos contla tabla ques propiedadendo las propial texto que sad DataTextF

ntrol de listaspecificar o dl control de lediante la pro

o SelectedInres de un enado para est

"True" %>

ML 1.0 Transhtml1 transi

Example </ti

EventArgs e

a try catch

extBox.Text;elected " +

not found in

xample </h3>

tItem>tItem>

� �� %���

lase abstractplo, las clasesncionalidad

ecificar el orira especificaiene más dese va a utilizes ListItem.Tiedades Datase muestra pFormatString

se almacenadeterminar mista. Se puedopiedad Sele

dexChangedvío a otro ente evento.

sitional//ENitional.dtd"

itle>

e)

block in ca

;List.Select

n ListBox co

>

��� ���

ta ListContros CheckBoxLibásica comú

igen de los dar el origen duna tabla, uzar. Se puedeext y ListItemaTextField ypara cada ele.

an en la colecmediante prode obtener aectedItem.

d que se provnvío en el ser

N"">

ase the item

tedValue + "

ontrol.";

���:���

ol. En lugar dist, DropDowún.

datos que relde datos queutilice laen vincularm.Value de loDataValueFiemento en e

cción Items.ogramaciónacceso a la

voca cuandorvidor. Esto

m is not fou

.";

�� � �����

dewnList,

lenanse va

oseld,l

el

la

nd.

www.depurando.com 133

Page 134: ASP .NET Framework 3.5

</

</bod</htm

<asp:Li<asp:Li

</asp:List

<hr />

Enter the <asp:TextB

MaxLeTextrunat

&nbsp;&nbs

<asp:ButtoTextOnClirunat

<br /><br

<asp:Labelrunat

/form>

dy>ml>

stItem>ItemstItem>Item

tBox>

value of thBox ID "Itemength "6""Item 1"

t "server"/>

p;

on ID "Selec"Select Itemck "Button

t "server"/>

/>

ID "Messagt "server"/>

� ����

3</asp:List4</asp:List

e item to seTextBox"

tButton"m"Click"

eLabel"

�������

tItem>tItem>

elect: <br /

� �� %���

/>

��� ��� ���:����� � �����

www.depurando.com 134

Page 135: ASP .NET Framework 3.5

DroRepredespl

UtilicParaBorde

ParaobjetDrop

El conorigeconteContr

Utilicelem

<%@ P

<!DOC"

<html<s

</

<head<

</hea<body

opDownLesenta un colegable.

ce el controlcontrolar laerColor, Bord

especificar loto ListItem, pDownList.

ntrol DropDon de datos, cenga los elemrol.DataBind

ce la propiedento seleccio

Page Languag

CTYPE html P"http://www.l >script runat

void Selec {

// Set // base// Drop

Calenda Sys

}

/script>

d id "Head1"<title> Dropad>y>

Listontrol que pe

DropDownLapariencia dderStyle y Bo

os elementopor cada entr

ownList admcree un origementos que sd para enlaza

ad SelectedIonado por e

ge "C#" Auto

PUBLIC " //Ww3.org/TR/x

t "server" >

ction Change

the backgroed on the vapDownList coar1.DayStyletem.Drawing

runat "servpDownList Ex

� ����

ermite al usu

List para creadel control DorderWidth.

os que debenrada, entre l

mite asimismoen de datos,se van a mosar el origen d

ndex para dl usuario en

EventWireup

3C//DTD XHTMhtml1/DTD/xh

(Object send

und color folue selectedntrol..BackColor.Color.FromN

ver">ample </titl

�������

uario seleccio

ar un controlropDownLis

n aparecer enas etiquetas

o el enlace dcomo un obstrar en el code datos al co

eterminar mel control Dr

"True" %>

ML 1.0 Transhtml1 transi

der, EventAr

or days in td by the use

Name(ColorLi

le>

� �� %���

onar un únic

de lista despt, establezca

n el control Dde apertura

de datos. Parbjeto Systemontrol. A conontrol DropD

mediante proropDownList

sitional//ENitional.dtd"

rgs e)

the Calendarer from the

ist.Selected

��� ���

o elemento

plegable dea las propied

DropDownLia y de cierre

ra enlazar el.Collections.tinuación, utDownList.

gramación et.

N"">

r control

dItem.Value)

���:���

de una lista

selección únades

ist, coloque udel control

control a unArrayList, qutilice el méto

el índice del

;

�� � �����

nica.

un

ueodo

www.depurando.com 135

Page 136: ASP .NET Framework 3.5

<f

</

</bod</htm

usingusingusingusingusingusingusingusingusingusing//addusingpubli{

pp{

form id "for

<h3> DropD

Select a b

<br /><br

<asp:CalenShowGShowTrunat

<br /><br

<table cel

<tr>

<td>

B

</td

</tr>

<tr>

<td>

<

<

</td

</tr>

</table>

/form>

dy>ml>

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webdedg System.Colic partial c

private Listprotected vo{

if (!IsP

rm1" runat "

DownList Exam

background c

/>

ndar id "CalGridLines "TTitle "True"t "server"/>

/>

lpadding "5

>

Background c

d>

>

<asp:DropDowAutoPosOnSelecrunat "

<asp:List<asp:List<asp:List<asp:List<asp:List

</asp:DropDow

d>

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlCon

lections.Geclass DropDow

t<Car> carLioid Page Loa

PostBack)

� ����

server">

mple </h3>

olor for day

endar1"rue"

">

olor:

nList id "CotBack "True"tedIndexChanserver">

Item SelecteItem Value "Item Value "Item Value "Item Value "

wnList>

rols;rols.WebParttrols;

neric;wnList Contr

st Car.Getd(object sen

�������

ys in the ca

olorList""nged "Select

ed "True" Va"Silver"> Si"DarkGray">"Khaki"> Kha"DarkKhaki">

ts;

rol : System

tList();nder, EventA

� �� %���

alendar.

tion Change"

alue "White"ilver </asp:Dark Gray <

aki </asp:Li> Dark Khaki

m.Web.UI.Pag

Args e)

��� ���

"

"> White </aListItem>

</asp:ListItistItem>i </asp:List

ge

���:���

asp:ListItem

tem>

tItem>

�� � �����

>

www.depurando.com 136

Page 137: ASP .NET Framework 3.5

DropD{0:C}

}p

DropD}

<%@ PInher

<!DOC"http

<html<head

<</hea<body

<<

<<

{ Drop

DownList1.Da}"; DropDown }

}protected voDownList1.Se

Page Languagrits "DropdD

CTYPE html Pp://www.w3.o

l xmlns "httd runat "ser<title>Páginad>y><form id "fo<div>

<asp:Droonse<asp<asp<asp

</asp:Dr<asp:Lab<asp:Lab<asp:Lab

<br /><asp:Dro

AutoDataonse<asp

</asp:Dr<asp:Obj

Sele<br /><asp:Lab<br /><asp:Lab<br /><asp:Lab

</div></form>

pDownList1.DataValueFielnList1.DataB

oid Button1electedValue

ge "C#" AutoDownList1" %

PUBLIC " //Worg/TR/xhtml

tp://www.w3.rver">na sin títul

orm1" runat

opDownList Ielectedindexp:ListItem Vp:ListItem Vp:ListItem VropDownList>bel ID "Labebel ID "Labebel ID "Labe

opDownList IoPostBack "TaValueFieldelectedindexp:ListItem><ropDownList>ectDataSour

ectMethod "G

bel ID "Labe

bel ID "Labe

bel ID "Labe

� ����

ataSource d "Price";ind();

Click(object; }

EventWireup>

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

o</title>

"server">

D "DropDownLchanged "Droalue "E1">Elalue "E2">Elalue "E3">El

l1" runat "sl2" runat "sl3" runat "s

D "DropDownLrue" DataSou"Vin"changed "Dro/asp:ListIte

ce ID "ObjecetList" Type

l4" runat "s

l5" runat "s

l6" runat "s

�������

carList; Dr; DropDownLi

t sender, Ev

"true" Code

ML 1.0 Trans1 transition

tml">

List1" runatopDownList1lemento1</aslemento2</aslemento3</as

server" Textserver" Textserver" Text

List2" runaturceID "Obje

opDownList2em>

ctDataSourceeName "Car">

server" Text

server" Text

server" Text

� �� %���

ropDownList1ist1.DataTex

ventArgs e)

eFile "Dropd

sitional//ENnal.dtd">

t "server" ASelectedInd

sp:ListItem>sp:ListItem>sp:ListItem>

t "Label"></t "Label"></t "Label"></

t "server" AectDataSourc

SelectedInd

e1" runat "s></asp:Objec

t "Label"></

t "Label"></

t "Label"></

��� ���

1.DataTextFixtFormatStri

{ Label1.Te

dDownList1.a

N"

AutoPostBackdexChanged">>>>

/asp:Label></asp:Label></asp:Label>

AppendDataBoce1" DataTex

dexChanged">

server"ctDataSource

/asp:Label>

/asp:Label>

/asp:Label>

���:���

eld "Pricng "Price

ext

aspx.cs"

k "True">

<br /><br />

oundItems "TxtField "Mod

>

e>

�� � �����

�e";:

rue"el"

www.depurando.com 137

Page 138: ASP .NET Framework 3.5

</bod</htm

usingusingusingusingusingusingusingusingusingusingusingusing

publi{

p{

}p{

}p{

}}

ListRepre

UtilicelemselecListSe

dy>ml>

g System; g System.Colg System.Cong System.Datg System.Ling System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Xml

ic partial c

protected vo{

}protected vo{ Label1.T Label2.T Label3.T

}protected vo{ Label4.T Label5.T Label6.T

}

tBoxesenta un co

ce el controlentos. Utiliceción de varioelectionMod

lections;nfiguration;ta;nq;b;b.Security;b.UI;b.UI.HtmlConb.UI.WebContb.UI.WebCont.Linq;

class DropdD

oid Page Loa

oid DropDown

Text "El eText "El VText "El I

oid DropDown

Text "El eText "El VText "El I

ontrol de cua

ListBox parae la propiedaos elementode.Multiple.

� ����

trols;rols;rols.WebPart

ownList1 : S

d(object sen

List1 Select

lemento selealor seleccindice selecc

List2 Select

lemento selealor seleccindice selecc

adro de lista

a crear un coad Rows pars, establezca

�������

ts;

System.Web.U

nder, EventA

tedIndexChan

eccionado esionado es "cionado es "

tedIndexChan

eccionado esionado es "cionado es "

que permite

ntrol de listaa especificara la propieda

� �� %���

UI.Page

Args e)

nged(object

s " + DropDo+ DropDownL

" + DropDown

nged(object

s " + DropDo+ DropDownL

" + DropDown

e la selección

a que permitr el alto del cad SelectionM

��� ���

sender, Eve

ownList1.SelList1.SelectnList1.Selec

sender, Eve

ownList2.SelList2.SelectnList2.Selec

n de uno o va

te la selecciócontrol. ParaMode en

���:���

entArgs e)

ectedItem;tedValue;ctedIndex;

entArgs e)

ectedItem;tedValue;ctedIndex;

arios elemen

ón de uno o vhabilitar la

�� � �����

ntos.

varios

www.depurando.com 138

Page 139: ASP .NET Framework 3.5

Utilicejemcolec

<%@ P

<!DOC"

<html<head

<<scri

</

</hea<body

<h

<f

</

</bod</htm

usingusingusingusingusingusingusingusingusingusingpubli{

pp{

ce la coleccióplo, puede dcción Items y

Page Languag

CTYPE html P"http://www.l >d><title>ListBipt language

void Submi {

if (Lis Labe }

/script>

ad>y>

h3>ListBox E

form id "for

<asp:ListBRowsWidthSelecrunat

<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li

</asp:List

<asp:buttoTextOnClirunat

<asp:LabelFontFontrunat

/form>

dy>ml>

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

private Listprotected vo{ ListBox1

ón Items paradeterminar loy comproban

ge "C#" Auto

PUBLIC " //Ww3.org/TR/x

Box Example<e "C#" runat

tBtn Click(

tBox1.Selecel1.Text "Yo

Example</h3>

rm1" runat "

Box id "List"6"

h "100px"ctionMode "St "server">

stItem>ItemstItem>ItemstItem>ItemstItem>ItemstItem>ItemstItem>Item

tBox>

on id "Butto"Submit"ck "SubmitB

t "server" /

id "Label1Names "VerdSize "10pt"

t "server"/>

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass ListBo

t<Car> carLioid Page Loa

.SelectionM

� ����

a examinar loos elementondo el valor S

EventWireup

3C//DTD XHTMhtml1/DTD/xh

/title>"server">

Object sende

tedIndex > u chose: " +

server">

Box1"

ingle"

1</asp:List2</asp:List3</asp:List4</asp:List5</asp:List6</asp:List

n1"

tn Click">

"ana"

rols;rols.WebParttrols;//addex Control :

st Car.Getd(object sen

ode ListSe

�������

os objetos Lis seleccionadSelected de c

"True" %>

ML 1.0 Transhtml1 transi

er, EventArg

1)+ ListBox1.S

tItem>tItem>tItem>tItem>tItem>tItem>

ts;ed using SysSystem.Web.

tList();nder, EventA

electionMode

� �� %���

stItem incluidos en el concada elemen

sitional//ENitional.dtd"

gs e)

SelectedItem

stem.Collect.UI.Page

Args e)

e.Multiple;

��� ���

idos en el control ListBoxnto ListItem.

N"">

m.Text;

tions.Generi

���:���

ontrol ListBox enumerand

c;

�� � �����

!x. Pordo la

www.depurando.com 139

Page 140: ASP .NET Framework 3.5

}p{

}}

CheCreade fo

ListBox2if (!IsP

{ List List List List List }

}protected vo{

foreach {

if ( {

} } ListBox2

}

eckBoxLisun grupo derma dinámic

.SelectionMPostBack)

tBox1.DataSotBox1.DataTetBox1.DataVatBox1.DataTetBox1.DataBi

oid Button1

(ListItem i

item.Select

ListBox2.It

.DataBind()

ste casillas de vca enlazando

� ����

ode ListSe

urce carLixtField "PlueField "xtFormatStrind();

Click(object

tem in ListB

ed)

ems.Add(item

;

verificación do el control a

�������

electionMode

ist;Price";"Price";ing "Price

t sender, Ev

Box1.Items)

m);

de selecciónal origen de d

� �� %���

e.Multiple;

e: {0:C}";

ventArgs e)

múltiple cuydatos.

��� ���

ya creación p

���:���

podría realiza

�� � �����

"

arse

www.depurando.com 140

Page 141: ASP .NET Framework 3.5

El conque sde Itedetercomp

Es poRepevalorla listestabRepe

El concontr

<%@ P

<!DOC"

<html

<head<

<scri

ntrol CheckBse pueden geems con mierminar cuálepruebe la pro

osible especifatLayout y Rpredetermita se presentblece en RepeatDirection.

ntrol CheckBroles CheckB

Page Languag

CTYPE html P"http://www.l >

d id "Head1"<title> Checipt runat "s

void Check {

Message

// Iter// contfor (in

{

BoxList propoenerar dinámembros que ss son los eleopiedad Sele

ficar la formaRepeatDirectnado), la listta sin estructeatDirection.Horizontal,

BoxList aportBox individua

ge "C#" Auto

PUBLIC " //Ww3.org/TR/x

runat "servckBoxList Exerver">

k Clicked(Ob

e.Text "Se

rate through trol and dispnt i 0; i<ch

� ����

orciona un gmicamente mse corresponmentos seleected de cada

a en que se mtion. Si Repeaa se presenttura de tablan.Vertical. Sila lista se pr

ta prácticas fales permiten

EventWireup

3C//DTD XHTMhtml1/DTD/xh

ver">ample </titl

ject sender,

lected Item

the Items cplay the seleckboxlist1

�������

rupo de casimediante el enden a elemeeccionados, ra elemento d

muestra la liatLayout seta en una taba. De forma pse estableceesenta de fo

funciones den un mayor c

"True" %>

ML 1.0 Transhtml1 transi

le>

, EventArgs

(s):<br /><b

collection olected items.Items.Count

� �� %���

llas de verifienlace de datentos individrecorra la colde la lista.

sta utilizandestablece enbla. Si se estapredetermine esta propieorma horizon

e enlace de dcontrol sobre

sitional//ENitional.dtd"

e)

br />";

of the Checks.t; i++)

��� ���

cación de setos. Contieneuales de la lilección en ite

o las propiedn RepeatLayoablece en Reada, Repeatedad enntal.

datos. Sin eme el diseño.

N"">

kBoxList

���:���

elección múlte una coleccista. Paraeración y

dadesout.Table (eepeatLayouttDirection se

mbargo, los

�� � �����

)

tipleión

l.Flow,e

www.depurando.com 141

Page 142: ASP .NET Framework 3.5

</

</hea

<body

<f

</

</bod

</htm

RadReprecontropcióContide laSelec

PuedRepeprede

if ( {

M

}

}

}

/script>

ad>

y>

form id "for

<h3> Check

Select ite

<br /><br

<asp:CheckAutoPCellPCellSRepeaRepeaRepeaTextAOnSelrunat

<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li

</asp:Chec

<br /><br

<asp:label

/form>

dy>

ml>

dioButtonesenta un corol RadioButón de selecciiene una colelista. Para dctedItem de l

e especificaratDirection.eterminado)

checkboxlis

Message.Text

rm1" runat "

kBoxList Exam

ems from the

/>

kBoxList idPostBack "TrPadding "5"pacing "5"

atColumns "2atDirectionatLayout "FlAlign "RightectedIndexC

t "server">

stItem>ItemstItem>ItemstItem>ItemstItem>ItemstItem>ItemstItem>Item

ckBoxList>

/>

id "Messag

nListontrol de listattonList propón única queección Itemseterminar cula lista.

r la represenSi RepeatLa, la lista se re

� ����

t1.Items[i]

+ checkbox

server">

mple </h3>

CheckBoxLis

"checkboxlisue"

""Vertical"ow""hanged "Chec

1</asp:List2</asp:List3</asp:List4</asp:List5</asp:List6</asp:List

e" runat "se

a que encapsporciona a loe se puedens con miembuál es el elem

ntación de layout se estaepresenta en

�������

.Selected)

xlist1.Items

st.

st1"

ck Clicked"

tItem>tItem>tItem>tItem>tItem>tItem>

erver" Assoc

sula un grups desarrolladgenerar dináros que se cmento selecc

lista con lasablece en Repn una tabla.

� �� %���

s[i].Text +

ciatedContro

po de controldores de págámicamenteorrespondencionado, prue

propiedadepeatLayout.TSi se estable

��� ���

"<br />";

olID "checkb

les de botónginas un grupe mediante en con elemenebe la propie

s RepeatLayoTable (el valece en Repea

���:���

boxlist1"/>

de opción. Epo de botonel enlace de dntos individuedad

out yoratLayout.Flo

�� � �����

�*

Eles dedatos.uales

w, la

www.depurando.com 142

Page 143: ASP .NET Framework 3.5

lista sRepeRepe

<%@ P<!DOC

"<html<hea

<<scri

</he<bod

Text

Text

se representeatDirectioneatDirection.

Page LanguagCTYPE html P"http://www.l >ad><title>Radioipt language

void But {

if (R { La } }

void chk {

if (c { Ra }

else { Ra } }

void chk {

if (c { Ra }

else { Ra } }

</script>

ead>dy>

<h3>RadioBu

<form id "f

<asp:Ra<asp<asp<asp<asp<asp<asp

</asp:R

<br />

<asp:Ch"Display Ta

<br />

<asp:Ch"Display Ho

<br />

ta sin estructse establece.Horizontal,

ge "C#" AutoPUBLIC " //Ww3.org/TR/x

oButtonListe "C#" runat

tton1 Click(

RadioButtonL

abel1.Text

kLayout Chec

chkLayout.Ch

adioButtonLi

adioButtonLi

kDirection C

chkDirection

adioButtonLi

adioButtonLi

uttonList Ex

form1" runat

adioButtonLip:ListItem>Ip:ListItem>Ip:ListItem>Ip:ListItem>Ip:ListItem>Ip:ListItem>IRadioButtonL

heckBox id "able Layout"

heckBox id "orizontally"

� ����

tura con forme en RepeatDla lista se re

EventWireup3C//DTD XHTMhtml1/DTD/xh

Example</tit"server">

object Sourc

ist1.Selecte

"You select

kedChanged(O

ecked tru

st1.RepeatLa

st1.RepeatLa

heckedChange

.Checked

st1.RepeatDi

st1.RepeatDi

ample</h3>

"server">

st id "Radiotem 1</asp:Ltem 2</asp:Ltem 3</asp:Ltem 4</asp:Ltem 5</asp:Ltem 6</asp:List>

chkLayout" OChecked "tr

chkDirectionAutoPostBac

�������

ma de tabla.Direction.Vepresenta en

"True" %> ML 1.0 Transhtml1 transi

tle>

ce, EventArg

edIndex > 1

ted: " + Rad

Object sende

ue)

ayout Repe

ayout Repe

ed(Object se

true)

irection R

irection R

oButtonList1ListItem>ListItem>ListItem>ListItem>ListItem>ListItem>

OnCheckedCharue" AutoPos

n" OnCheckedck "true" ru

� �� %���

De forma prrtical. Si estaformato hor

sitional//ENitional.dtd"

gs e)

1)

dioButtonLis

er, EventArg

eatLayout.Ta

eatLayout.Fl

ender, Event

RepeatDirect

RepeatDirect

1" runat "se

anged "chkLastBack "true

dChanged "chunat "server

��� ���

redeterminadablece esta prizontal.

N"">

st1.Selected

gs e)

able;

low;

tArgs e)

tion.Horizon

tion.Vertica

erver">

ayout Checkee" runat "se

hkDirectionr" />

���:���

da,propiedad en

dItem.Text;

ntal;

al;

edChanged"erver" />

CheckedChan

�� � �����

� n

ged"

www.depurando.com 143

Page 144: ASP .NET Framework 3.5

</bo</ht

usingusingusingusingusingusingusingusingusingusingpubli{

pp{

}}

<asp:Bu

<br />

<asp:La

</form>

ody>tml>

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

private Listprotected vo{ RadioBut RadioBut CheckBox CheckBox

if (!IsP { List List List Radi Radi Radi Chec Chec Chec Data }

}

utton id "Bu

abel id "Lab

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass CheckB

t<Car> carLioid Page Loa

ttonList1.RepttonList1.RepxList1.RepeaxList1.RepeaPostBack)

tBox1.DataSotBox1.DataTetBox1.DataVaoButtonListoButtonListoButtonList

ckBoxList1.DckBoxList1.DckBoxList1.DaBind();

� ����

tton1" Text

el1" font na

rols;rols.WebParttrols;//addeoxList and R

st Car.Getd(object sen

peatColumnspeatDirectiotColumns 3tDirection

urce carLixtField "MlueField "1.DataSource1.DataTextFi1.DataValueFataSource ataTextFieldataValueFiel

�������

"Submit" on

ames "Verdan

ts;ed using SysRadioButtonL

tList();nder, EventA

3; on RepeatD3;

RepeatDire

ist;Make";"Price";e carList;ield "MakeField "PricarList;

d "Make";ld "Price"

� �� %���

nclick "Butt

na" font siz

stem.CollectList Control

Args e)

Direction.Ve

ection.Horiz

;e";ice";

";

��� ���

ton1 Click"

ze "8pt" run

tions.Generils : System.

ertical;

zontal;

���:���

runat "serv

nat "server"

c;Web.UI.Page

�� � �����

��er"/>

/>

www.depurando.com 144

Page 145: ASP .NET Framework 3.5

BullCreaBulleespecsitúecontr

ParaBulleenum

EstiloNotSNumLoweUppeLoweUppeDiscCircleSquaCusto

UtilicelemFirstBSquaCusto

letedListun control qetedList paracificar los eleun objeto Lirol BulletedL

especificar eetedList, estameración Bul

o de viñeta SetberederAlphaerAlphaerRomanerRoman

eareomImage

ce la propiedentos de listBulletNumbere, Circle o ComImage pa

tque genera ucrear una lisementos de vistItem por cList.

el tipo de viñablezca la proletStyle. En l

ad FirstBulleta en un conter se omite sCustomImagra especifica

� ����

na lista de esta de elemevista individucada entrada

eta con el quopiedad Bulla tabla sigui

DescripciónNo establecUn númeroUna letra mUna letra mUn númeroUn númeroUn círculo rUn círculo vUn cuadradUna image

etNumber patrol Bulletedsi la propiedage. Si establear una image

�������

lementos coentos a los quales que dea entre las et

ue desea moetStyle en uente se enum

ncido. o.minúscula. mayúscula. o romano en o romano en relleno. vacío.do relleno. n personaliza

ara especificadList ordenadad BulletStyce la propieden personaliz

� �� %���

on formato due se da un feben apareceiquetas de a

ostrar los eleno de los tipmeran los es

minúsculas. mayúsculas.

ada.

ar el valor indo. El valor qle está estabdad BulletStyzada de la viñ

��� ���

e viñetas. Utformato coner en el contpertura y de

mentos de lios de viñetastilos de viñe

icial de la nuque se asignablecida en elyle en el valoñeta, tambié

���:���

tilice el contviñetas. Parrol BulletedLe cierre del

ista en un codefinidos po

eta disponibl

umeración dea a la propiedcampo Disc,or del campoén deberá

�� � �����

��rolraList,

ontrolor laes.

e losdad,o

www.depurando.com 145

Page 146: ASP .NET Framework 3.5

estabimage

ParaBulleenumText,

CuanValueTargeprodu

Si la pelemParavíncupropiaplicaparahizo c

usingusingusingusingusingusingusingusingusingusingpubli{

pp{

}pE{

}pE{

blecer la propen.

especificar eetedList, estameración BulHyperLink y

do se hace ce para especet para especuce el despla

propiedad Dentos de listcontrolar meulo, proporcioiedades Seleables al contdeterminar eclic.

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

private Listprotected vo{ ListBox1 ListBox2

if (!IsP { Bull Bull Bull List

Enum List

Enum Data }

}protected voEventArgs e){ Bulleted (BulletS

typeof(B ListBox1

}protected voEventArgs e){ Bulleted (Bullete

piedad Bulle

el comportamablezca la proletedListDispy LinkButton.

clic en un hipificar la direccificar la venazamiento al

isplayModeta como víncediante progone un contrectedIndex ytrol Bulletedel índice del

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass Bullet

t<Car> carLioid Page Loa

.AutoPostBa

.AutoPostBaPostBack)

etedList1.DetedList1.DetedList1.D

tBox1.DataSom.GetNames(ttBox2.DataSom.GetNames(taBind();

oid ListBox1

dList1.Bulletyle)Enum.P

BulletStyle).SelectedVa

oid ListBox2

dList1.DispledListDispla

� ����

tImageUrl de

miento de propiedad DispplayMode. Lo

pervínculo, sección URL a lntana o el mal hacer clic e

se estableceulos que devgramación larolador de evSelectedItemList. Utilice lbotón de vín

rols;rols.WebParttrols;//addeedList Contr

st Car.Getd(object sen

ck true;ck true;

ataSource ataTextFieldataValueFielurce ypeof(Bulleturce ypeof(Bullet

SelectedInd

tStyle arse(,lue);

SelectedInd

ayMode yMode)Enum.P

�������

e forma que

resentación dplayMode enos comporta

e desplaza ala que desplaarco donde sn un hiperví

e en LinkButtvuelven datos acciones qventos param se heredanos datos denculo de un o

ts;ed using Sysrol : System

tList();nder, EventA

carList;d "Make";ld "Price"

tStyle));

tedListDispl

dexChanged(o

dexChanged(o

Parse(

� �� %���

especifique

de los elemen uno de los vamientos de

una direccióaza un hipervse muestra lanculo.

ton, el contros al servidorue se realizael evento Cln de la claseevento de laobjeto Bulle

stem.Collectm.Web.UI.Pag

Args e)

";

layMode));

object sende

object sende

��� ���

la ubicación

entos de listavalores definpresentación

ón URL. Utilicvínculo. Utilia página Web

rol BulletedLr cuando se han al hacer click. Tenga enListControl ya clase BullettedList en el

tions.Generige

er,

er,

���:���

n del archivo

a en un contrnidos por lan definidos s

ce la propiedice la propieb a la que se

Listmuestrahace clic en elic en un botn cuenta quey no sontedListEventAl que el usua

c;

�� � �����

��de

rol

son

daddad

losellos.ón dee las

Argsario

www.depurando.com 146

Page 147: ASP .NET Framework 3.5

}}

AdRMuesun titcamb

La infXMLincluyestabimageno va

<%@ P<!DOC

"<html

<hea<

</hea

<bod<

<</bo

typeof(B ListBox2

}

Rotatorstra un titulatular de anunbia cada vez q

formación sopermite manyen la ruta dblece un víncen no está dalida la inform

Page LanguagCTYPE html P"http://www.l >

ad id "Head1<title>AdRotad>

dy><form id "fo

<h3>AdRot

<asp:AdRoTargAdve

</form>ody>

BulletedList.SelectedVa

ar de anuncioncio seleccioque se actua

obre los anunntener una lide acceso a uculo al hacerisponible, unmación cont

ge "C#" AutoPUBLIC " //Ww3.org/TR/x

" runat "setator Exampl

orm1" runat

tator Exampl

otator id "Aget " self"ertisementFi

� ����

DisplayMode)lue);

o en una págonado aleatoaliza la págin

ncios se almaista de anununa imagen qclic en el cona palabra clenida en est

EventWireup3C//DTD XHTMhtml1/DTD/xh

rver">e</title>

"server">

e</h3>

dRotator1" r

le "~/App Da

�������

),

gina Web. Utoriamente ena.

acena en uncios y sus atrque se va a mntrol, el textlave y la frecte archivo.

"True" %> ML 1.0 Transhtml1 transi

runat "serve

ata/Ads.xml"

� �� %���

tilice el contrn la página W

archivo XMLributos asocimostrar, la dio alternativocuencia del a

sitional//ENitional.dtd"

er"

"/>

��� ���

rol AdRotatoWeb. El anunc

L independieiados. Entrerección URLo que se muenuncio. El co

N"">

���:���

or para mostcio mostrado

ente. El archilos atributosa la que seestra cuandoontrol AdRot

�� � �����

��

raro

ivos se

o latator

www.depurando.com 147

Page 148: ASP .NET Framework 3.5

</ht

<?xml<Adve1.2"> <Ad

<<<<<

</A <Ad

<<<<<

</A <Ad

<<<<<

</A</Adv

usingusingusingusingusingusingusingusingusingusingpubli{

p{

tml>

l version "1ertisements>d xmlns ""><Keyword>Adv<ImageUrl>~/<NavigateUrl<AlternateTe<ImpressionsAd>d xmlns ""><Keyword>Con<ImageUrl>~/<NavigateUrl<AlternateTe<ImpressionsAd>d xmlns ""><Keyword>Nor<ImageUrl>~/<NavigateUrl<AlternateTe<ImpressionsAd>vertisements

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{ AdRotato

.0" encodinxmlns "http

ventureWorksimages/Adve>http://www

ext>Ad for A>100</Impre

ntoso</Keywoimages/Cont>http://www

ext>Ad for C>100</Impre

rthwind</Keywimages/Nort>http://http

ext>Ad for N>50</Impres

>

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass AdRota

oid Page Loa

or1.Advertis

� ����

g "utf 8" ?>://schemas.m

</Keyword>ntureWorks.g.adventure wdventure Worssions>

rd>oso.gif</Ima.contoso.comontoso Ltd. ssions>

word>hwindTradersp://www.nortorthwind Trasions>

rols;rols.WebParttrols;tor Control

d(object sen

ementFile

�������

>microsoft.co

gif</ImageUrworks.com</Nrks Web site

ageUrl>m/</NavigateWeb site</A

s.gif</Imagethwindtraderaders Web si

ts;

: System.We

nder, EventA

"~/App Data

� �� %���

om/AspNet/Ad

rl>NavigateUrl>e</Alternate

eUrl>AlternateTex

eUrl>rs.com</Naviite</Alterna

eb.UI.Page

Args e)

a/Ads.config

��� ���

dRotator Adv

>eText>

xt>

igateUrl>ateText>

g";

���:���

vertisement

�� � �����

��

File

www.depurando.com 148

Page 149: ASP .NET Framework 3.5

}}

Se rno tsólo

ComReprecontr

La clacomp

AdRotato AdRotato

}

recomiendatienen acco lectura.

mpositeDesenta la claroles de serv

ase Composipuesto que s

or1.Height or1.Width

a colocar ceso los n

DataBounse base paravidor.

teDataBoune enlaza a lo

� ����

60;468;

el archivnavegadore

ndControa un control t

ndControl siros datos de u

�������

vo xml en es. Poner

oltabular enlaz

rve como claun origen de

� �� %���

la carpetextensión

zado a datos

se base paradatos. Un co

��� ���

ta App_Datn .config

s que se com

a un control dontrol de ser

���:���

ta, a la cy permiti

mpone de otr

de servidorrvidor compu

�� � �����

�!

cualir

os

uesto

www.depurando.com 149

Page 150: ASP .NET Framework 3.5

es undesarsu luga dat

Las clCreataccescolec

DatContrcontroadmit

<%@ PInher

<!DOC"http

<html<head

<</hea<body

<<

<<

</bod</htm

n control querrolladores dgar, utilizan cos compuest

lases que heteChildContrso a los contcción Control

taListol de lista enlol DataList pate la selección

Page Languagrits "eDataL

CTYPE html Pp://www.w3.o

l xmlns "httd runat "ser<title>Páginad>y><form id "fo<div>

<asp:DatBordDataGrid<Foo<Alt<Ite<Sel<Hea<Ite

</It</asp:Da<asp:Obj

Sele

</div></form>dy>ml>

e se componede páginas nocontroles qutos son los c

redan del corols(IEnumerroles secundls.

azada a datosara mostrar u y la edición.

ge "C#" AutoList1" %>

PUBLIC " //Worg/TR/xhtml

tp://www.w3.rver">na sin títul

orm1" runat

taList ID "DderColor "#DaKeyField "VdLines "VertoterStyle BaternatingItememStyle BackectedItemSt

aderStyle BaemTemplate>Vin:<asp:Label<br />Make:<asp:Label<br />Model:<asp:Label<br />Year:<asp:Label<br />Price:<asp:Label<br /><br />

temTemplate>ataList>ectDataSour

ectMethod "G

� ����

e de una como utilizan dirue derivan deontroles Det

ontrol Comporable,Booleadarios de un

s que muestrauna lista enlaz

EventWireup

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

o</title>

"server">

ataList1" ruEDFDE" Bordein" DataSourical" WidthckColor "#CCmStyle BackCColor "#F7F7yle BackColockColor "#6B

ID "VinLabel

ID "MakeLabe

ID "ModelLab

ID "YearLabe

ID "PriceLab

ce ID "ObjecetList" Type

�������

mbinación deectamente le esta clase.tailsView, Fo

ositeDataBon) para creacontrol enla

a los elementoada a datos d

"true" Code

ML 1.0 Trans1 transition

tml">

unat "servererStyle "NonrceID "Objec"377px">

CCC99" />Color "White7DE" />or "#CE5D5A"B696B" Font

l" runat "se

el" runat "s

bel" runat "

el" runat "s

bel" runat "

ctDataSourceeName "Car">

� �� %���

e otros contra clase CompAlgunos ejemormView y Gr

oundControlr la jerarquíazado a datos

os mediante edefinida por un

eFile "eData

sitional//ENnal.dtd">

r" BackColorne" BorderWictDataSource

e" />

" Font BoldBold "True"

erver" Text

server" Text

"server" Tex

server" Text

"server" Tex

e1" runat "s></asp:Objec

��� ���

roles de servpositeDataBmplos de conridView.

deben reema de controles compuesto

el uso de plantna plantilla. E

aList1.aspx.

N"

r "White"idth "1px" Ce1" ForeColo

"True" Fore" ForeColor

'<%# Eval("

t '<%# Eval(

xt '<%# Eval

t '<%# Eval(

xt '<%# Eval

server"ctDataSource

���:���

vidor. LosBoundControntroles enlaz

mplazar el mées. Para teneo, utilice la

tillas. Utilice el control Data

cs"

CellPaddingor "Black"

eColor "Whit"White" />

Vin") %>' /

"Make") %>'

("Model") %

"Year") %>'

("Price") %

e>

�� � �����

�"ol; enzados

étodoer

elaList

"4"

e" />

>

/>

>' />

/>

>' />

www.depurando.com 150

Page 151: ASP .NET Framework 3.5

GridMuescampedita

El concolumlas ca

dViewstra los valorpo y cada filar estos elem

ntrol GridViemna represenaracterísticas

Enlace a c

Funcione

Funcione

Funcione

Funcione

Acceso mpropieda

Varios ca

Varios ca

Personali

res de un oria representamentos.

ew se utilizanta un camps siguientes:

controles de

es de ordenac

es de actualiz

es de paginac

es de selecció

mediante prodes dinámic

mpos de clav

mpos de dat

ización de la

� ����

gen de datosun registro.

para mostrapo y cada fila

e origen de d

ción integrad

zación y elim

ción integrad

ón de fila inte

gramación aamente, con

ve.

tos para las c

apariencia a

�������

s en una tabEl control G

ar los valoresrepresenta

atos, como S

das.

minación integ

das.

egradas.

al modelo dentrolar event

columnas de

a través de te

� �� %���

la donde cadridView perm

s de un origeun registro.

SqlDataSourc

gradas.

e objetos Gridtos, etc.

e hipervínculo

emas y estilo

��� ���

da columna rmite seleccio

en de datos eEl control Gr

ce.

dView para e

o.

os.

���:���

representa uonar, ordena

en una tabla.ridView adm

establecer

�� � �����

�)unar y

. Cadamite

www.depurando.com 151

Page 152: ASP .NET Framework 3.5

El Griobjetconti

idView consitos DataContene la propi

iste en una ctrolField (coledad Cells, q

� ����

colección deumnas) . El oque es una co

�������

objetos Gridobjeto GridVolección de D

� �� %���

dViewRow (fiViewRow herDataControlF

��� ���

ilas) y una coreda de TableFieldCell (cel

���:���

olección deeRow, el cualdas).

�� � �����

�*

al

www.depurando.com 152

Page 153: ASP .NET Framework 3.5

<%@ PInher

<!DOC"http<html<head

<</hea<body

<<<<<

Delet

<<

posit

DataS

Page Languagrits "eGridv

CTYPE html Pp://www.w3.ol xmlns "httd runat "ser<title>Páginad>y><form id "fo<asp:Button<div></div><asp:ObjectD

TypeNameteMethod "De

InsertMe<InsertP

<asp<asp<asp<asp<asp

</Insert</asp:Object<asp:GridVietion: absolu

top: 75pSourceID "Ob

ge "C#" Autoview1" %>

PUBLIC " //Worg/TR/xhtmltp://www.w3.rver">na sin títul

orm1" runatID "Button1

DataSource Ie "CarList"elete"ethod "InserParameters>p:Parameter Np:Parameter Np:Parameter Np:Parameter Np:Parameter NtParameters>tDataSource>ew ID "GridVute;px" AllowPagbjectDataSou

� ����

EventWireup

3C//DTD XHTM1/DTD/xhtml1org/1999/xht

o</title>

"server">" runat "ser

D "ObjectDatSelectMethod

t">

Name "vin" TName "make"Name "model"Name "year"Name "price"

iew1" runat

ing "True" Arce1"

�������

"true" Code

ML 1.0 Trans1 transitiontml">

rver" OnClic

taSource1" rd "Select" U

Type "StringType "Strin

" Type "StriType "Int32

" Type "Deci

"server" St

AutoGenerate

� �� %���

eFile "eGrid

sitional//ENnal.dtd">

ck "Button1

runat "serveUpdateMethod

g" />ng" />ing" />2" />imal" />

tyle "z inde

eColumns "Fa

��� ���

dview1.aspx.

N"

Click" Text

er" DataObjed "Update"

ex: 100; lef

alse"

���:���

cs"

t "Load Car"

ectTypeName

ft: 20px;

�� � �����

/>

"Car"

www.depurando.com 153

Page 154: ASP .NET Framework 3.5

GridL

ShowS

ReadO

/>

Heade

<<

</bod</htm

usingusingusingusingusingusingusingusingusingusingusingusing

publi{

p{

}p{

}}

DetMuesla tabinsert

El contablacombDetai

Width "1Lines "None"

<Columns<asp

SelectButton<asp

Only "True"<asp<asp

<asp<asp

erText "Pric

</as</Column<FooterS<RowStyl<EditRow<Selecte<PagerSt<HeaderS<Alterna

</asp:GridVi</form>dy>ml>

g System; g System.Colg System.Cong System.Datg System.Ling System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Xml

ic partial c

protected vo{

}protected vo{

CarList. GridView

}

tailsViewstra los valorbla representtar registros

ntrol Details, donde cadabinación conilsView adm

Enlace a c

35px" CellP>>

p:CommandFien "True" />p:BoundField/>

p:BoundFieldp:BoundField

p:BoundFieldp:BoundFieldce" HtmlEncoSortExpress<ItemStylep:BoundFiel

ns>tyle BackCoe BackColor

wStyle BackCedRowStyle Btyle BackColtyle BackCo

atingRowStylew>

lections;nfiguration;ta;nq;b;b.Security;b.UI;b.UI.HtmlConb.UI.WebContb.UI.WebCont.Linq;

class eGridv

oid Page Loa

oid Button1

Initialize(w1.DataBind(

wres de un únta un campo.

View se utilia campo delun control Gite las caract

controles de

� ����

adding "4" D

ld ShowDelet

DataField "

DataField "DataField "

DataField "DataField "

de "False"ion "Price">HorizontalAld>

lor "#5D7B9D"#F7F6F3" F

olor "#99999ackColor "#Eor "#284775"lor "#5D7B9De BackColor

trols;rols;rols.WebPart

iew1 : Syste

d(object sen

Click(object

););

ico registro do del registro

iza para mosregistro se mGridView parterísticas sig

e origen de d

�������

DataKeyNames

teButton "Tr

"Vin" Header

"Make" Heade"Model" Head

"Year" Heade"Price" Data

>lign "Right"

D" Font BoldForeColor "#99" />E2DED6" Font" ForeColorD" Font Bold"White" For

ts;

em.Web.UI.Pa

nder, EventA

t sender, Ev

de un origeno. El control D

strar un únicomuestra en ura escenariosuientes:

atos, como S

� �� %���

s "Vin" Fore

rue" ShowEdi

rText "Vin"

erText "MakederText "Mod

erText "YearaFormatStrin

" />

d "True" For#333333" />

t Bold "True"White" Hor

d "True" ForreColor "#28

age

Args e)

ventArgs e)

de datos enDetailsView

o registro deuna fila de las de detalles

SqlDataSourc

��� ���

eColor "#333

itButton "Tr

SortExpress

e" SortExpredel" SortExp

r" SortExpreng "{0:C}"

reColor "Whi

e" ForeColorrizontalAligreColor "Whi84775" />

n una tabla, dpermite edit

e un origen dtabla. Se pu

s maestros. E

ce.

���:���

333"

rue"

ion "Vin"

ession "Makepression "Mo

ession "Year

te" />

r "#333333"gn "Center"te" />

donde cada ftar, eliminar

de datos en uuede utilizar eEl control

�� � �����

��

" />del"

" />

/>/>

fila dee

unaen

www.depurando.com 154

Page 155: ASP .NET Framework 3.5

Camp

Cadadistincontrtipos

Tipocolum

Boun

Butto

Chec

Com

Hype

Imag

Tem

Funcione

Funcione

Funcione

Acceso mpropieda

Personali

pos de fila

fila de datosntos tipos deroles de camde campos d

de campo dmna

ndField

onField

ckBoxField

mandField

erLinkField

geField

plateField

es de inserció

es de actualiz

es de paginac

mediante prodes dinámic

ización del a

s del controle campos depo se derivade fila que se

deDescripc

Muestra

Muestramostrarbotón A

MuestraNormalmcampos

MuestraoperacioDetailsV

Muestrahipervíncampo a

Muestra

MuestraDetailsV

� ����

ón integrada

zación y elim

ción integrad

gramación aamente, con

specto medi

DetailsViewfila determinan de DataCoe pueden ut

ción

a el valor de

a un botón dr una fila conAgregar o Qu

a una casillamente, estecon un valo

a botones deones de edicView.

a el valor denculo. Este tia la dirección

a una imagen

a el contenidView según u

�������

s.

minación integ

das.

al modelo dentrolar event

ante temas y

w se crea decnan el compoontrolField. Lilizar.

un campo d

de comandon un control ditar.

de verificacitipo de camr booleano.

e comandosción, inserció

un campo dpo de campon URL del hip

n en el contr

do definido puna plantilla

� �� %���

gradas.

e objetos Dettos, etc.

y estilos.

clarando un cortamiento dLa siguiente t

e un origen d

en el controde botón pe

ión en el conpo de fila se

integrados qón o eliminac

e un origen do de fila permpervínculo.

rol DetailsVie

por el usuarioespecificada

��� ���

tailsView pa

control de cade las filas entabla contien

de datos com

l DetailsViewrsonalizado,

ntrol DetailsVutiliza para

que permitención en el co

de datos commite enlazar

ew.

o para una fia. Este tipo d

���:���

ra establece

ampo. Losn el control.ne los diferen

mo texto.

w. Esto permtal como un

View.mostrar

n realizarntrol

mo unun segundo

ila del controde campo de

�� � �����

��

r

Losntes

miten

o

ol

www.depurando.com 155

Page 156: ASP .NET Framework 3.5

De mpermtipo eGuidfila, e

Prop

Alter

Com

EditR

Emp

Foot

Head

Inser

Page

Row

Field

manera predemite generar aenlazable dey el conjuntoen el orden e

piedad de est

rnatingRowS

mandRowSt

RowStyle

tyDataRowS

terStyle

derStyle

rtRowStyle

erStyle

wStyle

dHeaderStyle

fila perm

eterminada,automáticaml origen de do de tipos pren el que cad

tilo Descri

Style ConfigDetailsmuestde Alte

tyle Configcoman

ConfigDetails

Style Configcontro

ConfigDetails

ConfigDetails

ConfigDetails

ConfigDetails

ConfigCuandfilas dela conf

e Config

� ����

mite crear un

la propiedadmente un objdatos. Los tiprimitivos. Cada uno apare

pción

uración de esView. Cuanran alternanernatingRow

uración de endo integrad

uración de esView está e

uración de eol DetailsView

uración de esView.

uración de esView.

uración de esView está e

uración de esView.

uración de eo también see datos se mfiguración de

uración de e

�������

n campo de f

d AutoGenerjeto de camppos enlazableda campo seece en el orig

estilo de las fdo se establndo la configuwStyle.

estilo de la fios en el con

estilo de las fen modo de e

estilo de la fiw cuando el

estilo de la fi

estilo de la fi

estilo de las fen modo de i

estilo de la fi

estilo de las fe estableceuestran altee Alternating

estilo de la co

� �� %���

fila personal

ateRows se epo de fila enes válidos soe muestra engen de datos

filas de datosece esta prouración de R

la que contietrol DetailsV

filas de datosedición.

la de datos vorigen de da

la del pie de

la del encabe

filas de datosinserción.

la del localiz

filas de datosa propiedadrnando la cogRowStyle.

olumna del e

��� ���

izado.

establece enlazado paran String, Datntonces como.

s alternas deopiedad, las fRowStyle y la

ene los botoView.

s cuando el c

vacía que seatos no cont

página del c

ezado del co

s cuando el c

ador del con

s del controlAlternating

onfiguración

encabezado d

���:���

n true, lo cuacada campoteTime, Decio texto en un

el controlfilas de datoconfiguració

nes de

control

muestra entiene registro

control

ontrol

control

ntrol

DetailsViewgRowStyle, lade RowStyle

del control

�� � �����

��

aldemal,na

s seón

elos.

w.ase y

www.depurando.com 156

Page 157: ASP .NET Framework 3.5

Event

El conmanesiguieDetaiDispo

Even

Item

Item

Item

Item

Item

Item

Item

Item

tos

ntrol Detailsera, se puedeente tabla seilsView tambosed, Init, Lo

nto

mCommand

mCreated

mDeleted

mDeleting

mInserted

mInserting

mUpdated

mUpdating

Details

View propore ejecutar une enumeranbién heredaad, PreRend

Descrip

Se prod

Se prodDetailsVpara mo

Se prodcontroleventoelimina

Se prodcontrolevento

Se prodcontrolpara co

Se prodcontrolpara ca

Se prodel contrpara co

Se prodcontrolpara ca

� ����

sView.

rciona variosna rutina perlos eventos aestos eventoer y Render.

pción

duce cuando

duce despuésViewRow enodificar los v

duce al hacerDetailsViewsuele utilización.

duce al hacerDetailsViewsuele utiliza

duce al hacerDetailsView

omprobar los

duce al hacerDetailsViewncelar la ope

duce al hacerrol DetailsViomprobar los

duce al hacerDetailsViewncelar la ope

�������

s eventos qursonalizada sadmitidos poos de sus cla.

se hace clic

s de haber cel control D

valores de un

r clic en un bw elimine el rrse para com

r clic en un bw elimine el rrse para can

r clic en un bw inserte el rs resultados d

r clic en un bw inserte el reración de in

r clic en un bew actualices resultados d

r clic en un bw actualice eeración de a

� �� %���

e puede utilsiempre queor el controlses base: Da

en un botón

reado todosDetailsView.n registro an

botón Eliminaregistro del omprobar el re

botón Eliminaregistro del oncelar la oper

botón Insertaegistro. Estede la operac

botón Insertaegistro. Estenserción.

botón Actualie la fila. Estede la operac

botón Actualil registro. Esctualización.

��� ���

izar para prose produzcaDetailsViewataBinding, D

n del control

los objetosEste eventotes de mostr

ar, pero desporigen de datesultado de l

ar, pero anteorigen de datración de eli

ar, pero despe evento suelción de inserc

ar, pero antee evento suel

izar, pero deevento suel

ción de actua

izar, pero ante evento su.

���:���

ogramar. Dea un evento.w. El controlDataBound,

DetailsView

suele utilizararlo.

pués de quetos. Estela operación

es de que eltos. Esteminación.

pués de quele utilizarseción.

es de que elle utilizarse

espués de que utilizarsealización.

ntes de que euele utilizarse

�� � �����

��

estaEn la

w.

rse

el

de

el

ue

ele

www.depurando.com 157

Page 158: ASP .NET Framework 3.5

Mod

Mod

Page

Page

deChanged

deChanging

eIndexChang

eIndexChang

Se prod(modomenudode mod

Se prod(ediciónpara ca

ged Se prodpero dede pagrealizarregistro

ging Se prodpero anpaginacpaginac

� ����

duce despuésde edición, io para realizdo.

duce antes den, inserción oncelar un ca

duce cuandoespués de qunación. Normr una tarea do del control

duce cuandontes de que eción. Este evción.

�������

s de que el cnserción o szar una tarea

e que el cono sólo lecturmbio del mo

se hace clicue el controlmalmente esespués de q.

se hace clicel control Deento suele u

� �� %���

control Detaiólo lectura).a cuando el c

trol DetailsVa). Este evenodo.

en uno de loDetailsViewste evento seue el usuario

en uno de loetailsView seutilizarse para

��� ���

ilsView cambEste evento

control Detai

View cambiento se utiliza

os botones dw se ocupe dee utiliza cuano se desplace

os botones de ocupe de laa cancelar la

���:���

bie de modoo se utiliza ailsView camb

de modoa menudo

de paginacióe la operacióndo se necese a otro

de paginacióa operación doperación d

�� � �����

��o

bia

n,ónsita

n,dede

www.depurando.com 158

Page 159: ASP .NET Framework 3.5

<%@ PInher

<!DOC"http<html<head

<</hea<body

<<

DataO

Delet

Page Languagrits "eDatai

CTYPE html Pp://www.w3.ol xmlns "httd runat "ser<title>Páginad>y><form id "fo<div>

<asp:ObjObjectTypeNa

TypeteMethod "De

Inse

ge "C#" AutolsView1" %>

PUBLIC " //Worg/TR/xhtmltp://www.w3.rver">na sin títul

orm1" runat

ectDataSourame "Car"eName "CarLielete"ertMethod "I

� ����

EventWireup

3C//DTD XHTM1/DTD/xhtml1org/1999/xht

o</title>

"server">

ce ID "Objec

st" SelectMe

nsert"></asp

�������

"true" Code

ML 1.0 Trans1 transitiontml">

ctDataSource

ethod "Selec

p:ObjectData

� �� %���

eFile "eData

sitional//ENnal.dtd">

e1" runat "s

ct" UpdateMe

aSource>

��� ���

ailsView1.as

N"

server"

ethod "Updat

���:���

px.cs"

te"

�� � �����

�!

www.depurando.com 159

Page 160: ASP .NET Framework 3.5

/>

CellP

Heigh

Width

/>

ReadO

/>

SortE

/>

SortE

ShowI

<<

</bod</htm

usingusingusingusingusingusingusingusing

publi{

p{

}p{

}}

ForMuesdefin

El concontr

<asp:But

<asp:DetPadding "4"

Dataht "50px"

Stylh "305px"

Auto<Foo<Com<Edi<Row<Pag

<Fie

Only "True"

Expression "

Expression "

InsertButton</Fi<Fie<Hea<Alt

</asp:De</div></form>dy>ml>

g System.Ling System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Xml

ic partial c

protected vo{

}protected vo{

CarList. DetailsV

}

mViewstra los valoridas por el u

ntrol FormVirol DetailsVie

tton ID "But

tailsView ID

aSourceID "Ob

e "z index:

oGenerateRowoterStyle BammandRowStyltRowStyle B

wStyle BackCgerStyle Bac

elds><asp:BoundF/><asp:BoundF

<asp:BoundFModel" /><asp:BoundF

<asp:BoundFPrice" Data

HtmlEnc<ItemSt

</asp:Bound<asp:Comman

n "True" />elds>

eldHeaderStyaderStyle BaternatingRowetailsView>

nq;b;b.Security;b.UI;b.UI.HtmlConb.UI.WebContb.UI.WebCont.Linq;

class eDatai

oid Page Loa

oid Button1

Initialize(View1.DataBi

res de un regusuario. El co

iew permiteew, exceptua

� ����

ton1" runat

"DetailsVie

bjectDataSou

103; left:

s "False" DackColor "#5De BackColorackColor "#9olor "#F7F6FkColor "#284

ield DataFie

ield DataFie

ield DataFie

ield DataFie

ield DataFieFormatStringode "False">yle HorizontField>dField ShowD

le BackColorckColor "#5DStyle BackCo

trols;rols;rols.WebPart

lsView1 : Sy

d(object sen

Click(object

);nd();

gistro individontrol FormV

mostrar unando que mu

�������

"server" On

ew1" runat "

urce1" ForeC

20px; posit

ataKeyNamesD7B9D" Font"#E2DED6" F

999999" />F3" ForeColo4775" ForeCo

eld "Vin" He

eld "Make" H

eld "Model"

eld "Year" H

eld "Price"g "{0:C}">talAlign "Ri

DeleteButton

r "#E9ECF1"D7B9D" Fontolor "White"

ts;

ystem.Web.UI

nder, EventA

t sender, Ev

dual de un orView permite

registro indiuestra planti

� �� %���

nClick "Butt

"server" All

Color "#3333

tion: absolu

"Vin">Bold "True"

Font Bold "T

or "#333333"olor "White"

eaderText "V

HeaderText "

HeaderText

HeaderText "

HeaderText

ight" />

n "True" Sho

Font Bold "Bold "True"

" ForeColor

I.Page

Args e)

ventArgs e)

rigen de datoe editar, elim

vidual de unllas definida

��� ���

ton1 Click"

lowPaging "T

333" GridLin

ute; top: 85

" ForeColorTrue" />

" />" Horizontal

Vin" SortExp

"Make" SortE

"Model"

"Year" SortE

"Price"

owEditButton

"True" />" ForeColor"#284775" /

os utilizandominar e insert

n origen de ds por el usua

���:���

Text "Load

True"

nes "None"

px"

"White" />

Align "Cent

pression "Vi

Expression "

Expression "

n "True"

"White" />>

plantillastar registros.

atos. Es simario, en lugar

�� � �����

�"

Cars"

er"

n"

Make"

Year"

.

ilar alr de

www.depurando.com 160

Page 161: ASP .NET Framework 3.5

campmues

pos de fila. Cstran los dato

Enlace a l

Funcione

Funcione

Funcione

Acceso mdinámica

Aspecto pusuario.

rear sus propos. El contro

los controles

es de inserció

es de actualiz

es de paginac

mediante promente prop

personalizab

� ����

pias plantillaol FormView

s de origen d

ón integrada

zación y elim

ción integrad

gramación aiedades, con

ble por medio

�������

as le ofrece madmite las c

de datos, com

s.

minación integ

das.

al modelo dentrolar event

o de plantilla

� �� %���

más flexibilidcaracterística

mo SqlDataSo

gradas.

e objetos Fortos, etc.

as, temas y e

��� ���

ad para contas siguientes

ource y Obje

rmView para

estilos definid

���:���

trolar cómo:

ectDataSourc

a establecer

dos por el

�� � �����

�)se

ce.

www.depurando.com 161

Page 162: ASP .NET Framework 3.5

<%@ PInher

<!DOC"http<html<head

<</hea<body

<<

Page Languagrits "eFormV

CTYPE html Pp://www.w3.ol xmlns "httd runat "ser<title>Páginad>y><form id "fo<div>

ge "C#" AutoView1" %>

PUBLIC " //Worg/TR/xhtmltp://www.w3.rver">na sin títul

orm1" runat

� ����

EventWireup

3C//DTD XHTM1/DTD/xhtml1org/1999/xht

o</title>

"server">

�������

"true" Code

ML 1.0 Trans1 transitiontml">

� �� %���

eFile "eForm

sitional//ENnal.dtd">

��� ���

mView1.aspx.

N"

���:���

cs"

�� � �����

�*

www.depurando.com 162

Page 163: ASP .NET Framework 3.5

DataO

Delet

/><<

Eval(

blue"

Eval(

blue"

Text

blue"

Eval(

blue"

Text

Cause

Cause

Cause

Eval(

blue"

Text

<asp:ObjObjectTypeNa

TypeteMethod "De

Inse<br /><br /><br />&nbsp; &<asp:But

</div><asp:FormVie

DataSour<ItemTem

<tab

("Vin") %>'>

">Make:</spa

("Make") %>'

">Model:</sp

'<%# Eval("

">Year:</spa

("Year") %>'

">Price: </s

'<%# Eval("

esValidation

esValidation

esValidation

</ta</ItemTe<EditIte

<tab

("Vin") %>'>

">Make:</spa

'<%# Bind("

ectDataSourame "Car"eName "CarLielete"ertMethod "I

nbsp; &nbsptton ID "But

ew ID "FormVrceID "Objecmplate>ble><tr>

<td ali<hr<sp<asp

></a

an>&nbsp;<asp

></a

pan>&nbsp;<asp

Model") %>'</a

an>&nbsp;<asp

></a

</td></tr><tr>

<td ali<sp

pan><span

Price","{0:

</td></tr><tr>

<td ali<hr<asp

n "False" Com

<aspn "False" Com

</a<asp

n "False" Com

</a</td>

</tr>able>emplate>emTemplate>ble><tr>

<td ali<hr<sp<asp

></a

an>&nbsp;<asp

Make") %>'>

� ����

ce ID "Objec

st" SelectMe

nsert"></asp

; &nbsp;ton1" runat

iew1" runattDataSource1

gn "center">/>

an style "fop:Label ID "

sp:Label>&nb

p:Label ID "

sp:Label>&nb

p:Label ID ">sp:Label>&nb

p:Label ID "

sp:Label><br

gn "center">an style "fo

style "font<asp:Label

C}") %>'></asp:Label

gn "center">/>

p:LinkButtonmmandName "EText "Edit"

p:LinkButtonmmandName "NText "New">

sp:LinkButtop:LinkButtonmmandName "DText "Delet

sp:LinkButto

gn "center">/>

an style "fop:Label ID "

sp:Label>&nb

p:TextBox ID

�������

ctDataSource

ethod "Selec

p:ObjectData

"server" On

"server" Al1" Width "10

>

ont weight:"VinLabel" W

bsp;&nbsp; <

"MakeLabel"

bsp;&nbsp; <

"ModelLabel"

bsp;&nbsp; <

"YearLabel"

r />

>ont weight:

t weight: boID "PriceLa

l></span>

>

n ID "LinkBuEdit""> </asp:Linn ID "LinkBuNew">on>n ID "LinkBuDelete"te">on>

>

ont weight:"VinLabel" W

bsp;&nbsp; <

D "EditMakeT

� �� %���

e1" runat "s

ct" UpdateMe

aSource>

nClick "Butt

llowPaging "00%">

bold; colorWidth "105px

<span style

Width "105p

<span style

" Width "105

<span style

Width "105p

bold; font

old; font siabel" Width

utton1" runa

nkButton>utton2" runa

utton3" runa

bold; colorWidth "105px

<span style

TextBox" Wid

��� ���

server"

ethod "Updat

ton1 Click"

"True" DataK

r: blue">VINx" runat "se

"font weigh

px" runat "s

"font weigh

5px" runat "

"font weigh

px" runat "s

size: x lar

ize: x large"105px" run

at "server"

at "server"

at "server"

r: blue">VINx" runat "se

"font weigh

dth "100px"

���:���

te"

Text "Load

KeyNames "Vi

N:</span>&nberver" Text

ht: bold; co

erver" Text

ht: bold; co

server"

ht: bold; co

erver" Text

rge; color:

e">&nbsp;nat "server"

N:</span>&nberver" Text

ht: bold; co

runat "serv

�� � �����

Cars"

n"

sp;'<%#

lor:

'<%#

lor:

lor:

'<%#

sp;'<%#

lor:

er"

www.depurando.com 163

Page 164: ASP .NET Framework 3.5

color

Text

color

Text

blue"

runat

Cause

Cause

blue"

Cause

Text

Text

runat

Text

r: blue">Mod

'<%# Bind("

r: blue">Yea

'<%# Bind("

">Price: </s

t "server" T

esValidation

esValidation

</ta</EditIt<EmptyDa

<tab

">No Cars Fo

esValidation

</ta</EmptyD<InsertI

<tab

'<%# Bind("

'<%# Bind("

t "server" T

'<%# Bind("

</adel:</span>&

<aspModel") %>'

</aar:</span>&nb

<aspYear") %>'>

</a&nb

</td></tr><tr>

<td ali<sp

pan><span

Text '<%# Bi

</td></tr><tr>

<td ali<hr<asp

n "True" Comm

</a<asp

n "False" Com

</a</td>

</tr>able>temTemplate>ataTemplate>ble width "6<tr>

<td ali<hr<sp

or Sale

<tr

n "False" Com

</table>DataTemplatetemTemplate

ble><tr>

<td ali<hr<sp<asp

Vin") %>'><sp<asp

Make") %>'><sp<asp

Text '<%# Bi<sp<asp

Year") %>'>&nb

</td></tr><tr>

� ����

sp:TextBox>&nbsp;p:TextBox ID>sp:TextBox>&bsp;p:TextBox ID

sp:TextBox><sp;&nbsp;

gn "center">an style "fo

style "font<asp:TextBo

nd("Price")</asp:TextB

gn "center">/>

p:LinkButtonmandName "UpText "Updat

sp:LinkButtop:LinkButtonmmandName "CText "Cance

sp:LinkButto

55px">

gn "center">/>

an style "fo

Chack Back ><td align "

<hr /><asp:Li

mmandName "NTex

</asp:L</td>

r>

>>

gn "center">/>

an style "fop:TextBox ID</asp:TextBoan style "fop:TextBox ID</asp:TextB

an style "fop:TextBox IDnd("Model")an style "fop:TextBox ID</asp:TextB

sp;&nbsp;

�������

&nbsp;&nbsp;

D "EditModel

&nbsp;&nbsp;

D "EditYearT

<br />

>ont weight:

t weight: boox ID "EditP%>'>

Box></span>

>

n ID "LinkBupdate"te">on>n ID "LinkBuCancel"el">on>

>

ont weight:

Soon! </spa

"center">

inkButton IDNew"xt "New">LinkButton>

>

ont weight:D "InsertVinox>&nbsp;&nbont weight:D "InsertMakBox>&nbsp;&nont weight:D "InsertMod%>'> </asp:

ont weight:D "InsertYeaBox><br />

� �� %���

; <span styl

lTextBox" Wi

; <span styl

TextBox" Wid

bold; font

old; font siPriceTextBox

utton1" runa

utton2" runa

bold; font

an>

D "LinkButto

bold; colornTextBox" Wibsp;bold; color

keTextBox" Wnbsp;bold; color

delTextBox":TextBox>&nbbold; color

arTextBox" W

��� ���

le "font wei

idth "100px"

le "font wei

dth "100px"

size: large

ize: large">x" Width "10

at "server"

at "server"

size: x lar

on2" runat "

r: blue">VINidth "100px"

r: blue">MakWidth "100px

r: blue">ModWidth "100p

bsp;&nbsp;r: blue">YeaWidth "100px

���:���

ght: bold;

runat "ser

ght: bold;

runat "serv

e; color:

>&nbsp;0px"

rge; color:

server"

N:</span>&nbrunat "ser

ke:</span>&nx" runat "se

del:</span>&px"

ar:</span>&nx" runat "se

�� � �����

��ver"

er"

sp;ver"

bsp;rver"

nbsp;

bsp;rver"

www.depurando.com 164

Page 165: ASP .NET Framework 3.5

blue"

runat

Cause

Cause

blue"

<&<

</bod</htmusingusingusingusingusingusingusingusingusingusingusingusing

publi{

p{

}p{

}}

HieActúaque m

">Price: </s

t "server" T

esValidation

esValidation

</ta</Insert<HeaderT

<tab

">Car For Sa

</Header<FooterT

</td</Footer

</asp:FormVi&nbsp;&nbsp;</form>dy>ml>g System; g System.Colg System.Cong System.Datg System.Ling System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Xml

ic partial c

protected vo{

}protected vo{

CarList. FormView

}

rarchicala como clasemuestran sus

<td ali<sp

pan><span

Text '<%# Bi</td>

</tr><tr>

<td ali<hr<asp

n "True" Comm

<aspn "False" Com

</a</td>

</tr>able>tItemTemplatTemplate>ble><tr>

<td ali<sp

ale</span></td>

</tr><tr>

<td>rTemplate>Template>d></tr></tabrTemplate>ew>&nbsp;&nbsp

lections;nfiguration;ta;nq;b;b.Security;b.UI;b.UI.HtmlConb.UI.WebContb.UI.WebCont.Linq;

class eFormV

oid Page Loa

oid Button1

Initialize(w1.DataBind(

lDataBoue base para ts datos con u

� ����

gn "center">an style "fo

style "font<asp:TextBo

nd("Price")

gn "center">/>

p:LinkButtonmandName "InText "Inser

p:LinkButtonmmandName "CText "Cance

sp:LinkButto

e>

gn "center">an style "fo

le>

;&nbsp;<br /

trols;rols;rols.WebPart

iew1 : Syste

d(object sen

Click(object

););

undControdos los conun formato j

�������

>ont weight:

t weight: boox ID "Inser%>'></asp:T

>

n ID "LinkBunsert"rt"> </asp:Ln ID "LinkBuCancel"el">on>

>ont weight:

/>

ts;

em.Web.UI.Pa

nder, EventA

t sender, Ev

rolntroles enlazerárquico.

� �� %���

bold; font

old; font sirtPriceTextBTextBox></sp

utton1" runa

LinkButton>utton2" runa

bold; font

age

Args e)

ventArgs e)

ados a datos

��� ���

size: large

ize: large">Box" Width "pan>

at "server"

at "server"

size: x lar

s de la versió

���:���

e; color:

>&nbsp;100px"

rge; color:

ón 2.0 de ASP

�� � �����

��

P.NET

www.depurando.com 165

Page 166: ASP .NET Framework 3.5

Hiera

recup

de us

Hiera

Los de

lugar,

TreMuescontro un

Nodo

El conrepre

archicalDataB

eran datos de

uario del cont

archicalDataB

esarrolladores

, usan control

eViewstra datos jerol TreeViewdirectorio de

Enlace derelaciona

Navegaci

Texto de

Acceso mrellenar n

Relleno d

La capaci

Aspecto p

os

ntrol TreeVieesentado por

Un nodo

BoundContro

e un control de

trol a dichos d

BoundContro

s de páginas n

es que deriva

rárquicos, cow se utiliza pae archivos, e

e datos que pales.

ón del sitio m

nodo que se

mediante pronodos, estab

de nodos del

dad para mo

personalizab

ew se compor un objeto T

que contien

� ����

ol es la clase

el origen de d

datos para mo

ol.

no utilizan dire

n de esta clas

omo una tabara mostrar dn una estruc

permite enla

mediante la

e puede mos

gramación alecer propie

lado cliente

ostrar una ca

ble por medio

one de nodoTreeNode. Lo

e otros nodo

�������

base que se u

atos jerárquic

ostrarlos. Las c

ectamente la

se.

bla de contendatos jerárqctura de árbo

azar los nodo

integración c

strar como te

al modelo dedades, etc.,

(en explora

asilla al lado

o temas, imá

os. Cada entros tipos de n

os se denom

� �� %���

utiliza para los

co ASP.NET y

clases TreeVie

clase Hierarc

nido, en unauicos, tales col y admite la

os del contro

con el contro

exto sin form

e objetos Trede forma din

dores compa

de cada nod

ágenes defin

ada del árboodo se defin

ina un nodo

��� ���

s controles AS

enlazan elem

ew y Menu se

chicalDataBo

estructura dcomo una taas siguientes

ol a datos XM

ol SiteMapDa

mato o hiperv

eView paranámica.

atibles).

o.

idas por el u

ol se denominen como sig

primario.

���:���

SP.NET que

entos de inte

derivan de

oundControl;

de árbol. Elbla de contes característi

ML, tabulares

ataSource.

vínculos.

crear árbole

usuario y esti

na nodo y esgue:

�� � �����

��rfaz

; en su

enidocas:

o

es,

los.

stá

www.depurando.com 166

Page 167: ASP .NET Framework 3.5

Un noprimalos no

Aunqagregelem

Cadamuescualqdevo

Un nomanenavegvacíanodo

Dato

El modatosy cierestruapertun obatribu<asp:prima

Enlac

El conde or

El nodo c

Un nodo

El nodo qlos demá

odo puede sarios y de hoodos vienen

que una estrugar varios noentos sin mo

nodo tienestra en el conquier informalución de da

odo puede eera predetergación, estab(""). Para po

o en una cade

s estáticos

odelo de datos estáticos mrre entre lasctura de árbtura y cierre.bjeto TreeNoutos de su el:TreeNode>ario.

ce a datos

ntrol TreeVierigen de dato

El controimplemencontrol Spropiedafuente dede datos

contenido en

que no tiene

que no está cs nodos es e

er un elemeoja son mutudeterminad

uctura de árbodos raíz a laostrar un nod

una propiedntrol TreeVieación adiciontos asociado

estar en unominada, un nblezca la prooner un nodoena vacía (""

os más simpmediante sintetiquetas debol anidando. Cada elemeode. Puede elemento <asadicionales

ew tambiénos adecuado,

l TreeView pnta la interfaiteMapDataSd DataSource datos. El coespecificado

� ����

n otro nodo s

e nodos deri

contenido enel nodo raíz.

nto primarioamente exclas por si un

bol típica tieestructura ddo raíz único

ad Text y unew, mientrasnal sobre el no al nodo.

de dos modonodo está enopiedad Navio en modo d).

le del controtaxis declarate apertura ylos element

ento <asp:Trestablecer lasp:TreeNodeentre las etiq

se puede en, puede utiliz

puede utilizaaz IHierarchicSource. ParaceID del contontrol TreeVo. Éste es el m

�������

se denomina

vados se den

n ningún otro

o y un elemelusivos. Varianodo es raíz,

ne sólo unode árbol. Estoo, como en u

a propiedads que la propnodo, tal com

os: modo den modo de segateUrl del nde selección,

ol TreeViewtiva, primerocierre del cotos <asp:TreeeNode> res propiedadee>. Para creaquetas <asp

nlazar a datoszar uno cual

r cualquier ccalDataSoura enlazar a untrol TreeViewiew se enlazmétodo reco

� �� %���

nodo secun

nomina nodo

o nodo pero

nto secundaas propiedad, primario o

nodo raíz, elo es útil cuanna lista de ca

Value. El vapiedad Valuemo los datos

e selección oelección. Parnodo en un vestablezca l

es el de datoo coloque etontrol TreeVieNode> entrpresenta unes de cada nor nodos secu:TreeNode>

s. Para enlazquiera de los

control de orce, como unn control dew en el valorza automáticomendado pa

��� ���

dario.

o de hoja.

es el nodo p

ario, pero losdes visuales yde hoja.

l control Trendo se deseaategorías de

lor de la proe se utiliza paque se pasa

modo de nara poner un nvalor distintoa propiedad

os estáticos.iquetas <Noiew. A continre las etiquetnodo del árbodo establecundarios, anide apertura

zar el controls dos métod

rigen de datocontrol Xmlorigen de dar ID del contramente al coara el enlace

���:���

primario de t

s nodos raíz,y conductua

eView perma mostrar liste productos.

opiedad Textara almacenaan al evento

avegación. Denodo en modo de una cadNavigateUr

Para mostrades> de apenuación, cretas <Nodes>bol y se asignciendo losde elementoy cierre del

l TreeView aos siguiente

os queDataSourceatos, establerol de códigoontrol de orie a datos.

�� � �����

��

odos

les de

mitetas de

searde

edo deenal del

arrturae la> dena a

osnodo

al tipos:

o unezca laogen

www.depurando.com 167

Page 168: ASP .NET Framework 3.5

Al en(comvalorel noperoelemDataBrelacdel emás i

Pobla

En ocdatosobtenrellennododinámpara

Los epartidpostecontrlos usobtenPopu

Perso

Existepuedlos tip

Si utiestilopodríhojas

La tab

El controDataSet cpropiedallame al m

lazar a un oro un elemendevuelto podo muestrano es muy úento de datoBindings. Laión entre unnlace y la proinformación

ación de nod

casiones, nos devuelve dnida en tiemnen de formao en true, el nmicamente urellenar un n

xploradoresdo del llenaderiores y algurol TreeViewsuarios expaner más infolateNodesFr

onalización d

en muchas me especificarpos de nodo

liza hojas deos en línea oían producirs de estilos c

bla siguiente

l TreeView tcon relacioned DataSourcmétodo Data

rigen de datonto XML conor el métodoel nombre dútil en otro seos especificacolección Daelemento dopiedad delsobre enlace

do dinámica

es práctico demasiados dpo de ejecuca dinámica. Cnodo se relleun nodo, debnodo para el

compatiblesdo de nodosunos otros exw para rellenanden el nodrmación sobromClient.

de la interfaz

maneras de pr un estilo di.

e estilos en caun archivo Cresultados ion controles

e enumera lo

� ����

también se pes. Para enlace del controaBind.

os donde cadvarios atribu

o ToString deel elemento,entido. Puedndo los enlaataBindings ce datos y elelemento dees de nodos

definir estátidatos o porqución. DebidoCuando se esena en tiempbe definir unevento Tree

s con los scrien el clientexploradores.ar un nodo mo, sin necesibre el relleno

z de usuario

personalizarferente (por

ascada (CSS)CSS independnesperados.s, vea Contro

os estilos de

�������

puede enlazaazar a uno deol TreeView e

da elementoutos), un nodel elemento d, el cual indicde enlazar unaces del nodocontiene objnodo al quee datos que sde árbol, ve

icamente laue los datoso a esto, el costablece la ppo de ejecucimétodo deeNodePopula

ipts de devoe. (Se incluye.) El relleno dmediante secdad de una ao de nodos e

el aspecto dr ejemplo, ta

para persondiente, peroPara obtene

oles de servid

nodo dispon

� �� %���

r a un objetoe estos orígeen el origen d

de datos codo muestra dde datos. Enca la estructn nodo a unao del árbol metos TreeNose enlaza. Pse va a mosta TreeNodeB

estructura da mostrar deontrol TreeVpropiedad Poión cuando scontrol de evate.

lución de llamen Internet Exde nodos delcuencias de cacción de idan el cliente, v

el control Trmaño y colo

nalizar la apano ambos. Ser más informdor Web ASP

nibles.

��� ���

o XmlDocumnes de datosde datos y, a

ontiene variade manera pel caso de uura subyacena determinadmediante la codeBinding quede especiftrar en el nodBinding.

el árbol porqependen de

View admite qopulateOnDese expande.ventos que c

mada tambiéxplorer 5.5 yl lado clientecomandos dea y vuelta alvea

reeView. Enor de fuente)

ariencia del cSi se utilizanmación sobreP.NET y estilo

���:���

ment o un objs, establezcaa continuació

s propiedaderedeterminan elementonte del árboda propiedadcolecciónque definenficar los critedo. Para obte

que el origenla informacique los nodoemand de unPara rellenarcontenga la l

én pueden sy versionese habilita ele cliente cuaservidor. Pa

primer lugarpara cada u

control, utilicambos, see cómo utilizos de CSS.

�� � �����

��jetoa laón,

esada elXML,l,d del

laeriosener

n deónos senrlógica

acar

andora

r,no de

ce

zar

www.depurando.com 168

Page 169: ASP .NET Framework 3.5

Propnodo

Hove

LeafN

Node

Pare

Root

Selec

Otramuesimágela tab

Propimag

Colla

Expa

LineI

NoEx

El conShowcasilla

Event

piedad de esto

erNodeStyle

NodeStyle

eStyle

entNodeStyle

tNodeStyle

ctedNodeSty

manera de mstran en el coenes para labla siguiente

piedad degen

apseImageUr

andImageUrl

ImagesFolde

xpandImage

ntrol TreeViewCheckBoxesas junto a lo

tos

tilo deD

Cm

L

L

e L

L

yle L

modificar el aontrol TreeVs diferentes.

Descrip

rl La direcontraí

La direexpans

er La direutilizadLa propsurta e

Url La direexpans

ew tambiéns se establecs tipos de no

� ����

Descripción

Configuraciónmouse se colo

a configurac

a configurac

a configurac

a configurac

a configurac

aspecto del cView. Puedepartes del co

pción

cción URL aíble. Esta ima

cción URL asible. Esta im

cción URL adas para conepiedad Showfecto.

cción URL asible.

permite mose en un valoodo especific

�������

n de estilo paoca sobre él

ción de estilo

ción de estilo

ción de estilo

ción de estilo

ción de estilo

control es laespecificar sontrol estab

una imagenagen normal

una imagenmagen norma

la carpeta quectar los nod

wLines debe e

una imagen

strar una casr distinto decados.

� �� %���

ara un nodo.

o para los nod

o predetermi

o para los nod

o para el nod

o para un nod

personalizacsu propio conleciendo las

mostrada palmente es un

mostrada paalmente es u

ue contienedos primarioestablecerse

mostrada pa

silla junto a uTreeNodeTy

��� ���

cuando el p

dos de hoja.

inada para u

dos primario

o raíz.

do seleccion

ción de las imnjunto persopropiedades

ara el indicadn signo meno

ara el indicadn signo más

las imágenesos a los nodotambién en

ara el indicad

un nodo. Cuaypes.None,

���:���

untero del

n nodo.

os.

ado.

mágenes queonalizada des que aparec

dor de nodoos (�).

dor de nodo(+

s de líneas secundariotrue para qu

dor de nodo

ando la propse muestran

�� � �����

�!

e se

cen en

os.ue

no

piedadn

www.depurando.com 169

Page 170: ASP .NET Framework 3.5

El conmanesiguie

Even

Tree

Selec

Tree

Tree

Tree

Tree

<?xml<Custo <Cus <O

ntrol TreeVieera, se puedeente tabla se

nto

NodeCheckC

ctedNodeCh

NodeExpand

NodeCollaps

NodePopula

NodeDataBo

version="1.0omers>stomer CustomeOrders><Order Order <OrderItem <OrderIte

PartDescPrice="2

<OrderItePartDescPrice="1

</OrderItem</Order><Order Order <OrderItem <OrderIte

PartDescPrice="8

<OrderItePartDesc

ew proporcioe ejecutar une enumeran

De

Changed Seen

anged Se

ded Se

sed Se

ate Apes

ound Seco

" encoding="u

erId="1" Name

Id="1" ShipDas>em OrderItemIription="Larg2.00" /> em OrderItemIription="Medi2.50" /> ms>

Id="2" ShipDas>em OrderItemIription="Smal.99" /> em OrderItemIription="Medi

� ����

ona varios evna rutina perlos eventos a

escripción

e produce cuntre cada env

e produce cu

e produce cu

e produce cu

parece cuandtablecida en

e produce cuontrol TreeVi

tf 8" ?>

="Northwind T

te="06 22 200

d="1" PartNumge Widget" Qua

d="2" PartNumum Widget" Qu

te="06 25 200

d="5" PartNuml Widget" Qua

d="4" PartNumum Widget" Qu

�������

ventos que prsonalizada sadmitidos po

ando las casvío al servido

ando se sele

ando se expa

ando se cont

do un nodo cn true se exp

ando un elemiew.

Traders">

06">

mber="123"antity="5"

mber="234"uantity="2"

06">

mber="432"antity="30"

mber="234"uantity="2"

� �� %���

puede utilizasiempre queor el control

illas del contor.

ecciona un no

ande un nod

trae un nodo

con su propieande en el c

mento de da

��� ���

ar para progrse produzcaTreeView.

trol TreeView

odo en el con

do en el cont

o en el contr

edad Populaontrol TreeV

atos se enlaz

���:���

ramar. De esta un evento.

w cambian

ntrol TreeVi

trol TreeView

rol TreeView

teOnDemanView.

a a un nodo

�� � �����

�"taEn la

ew.

w.

w.

nd

del

www.depurando.com 170

Page 171: ASP .NET Framework 3.5

</ <I

</ </Cu <Cus <O

Price=

Price=

Price=

Price=

</ <I

</ </Cu</Cust

<%@ PInher

<!DOC"http<html<head

<</hea<body

<<

DataF

ShowL

Value

Value

Value

Value

<<

</bod</htm

usingusingusingusingusingusingusingusingusing

Price="1 </OrderItem</Order>/Orders>Invoices><Invoice Invo<Invoice Invo/Invoices>ustomer>stomer CustomeOrders><Order Order <OrderItem <OrderIte="87.25" /> <OrderIte="2.00" /> </OrderItem</Order><Order Order <OrderItem <OrderIte="78.99" /> <OrderIte="1.20" /> </OrderItem</Order>/Orders>Invoices><Invoice Invo<Invoice Invo/Invoices>ustomer>tomers>

Page Languagrits "eTreeV

CTYPE html Pp://www.w3.ol xmlns "httd runat "ser<title>Páginad>y><form id "fo<div>

<asp:XmlFile "~/App

</asp:Xm<asp:Tre

Lines "True"Expa<Dat

eField "Cust

eField "Orde

eField "Orde

eField "Invo

</Da</asp:Tr

</div></form>dy>ml>

g System; g System.Colg System.Cong System.Datg System.Ling System.Webg System.Webg System.Webg System.Web

2.50" /> ms>

oiceId="6" AmoiceId="7" Am

erId="2" Name

Id="8" ShipDas>em OrderItemI

em OrderItemI

ms>

Id="11" ShipDs>em OrderItemI

em OrderItemI

ms>

oiceId="26" AoiceId="27" A

ge "C#" AutoView1" %>

PUBLIC " //Worg/TR/xhtmltp://www.w3.rver">na sin títul

orm1" runat

DataSourceData/treevi

mlDataSourceeeView ID "T

andDepth "0"taBindings><asp:TreeNo

tomerId" /><asp:TreeNo

erId" /><asp:TreeNo

erItemId" /><asp:TreeNo

oiceId"FormatS

ataBindings>reeView>

lections;nfiguration;ta;nq;b;b.Security;b.UI;b.UI.HtmlCon

� ����

mount="99.37"mount="147.50"

="Tailspin To

te="07 11 200

d="9" PartNum

d="10" PartNu

Date="08 21 20

d="12" PartNu

d="14" PartNu

Amount="46.58"Amount="279.15

EventWireup

3C//DTD XHTM1/DTD/xhtml1org/1999/xht

o</title>

"server">

ID "XmlDataSewxml.xml">>reeView1" ru

onselectedn

deBinding Da

deBinding Da

deBinding Da

deBinding Da

tring "{0:C

trols;

�������

/>" />

oys">

06">

mber="987" Par

umber="654" Pa

006">

umber="999" Pa

umber="575" Pa

" /> 5" />

"true" Code

ML 1.0 Trans1 transitiontml">

Source1" run

unat "server

nodechanged

ataMember "C

ataMember "O

ataMember "O

ataMember "I

}" />

� �� %���

rtDescription=

artDescription

artDescription

artDescription

eFile "eTree

sitional//ENnal.dtd">

nat "server"

r" DataSourc

"TreeView1

Customer" Te

Order" TextF

OrderItem" T

Invoice" Tex

��� ���

="Combo Widget

n="Ugly Widget

n="Pretty Widg

n="Tiny Widget

eView1.aspx.

N"

"

ceID "XmlDat

SelectedNod

extField "Na

Field "ShipD

TextField "P

xtField "Amo

���:���

t" Quantity="

t" Quantity="

get" Quantity

t" Quantity="

cs"

taSource1"

deChanged">

ame"

Date"

PartDescript

ount"

�� � �����

�)

2"

1"

y="50"

100"

ion"

www.depurando.com 171

Page 172: ASP .NET Framework 3.5

usingusingusing

publi{

p{

}p{

}}

MenMues

El concombMenu

CuanpáginNavigpáginmanecontrutilice

El conestátde mde mStaticvalormenúelemdesappara

g System.Webg System.Webg System.Xml

ic partial c

protected vo{

}protected vo{ Response

}

nustra un menú

ntrolMenu sbinación conu admite las

Enlace dedatos jerá

Exploraci

Acceso melemento

Aspecto pplantillas

do el usuariona Web vincugateUrl de unna vinculada;era predeterrolMenu. Pae la propieda

ntrolMenumico siempreenú del niveenú (submecDisplayLeveespecificadoú dinámico sento del meparecen autoespecificar e

b.UI.WebContb.UI.WebCont.Linq;

class eTreeV

oid Page Loa

oid TreeView

e.Write("Val

ú en una pág

se utiliza parun control Scaracterístic

e datos que párquicos.

ón del sitio m

mediante proos de menú,

personalizabdefinidas po

o hace clic enulada o simpn elemento d; de lo contraminada, unaara mostrar ead Target de

muestra dosse muestra eel raíz (nivel 0nús estáticosels. Los elemeo por la propólo aparecenú primarioomáticamenesa duración

� ����

rols;rols.WebPart

iew1 : Syste

d(object sen

1 SelectedNo

ue:" + TreeV

gina web ASP

ra mostrar unSiteMapDatacas siguiente

permite enla

mediante la

gramación aestablecer p

ble medianteor el usuario

n un elemenplemente devde menú se eario, devuelva página vincel contenidoel controlMe

tipos de meen un contro0) se muestras) dentro deentos de mepiedad Staticcuando el usque contiente después d.

�������

ts;

em.Web.UI.Pa

nder, EventA

odeChanged(o

View1.Select

P.NET.

n menú en uaSource paraes:

azar los elem

integración c

al modelo depropiedades,

e temas, imág.

nto de menú,volver la págencuentra eve la página aculada se muvinculado eenu.

enús: un menolMenu. Dean en el menl menú estátenú (si existecDisplayLevesuario colocae el submende cierto tiem

� �� %���

age

Args e)

object sende

tedNode.Valu

una página wa navegar po

mentos de me

con el contro

el objetoMenetc., de form

genes definid

, el controlMgina al servidstablecida, eal servidor puestra en la mn una ventan

nú estático ymanera prednú estático. Ptico establecalguno) conls se muestraa el punteronú dinámico.mpo. Utilice

��� ���

er, EventArg

ue);

web ASP.NET,r un sitio we

enú del cont

ol SiteMapDa

nu para creama dinámica

das por el us

Menu puedeor. Si la propel controlMeara que la pmisma ventana o un marc

un menú dideterminadaPuede mostrciendo la pron un nivel máan en un medel mouse (Los menús dla propiedad

���:���

gs e)

, a menudo eeb. El control

rol a orígene

ataSource.

ar menús, rela.

suario, estilo

navegar a upiedadenu navega arocese. Dena o marco qco diferente,

námico. El ma, los elemenrar otros nivepiedadás alto que eenú dinámicoratón) sobredinámicosd DisappearA

�� � �����

�*

en

es de

llenar

os y

na

a la

que el,

menúntoseles

lo. Une el

After

www.depurando.com 172

Page 173: ASP .NET Framework 3.5

Tambestabvalor

Elem

Un coMenumenúde mLos ede su

Cadapropialmacse paelemNavig

Dato

El moParaetiquMenuentreun ellas pr<asp:adicioprima

Enlac

El conorige

bién puede libleciendo la pespecificado

entos de me

ontrolMenuuItem. Los elú raíz. Un eleenú secundalementos deu menú prima

elemento diedad Text secenar cualquasan al eventento de mengateUrl.

s estáticos

odelo de datomostrar elemetas <Items>u. A continuae las etiquetaemento de mropiedades d:MenuItem>onales entreario.

ce a datos

ntrolMenu tn de datos a

El controun controde origenen el valoautomátirecomen

El controcontrol aen el orig

imitar el númpropiedad Mo no se tiene

enú

se componelementos deemento de mario. Todos loe un menú seario.

e menú tiene muestra enuier informacto de devolucnú, éste pued

os más simpmentos de m> de aperturación, cree laas <Items> dmenú del conde cada elem>. Para crearlas etiqueta

también se padecuado, pu

lMenu puedol XmlDataSon de datos jeor ID del contcamente al cdado para el

lMenu tambeste origen

gen de datos

� ����

mero de niveMaximumDynen en cuenta

e de un árboe menú del nmenú que tieos elementoecundario se

e una propien el controlMción adicionación de datode navegar a

le del contromenú estáticora y cierre ena estructurae apertura yntrol y se cormento de melos elementas <asp:Men

puede enlazauede utilizar

de utilizar cuource o un corárquico, esttrol de origecontrol de orl enlace a da

bién se puedde datos, esy, a continu

�������

eles que se mnamicDisplaya

ol de elementivel superiorne un elemes del menú re almacenan

edad Text y uMenu, miental sobre el elos asociado aa otra página

olMenu es eos mediantentre las etiqude menú any cierre. Cadarresponde conú establecios de submeuItem> de a

ar a datos. Pauno cualqui

ualquier contontrol SiteMtablezca la pen de datos.rigen de datoatos.

de enlazar a ustablezca la pación, llame

� �� %���

muestran enyLevels. Los n

tos de menúr (nivel 0) seento de menraíz se almacen la colecci

una propiedatras que la plemento de mal elemento da Web indica

el de los elemsintaxis dec

uetas de apenidando los ea elemento <on un objetoendo los atrienú, anide elpertura y cie

ara enlazar eera de los do

trol de origenMapDataSourropiedad DaEl controlMos especifica

un objeto Xmpropiedad Dae al método D

��� ���

un menú dinniveles de m

ú representaddenominanú primario secenan en la ción ChildItem

ad Value. El vropiedad Vamenú, tal code menú. Alda por la pro

mentos de mlarativa, primrtura y cierreelementos <a<asp:MenuIto MenuItem.ibutos de sulementos <aerre del elem

el controlMeos métodos s

n de datos jece. Para enlaataSourceID denu se enlazado. Éste es e

mlDocumentataSource deDataBind.

���:���

námicomenú superio

dos por objeelementos de llama elemcolección Items de eleme

valor de lalue se utilizamo los datoshacer clic enopiedad

enú estáticomero coloque del controlasp:MenuItetem> represePuede estabelementosp:MenuItem

mento de me

enu al tipo dsiguientes:

erárquico, coazar a un condel controlMzael método

t. Para enlazael controlMe

�� � �����

� res al

etosdelmentoms.ntos

a paras quen un

os.e

em>entablecer

m>nú

e

omontrolMenu

ar elenu

www.depurando.com 173

Page 174: ASP .NET Framework 3.5

<?xml<Menu <Ho <Pr

<u<u<u

</P <Su

<u<u

</S <Ab

<<

</A</Men

<%@ PInher

<!DOC"http<html<head

<</hea<body

l version "1uItems>ome displayroducts disp<SmallWidgeturl "~/produ<MediumWidgeurl "~/produ<BigWidgetsurl "~/produProducts>upport displ<Downloads durl "~/suppo<FAQs displaurl "~/suppoSupport>boutUs displ<Company dis<Locations dAboutUs>nuItems>

Page Languagrits "eMenu1

CTYPE html Pp://www.w3.ol xmlns "httd runat "ser<title>Páginad>y>

.0" encodin

"Home" urlplay "Products display "ucts/smallwiets displayucts/mediumwdisplay "Bi

ucts/bigwidg

ay "Supportdisplay "Dowort/downloaday "FAQs"ort/faqs.asp

ay "About Uplay "Compa

display "Loc

ge "C#" Auto" %>

PUBLIC " //Worg/TR/xhtmltp://www.w3.rver">na sin títul

� ����

g "utf 8" ?>

"~/" /> ts" url "~/pSmall Widgetdgets.aspx""Medium Widgidgets.aspx"g Widgets"ets.aspx" />

" url "~/Supnloads"s.aspx" />

x" />

s" url "~/abny" url "~/aation" url "

EventWireup

3C//DTD XHTM1/DTD/xhtml1org/1999/xht

o</title>

�������

>

products/">ts"/>

gets"" />

>

pport/">

boutus/">aboutus/comp"~/aboutus/l

"true" Code

ML 1.0 Trans1 transitiontml">

� �� %���

pany.aspx" /locations.as

eFile "eMenu

sitional//ENnal.dtd">

��� ���

/>spx" />

u1.aspx.cs"

N"

���:����� � �����

��

www.depurando.com 174

Page 175: ASP .NET Framework 3.5

<<

OnMen

DataF

<<<

</bod</htmusingusingusingusingusingusingusingusingusingusingusingusing

publi{

p{

}p{

}}

<form id "fo<div>

<asp:MennuItemClick

</asp:Me<asp:Xml

File "~/AppXPat

<br /></div><asp:Label I</form>dy>ml>g System; g System.Colg System.Cong System.Datg System.Ling System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Xml

ic partial c

protected vo{

}protected vo{ Label1.T

}

orm1" runat

nu ID "Menu1"Menu1 Menu

enu>DataSourceData/MenuIt

th "/MenuItem

D "Label1"

lections;nfiguration;ta;nq;b;b.Security;b.UI;b.UI.HtmlConb.UI.WebContb.UI.WebCont.Linq;

class eMenu1

oid Page Loa

oid Menu1 Me

Text e.Item

� ����

"server">

" runat "serItemClick">

ID "XmlDataSems.xml"ms/*"></asp

runat "serve

trols;rols;rols.WebPart

: System.We

d(object sen

nuItemClick

m.ValuePath;

�������

rver" DataSo

Source1" run

:XmlDataSour

er" Text "La

ts;

eb.UI.Page

nder, EventA

(object send

;

� �� %���

ourceID "Xml

nat "server"

rce>

abel"></asp:

Args e)

der, MenuEve

��� ���

lDataSource1

"

Label>

entArgs e)

���:���

"

�� � �����

��

www.depurando.com 175

Page 176: ASP .NET Framework 3.5

AApliicaccocioon .

���

���

��

@A

Mne.NE

�� �

���+

��

AC

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsET 3

��

+��

����

CTS:Web3.5

��

:b5

www.depurando.com 176

Page 177: ASP .NET Framework 3.5

��

El XLa creen el

DOMdoculos do

A peslengula for

ArbUna den lapor a(párrelem

TodapodeHTMde mweb e

Esta tutilizafunciy por

DOMque erelac

La sig

<!DO"http

<htm

<hea

<met

����+�

XML DOMeación del Ddesarrollo d

M permite a lomentos XMLocumentos X

sar de sus oruajes de progrma de imple

ol de Nodde las tareasmanipulaciólgunos elemafos, <div>, eento (que ap

s estas tarear utilizar lasL normal noanipular. Poen una estru

transformacar las herramonamiento dr tanto, la for

M transformaestán intercoiones entre e

guiente págin

OCTYPE htmlp://www.w3.

ml xmlns="htt

d>

ta http�equiv

���

Mocument Objde las página

os programaL. De hecho,XML.

ígenes, DOMgramación (Jementarlo.

doss habituales eón de las págmentos (por eetc.) de formparezca/desa

as habitualesutilidades dees más quer ello, los nauctura más e

ión la realizamientas de Dde esta transrma en la qu

todos los doonectados y qellos. Por su

na XHTML se

PUBLIC "�//W.org/TR/xhtm

tp://www.w

v="Content�T

�� �

bject Model os web dinám

dores web aDOM se dise

M se ha convava, PHP, Jav

en la programginas web. Deejemplo los ema dinámicaaparezca, qu

s son muy see DOM, es nuna sucesiónvegadores wficiente de m

an todos losDOM de formsformación ine se manipu

ocumentos Xque represenaspecto, la u

encilla:

W3C//DTD Xml1/DTD/xht

3.org/1999/x

Type" conten

�����

o DOM es unmicas y de las

acceder y maeñó originalm

ertido en unvaScript) y c

mación de ape esta formaelementos dey añadirlo aue se desplac

ncillas de reecesario "tran de caracteweb transformmanipular.

navegadoresma muy sencinterna es qulan las págin

XHTML en unntan los contunión de tod

XHTML 1.0 Trtml1�transitio

xhtml">

nt="text/htm

���� ��

� @AC

na de las innos aplicacione

anipular las pmente para m

a utilidad disuyas únicas d

plicaciones wa, es habituae un formulala página, apce, etc.).

alizar graciasansformar" lres, por lo quman automá

s de forma alla. El motivoe condicionanas.

n conjunto detenidos de lados los nodos

ransitional//onal.dtd">

ml; charset=is

�����+�

C

ovaciones qus web más c

páginas XHTMmanipular de

sponible pardiferencias s

web con Javal obtener el vario), crear uplicar una an

s a DOM. Sina página origue es un formáticamente t

utomática yo por el quea el comport

e elementosas páginas ws se llama "á

EN"

so�8859�1" /

�� �� �

ue más ha incomplejas.

ML como si fe forma senc

ra la mayoríase encuentra

aScript consivalor almacen elementonimación a u

n embargo, pginal. Una pámato muy diodas las pág

nos permitese muestra etamiento de

llamados noweb y lasárbol de nodo

/>

���� @AC

fluido

fuerancilla

a dean en

steenado

n

paraáginaifícilinas

eelDOM

odos,

os".

C

www.depurando.com 177

Page 178: ASP .NET Framework 3.5

<title

</hea

<bod

<p>E

</bod

</htm

Se tra

Figurla pág

En elrelacy su c

La raíespec

A parLa coraíz s

e>Página sen

ad>

y>

sta página es

dy>

ml>

ansforma en

a 5.1. Árbolgina

esquema aniones entre ncontenido.

íz del árbol dcial denomin

rtir de ese nonversión deolamente pu

cilla</title>

s <strong>m

el siguiente

de nodos ge

nterior, cadanodos. Dent

de nodos denado "Docum

odo raíz, cadetiquetas enueden deriva

uy sencilla</

árbol de no

enerado auto

rectángulo rro de cada n

cualquier pámento".

a etiqueta Xn nodos se rear los nodos

/strong></p>

dos:

omáticament

representa uodo, se ha in

ágina XHTML

HTML se traealiza de formHEAD y BOD

���� ��

>

te por DOM

un nodo DOMncluido su tip

L siempre es

nsforma enma jerárquicDY. A partir d

�����+�

a partir del c

M y las flechapo (que se ve

la misma: un

un nodo de tca. De esta foe esta deriva

�� �� �

código XHTM

as indican laerá más ade

n nodo de tip

tipo "Elemenorma, del noación inicial,

���� @AC

ML de

slante)

po

nto".docada

C

www.depurando.com 178

Page 179: ASP .NET Framework 3.5

etiqupadre

La trade tiptipo "

Así, la

<title

Gene

Figur

De la

<p>E

Gene

eta XHTML se".

ansformaciónpo "Elemento"Texto" que

a siguiente e

e>Página sen

era los siguie

a 5.2. Nodos

misma form

sta página es

era los siguie

Nodo de

Nodo de

Como el cinterior s<strong>

El contenderiva de

se transform

n de las etiqo" (correspocontiene el t

etiqueta XHT

cilla</title>

ntes dos nod

s generados

ma, la siguien

s <strong>m

ntes nodos:

tipo "Elemen

tipo "Texto"

contenido dee transformay que deriva

nido de la etiel nodo gene

ma en un nod

uetas XHTMndiente a latexto encerra

ML:

dos:

automáticam

nte etiqueta X

uy sencilla</

nto" corresp

con el conte

e <p> incluyea en un nodoa del nodo an

queta <stronrado por <st

o que deriva

L habitualespropia etiquado por esa

mente por D

XHTML:

/strong></p>

ondiente a l

enido textua

e en su intero de tipo "Elenterior.

ng> genera atrong>.

���� ��

a del nodo co

genera dosueta XHTML)etiqueta XHT

OM para una

>

a etiqueta <p

al de la etiqu

ior otra etiqemento" que

a su vez otro

�����+�

orrespondien

nodos: el pr) y el segundTML.

a etiqueta XH

p>.

eta <p>.

ueta XHTMLe representa

nodo de tipo

�� �� �

nte a su "etiq

imero es el no es un nodo

HTML sencil

L, la etiquetaa la etiqueta

o "Texto" qu

���� @AC

�queta

nodoo de

la

ue

C

www.depurando.com 179

Page 180: ASP .NET Framework 3.5

Figuretiqu

La traregla

ComoAun apropocualq

TipoLa eshabit

Los oCData

a 5.3. Nodosetas XHTML

ansformacións:

Las etiquel segund

Si una etianterior,

o se puede sasí, el procesorcionadas pquier nodo de

os de Nodpecificacióntuales se pue

Documen

Element,puede co

Attr, se detiquetas

Text, nod

Commen

otros tipos deaSection, Do

s generadosL en su interio

n automática

etas XHTMLdo nodo es h

iqueta XHTMpero los nod

uponer, las pso de transfopor DOM (que la página d

doscompleta deeden manipu

nt, nodo raíz

representaontener atrib

efine un nods XHTML, es

do que contie

t, representa

e nodos existocumentFrag

automáticamor

a de la págin

se transformijo del prime

ML se encuendos generado

páginas XHTormación esue se verán mde forma sen

e DOM definular manejan

del que deri

cada una debutos y el úni

do de este tidecir, uno po

ene el texto

a los coment

tentes que ngment, Entity

mente por D

na en un árbo

man en dos nero y consist

ntra dentro dos serán nod

ML habitualerápido y autmás adelantencilla e inmed

ne 12 tipos dndo solamen

ivan todos lo

las etiquetaico del que p

po para repror cada par a

encerrado p

tarios incluid

no se van a coy, EntityRefe

���� ��

OM para una

ol de nodos s

nodos: el prime en el conte

de otra, se sigdos hijo de su

es producenomático, siee) las únicasdiata.

e nodos, aunte cuatro o c

os demás nod

as XHTML. Sepueden deriv

resentar cadaatributo=valo

or una etiqu

dos en la pág

onsiderar sorence, Proce

�����+�

a etiqueta XH

siempre sigu

mero es la penido textua

gue el mismou etiqueta pa

árboles conndo las funcque permite

nque las págcinco tipos de

dos del árbo

e trata del únvar otros nod

a uno de losor.

ueta XHTML.

gina XHTML.

n DocumentessingInstruc

�� �� �

HTML con ot

ue las misma

ropia etiqueal de la etiqu

o procedimieadre.

miles de noionesen acceder a

inas XHTMLe nodos:

ol.

nico nodo qudos.

atributos de

tType,ction y Notat

���� @AC

tras

s

ta yeta.

ento

dos.

ue

e las

tion.

C

www.depurando.com 180

Page 181: ASP .NET Framework 3.5

AcceUna vlas fuun noárbolestabelem

DOMde su

Las fuconside esbuscaaccedpadre

Por enodo

Por úsolamdespuque upágin

getElComogetEl

La funXHTM

El sig

var p

El valpartirtodosbúsq

El valque snododebe

De es

eso directvez construidunciones DOModo del árbol, ya es posibblecer el valoentos, etc.

M proporcionaus nodos pad

unciones questen en accesos hijos y asado. Sin embder directame.

ese motivo, nos y se muest

último, es immente es posués de que laun código Javna XHTML.

lementsByTo sucede conementsByTa

nción getEleML cuya etiqu

uiente ejem

arrafos = do

or que se indr del cual ses los párrafoueda.

or que devusu etiqueta cos DOM, no uprocesar ca

ste modo, se

to a los nodo automáticM para accedl es equivaleble manipulaor de un elem

a dos métoddre y acceso d

e proporcioneder al nodosí sucesivamebargo, cuandmente a ese n

no se van a ptran solamen

portante recsible cuandoa página XHTvaScript sola

TagName()n todas las fuagName() tie

mentsByTagueta sea igua

plo muestra

cument.getE

dica delanterealiza la bús de la págin

elve la funcicoincide conun array de cda valor del

e puede obte

odoscamente el áder de formaente a acceder de forma smento, move

dos alternativdirecto.

na DOM pararaíz de la páente hasta edo se quiere anodo y no lle

presentar lasnte las que p

cordar que eel árbol DOMTML se carguamente se eje

)unciones quene un nomb

gName(nombal que el par

cómo obten

ElementsByT

del nombresqueda de lona, se utiliza

ón es un arrel parámetrocadenas de tearray de la f

ener el prime

árbol complea directa a cuer a "un trozencilla la páger un elemen

vos para acc

a acceder a uágina y despul último nodoacceder a ungar a el desc

funciones npermiten acc

l acceso a loM ha sido coue por compecute cuand

e proporcionre muy largo

breEtiqueta)rámetro que

ner todos los

TagName("p"

e de la funcióos elementosel valor docu

ay con todoso proporcionexto o un arrforma que se

er párrafo de

���� ��

eto de nodosualquier nodzo" de la pággina: accedento de la pág

eder a un no

un nodo a traués a sus nodo de la raman nodo especcendiendo a

ecesarias paeder de form

s nodos, su monstruido comleto. Más ado el navegad

a DOM, la fuo, pero que l

obtiene todse le pasa a

s párrafos de

");

ón (en este cas. En este caument como

s los nodos qnado. El valoray de objetoe muestra en

e la página de

�����+�

s DOM, ya esdo del árbol.ina, una vezr al valor deina, crear y a

odo específic

avés de sus ndos hijos y aa terminada pcífico, es mutravés de to

ra el accesoma directa a

modificaciónmpletamentdelante se vedor ha cargad

uncióno hace autoe

os los elemela función.

e una página

aso, documeso, como seo punto de pa

que cumplenor devuelto eos normalesn las siguient

e la siguiente

�� �� �

s posible utilComo accedconstruido eun elementoañadir nuevo

co: acceso a

nodos padrelos nodos hipor el nodocho más rápdos sus nodo

jerárquico dlos nodos.

n y su eliminae, es decir,erá cómo asedo entera la

explicativo.

entos de la p

XHTML:

ent) es el nodquieren obtartida de la

n la condiciónes un array de. Por lo tantoes secciones

e manera:

���� @AC

�izarder aelo,os

través

ijos

idoos

de

ación

egurar

página

do aener

n deeo, ses.

C

www.depurando.com 181

Page 182: ASP .NET Framework 3.5

var p

De la

for(va

var p

}

La funlos noprime

var p

var p

var e

getElLa funelemse ob

var p

<p na

<p na

<p>..

Normes unelemrelac

Interncuentlos el

getElLa fundinámmodi

rimerParrafo

misma form

ar i=0; i<parr

parrafo = pa

nción getEleodos devuelter párrafo de

arrafos = do

rimerParrafo

nlaces = prim

lementsByNnción getEleentos cuyo abtiene directa

arrafoEspeci

ame="prueba

ame="especi

.</p>

malmente el an método muentos HTMLionados, por

net Explorerta para los eementos cuy

lementByIdnción getElemicas. Se tratficar sus pro

o = parrafos[

ma, se podría

rafos.length;

rrafos[i];

mentsByTagtos por la fune la página:

cument.getE

o = parrafos[

merParrafo.g

Name()mentsByNamatributo namamente el ún

ial = docume

a">...</p>

ial">...</p>

atributo namuy práctico pradiobuttonr lo que la fu

r 6.0 no implelementos deyo atributo i

d()mentById() eta de la funcopiedades.

[0];

an recorrer to

; i++) {

gName() se pnción. En el s

ElementsByT

[0];

getElementsB

me() es similme sea igual anico párrafo

ent.getEleme

me es único ppara accedern, el atributonción devue

ementa de foe tipo <inputd sea igual a

es la más utición preferid

odos los párr

puede aplicarsiguiente eje

TagName("p"

ByTagName(

ar a la anteral parámetrocon el nomb

entsByName

para los elemdirectamentname es co

elve una cole

orma correc> y <img>. Aal parámetro

lizada cuanda para acced

���� ��

rafos de la p

r de forma reemplo, se ob

");

("a");

ior, pero eno proporcionbre indicado

("especial");

mentos HTMte al nodo demún a todoscción de ele

ta esta funciAdemás, tamde la funció

do se desarroder directam

�����+�

ágina con el

ecursiva sobtienen todos

este caso seado. En el sig:

;

L que lo defieseado. En es los radiobumentos.

ión, ya que sbién tiene enón.

ollan aplicaciente a un no

�� �� �

siguiente có

re cada unos los enlaces

e buscan losguiente ejem

nen, por lo qel caso de lostton que est

sólo la tienen considerac

iones webodo y poder

���� @AC

!ódigo:

dedel

mplo,

quesán

ención

leer o

C

www.depurando.com 182

Page 183: ASP .NET Framework 3.5

La funparámuna m

var ca

<div i

<a h

</div

La funque c

Interntambfunci

CreaAccedmanielimi

CreaComonodotipo T

Por ecuatr

1

2

3

4

De esinclui

// Cre

var p

nción getElemetro indicamisma págin

abecera = do

id="cabecera

href="/" id="

v>

nción getElecasi todos los

net Explorerbién aquellosón.

ación y Elder a los nodpulaciones hnar nodos de

ación de eleo se ha visto,os: el primerText y repres

este motivo,ro pasos dife

1. Creación

2. Creación

3. Añadir el

4. Añadir ellugar en e

ste modo, siir el siguient

ear nodo de

arrafo = doc

mentById() ddo en la funa, la función

ocument.get

a">

logo">...</a>

mentById() es ejemplos y

r 6.0 tambiéns elementos

liminacióndos y a sus phabituales enel árbol DOM

ementos XH, un elementnodo es de tsenta el cont

crear y añadrentes:

de un nodo

de un nodo

nodo Text c

nodo Elemeel que se qui

se quiere añe código Jav

tipo Element

ument.creat

devuelve el eción. Como edevuelve ún

ElementById

>

es tan imporejercicios qu

n interpreta icuyo atribut

n de Nodoropiedades (n las páginasM, es decir, c

HTML simplto XHTML setipo Elementtenido textua

dir a la página

de tipo Elem

de tipo Text

como nodo h

ent a la páginiere insertar

ñadir un párraScript:

t

teElement("p

elemento XHel atributo idnicamente e

d("cabecera"

rtante y tan uue siguen la

incorrectamo name coin

os(que se verá. Las otras ocrear y elimin

lesencillo, comot y represental de la etiqu

a un nuevo e

ment que rep

t que represe

hijo del nodo

na, en formael elemento

rafo simple a

p");

���� ��

HTML cuyo atd debe ser únl nodo desea

");

utilizada en tutilizan cons

ente esta funcida con el p

más adelantperaciones hnar "trozos" d

o por ejemplota la etiquetaueta <p>.

elemento XH

presente al e

ente el conte

Element.

de nodo hijoo.

l final de una

�����+�

tributo id conico para cadado.

todas las aplstantemente

nción, ya quparámetro p

te) es sólo unhabituales sode la página

o un párrafoa <p> y el seg

HTML sencillo

lemento.

enido del ele

o del nodo c

a página XHT

�� �� �

oincide con eda elemento

icaciones wee.

e devuelveroporcionad

na parte de lon las de creaweb.

, genera dosgundo nodo

o consta de

emento.

orrespondie

TML, es nece

���� @AC

"lo de

eb,

o a la

lasar y

ses de

ente al

esario

C

www.depurando.com 183

Page 184: ASP .NET Framework 3.5

// Cre

var co

// Añ

parra

// Añ

docu

El prode tre

ElimAfortañad

var p

parra

<p id

La funfunciformanodo

Así, pvalorelimimanu

ear nodo de

ontenido = d

ñadir el nodo

afo.appendC

ñadir el nodo

ment.body.a

oceso de crees funciones

createEleXHTML cu

createTextextual de

nodoPadutilizar alText comde algún

minación detunadamenteirlo. En este

arrafo = doc

afo.parentNo

="provisiona

nción removón debe sera más seguraoHijo.parentN

para eliminarparentNodenan automátualmente cad

tipo Text

document.cre

Text como h

hild(contenid

Element com

appendChild

ación de nues DOM:

ement(etiqueuya etiqueta

xtNode(conte los elemen

re.appendChmenos doso hijo del nonodo de la p

nodose, eliminar ucaso, solame

ument.getEl

ode.removeC

al">...</p>

veChild() reqinvocada dea y rápida deNode.

r un nodo dee del nodo quticamente toda nodo hijo

eateTextNod

hijo del nodo

do);

mo hijo de la

(parrafo);

evos nodos p

eta): crea una se pasa com

tenido): creantos XHTML.

hild(nodoHijoveces con loodo Elementpágina.

n nodo del áente es nece

lementById(

Child(parrafo

uiere como pesde el elemee acceder al n

e una páginaue se quiereodos los nodo.

de("Hola Mu

o Element

a pagina

puede llegar

n nodo de tipmo parámetr

un nodo de

o): añade unos nodos haby a continua

árbol DOM desario utilizar

"provisional"

o);

parámetro eento padre dnodo padre

XHTML se ineliminar. Cuos hijos que

���� ��

undo!");

a ser tedioso

po Element qro.

tipo Text qu

n nodo comobituales: en pación se añad

e la página er la función r

");

el nodo que sde ese nodode un eleme

nvoca a la fuuando se elimtenga, por lo

�����+�

o, ya que im

ue represen

ue almacena

o hijo de otroprimer lugarde el nodo E

es mucho máremoveChild

se va a eliminque se quierento es medi

nción removmina un nodoo que no es

�� �� �

plica la utiliz

ta al elemen

el contenido

o nodo. Se dese añade el nlement com

ás sencillo qud():

nar. Ademásre eliminar. Lante la prop

veChild() deso, también snecesario bo

���� @AC

)

zación

nto

o

ebenodoo hijo

ue

, estaLapiedad

de elseorrar

C

www.depurando.com 184

Page 185: ASP .NET Framework 3.5

AcceUna vmoditodos

Los apropiatribu

El sig

var e

alert(

<a id=

En eldocuenlac

Las pvalorejem

var im

alert(

<img

Aunqexactel cód

FigurJavaS

eso directvez que se haficar sus atris los atributo

tributos XHTiedades de louto XHTML d

uiente ejem

nlace = docu

(enlace.href)

="enlace" hr

ejemplo antment.getElece.href. Para

ropiedades Cde cualquieplo obtiene

magen = doc

(imagen.style

id="imagen

que el funciotamente iguadigo anterior

a 5.4. ValoreScript

to a los ata accedido aibutos y propos XHTML y t

TML de los elos nodos. Padetrás del no

plo obtiene

ument.getEle

); // muestra

ref="http://w

terior, se obtmentById().obtener por

CSS no son tr propiedadel valor de la

ument.getEl

e.margin);

" style="mar

namiento esales, como mr en distintos

es que muest

tributos Xa un nodo, elpiedades. Metodas las pro

lementos deara acceder aombre del no

de forma dir

ementById("

a http://www

www...com">

tiene el nodoA continuacr ejemplo el

an fáciles deCSS del noda propiedad

ementById("

rgin:0; borde

s homogéneomuestran lass navegador

tra Internet

Xhtmlsiguiente paediante DOMopiedades CS

e la página sea su valor, simodo.

recta la direc

enlace");

w...com

>Enlace</a>

o DOM que rción, se obtieatributo id, s

e obtener como, se debe umargin de la

"imagen");

er:0;" src="lo

o entre distinsiguientes imes:

Explorer al a

���� ��

aso natural cM, es posibleSS de cualqui

e transformamplemente s

cción a la que

representa eene el atributse utilizaría e

mo los atributilizar el atriba imagen:

ogo.png" />

ntos navegadmágenes que

acceder a las

�����+�

consiste en ae acceder deier elemento

n automáticse indica el n

e enlaza el e

el enlace medto href del eenlace.id.

utos XHTML.buto style. E

dores, los rese son el resu

propiedade

�� �� �

cceder y/oforma sencio de la págin

camente ennombre del

nlace:

diante la funnlace media

. Para obtenel siguiente

sultados noltado de ejec

s CSS a travé

���� @AC

*

lla aa.

ciónnte

er el

soncutar

és de

C

www.depurando.com 185

Page 186: ASP .NET Framework 3.5

Figur

Si el nligera

var p

alert(

<p id

La tralos guconti

El únes elparaclassN

var p

alert(

alert(

<p id

EjemA parla sig

a 5.5. Valore

nombre de uamente su no

arrafo = doc

(parrafo.style

="parrafo" s

ansformaciónuiones medionuación se m

font�weig

line�heigh

border�to

list�style�

ico atributoatributo clasacceder al atName para a

arrafo = doc

(parrafo.clas

(parrafo.clas

="parrafo" c

mplo 1rtir de la páguiente inform

es que muest

una propiedaombre:

ument.getEl

e.fontWeigh

tyle="font�w

n del nombros (�) y escribmuestran alg

ght se transf

ht se transfo

op�style se tr

�image se tra

XHTML quess. Como la ptributo classacceder al at

ument.getEl

ss); // muestr

ssName); // m

class="norma

gina web promación:

tra Firefox a

ad CSS es com

lementById(

ht); // muest

weight: bold;

e de las propbir en mayúsgunos ejemp

orma en fon

orma en lineH

ransforma en

ansforma en

no tiene el mpalabra classs del elementributo class d

lementById(

ra "undefine

muestra "nor

al">...</p>

porcionada y

l acceder a la

mpuesto, se

"parrafo");

tra "bold"

">...</p>

piedades CSSscula la letralos:

tWeight

Height

n borderTop

listStyleImag

mismo nombs está reservato XHTML. Ede XHTML:

"parrafo");

d"

rmal"

y utilizando l

���� ��

as propiedad

accede a su

S compuestasiguiente a

Style

ge

bre en XHTMada por Javan su lugar, D

las funciones

�����+�

des CSS a tra

valor modifi

as consiste encada guión m

L y en las proScript, no es

DOM utiliza e

s DOM, most

�� �� �

vés de JavaS

icando

n eliminar tomedio. A

opiedades Ds posible utilel nombre

trar por pan

���� @AC

Script

odos

DOMizarla

talla

C

www.depurando.com 186

Page 187: ASP .NET Framework 3.5

1

2

3

4

<!DOCTY<html x<head><meta h<title>

<scriptwindow.

var i

// Nuvar einfo.

// Divar minfo.

// Nuvar cfor(v

////if(

c}

}info.

// Nuvar penlacinfo.

}</scrip</head>

<body><div id<p>Lorelibero.et, lucelit coporta</ipsum dac, fellacus.

<p>AenecubiliamalesuaporttitAliquamdiam. Icondime

<p>DoneVestibusem</a>non archref "hhendrernon lec</body>

</html>

EjemCompmuesde pude Japinch

1. Número d

2. Dirección

3. Numero d

4. Número d

YPE html PUBLIC "xmlns "http://www

http�equiv "Conte>Ejercicio 11 � DO

t type "text/javaonload functio

info document.g

umero de enlacesenlaces documentinnerHTML "Num

ireccion del penumensaje "El peninnerHTML info

umero de enlacescontador 0;var i 0; i<enlaceEs necesario comphttp://prueba/ poenlaces[i].href

contador++;

innerHTML info

umero de enlacesparrafos documeces parrafos[2]innerHTML info

pt>>

d "informacion" stem ipsum dolor sit

Maecenas nisl actus at, pede. Peonvallis malesuad/a>. Duis pellentdolor sit amet, clis. Donec arcu.Vestibulum venen

ean at nisl. Maeca Curae; Proin coada porttitor saptor felis, id sodm nec lectus necIn magna massa, mentum, arcu in sc

ec sagittis, nibhulum aliquet, nul>. Quisque eget ecu sodales hendrehttp://prueba4">erit, eros quis mactus non est pell>

>

mplo 2pletar el códstre completulsarlo por pvaScript quehar sobre el e

de enlaces d

n a la que en

de enlaces q

de enlaces d

�//W3C//DTD XHTML.w3.org/1999/xhtm

nt�Type" contentOM básico</title>

script">n() {etElementById("in

de la paginat.getElementsByTaero de enlaces

ltimo enlaceultimo enlace apu.innerHTML + "<br

que apuntan a htt

s.length; i++) {probar los enlaceor las diferencia

"http://prueba

.innerHTML + "<br

del tercer párrafnt.getElementsByT.getElementsByTag.innerHTML + "<br

tyle "border:thint amet, <a href "rcu, consequat collentesque massaa. Phasellus magnesque, felis eu aonsectetuer adipiNam sed tortor neatis erat eu odio

enas egestas dapinsequat auctor diien. Aenean a lacales dolor dolorneque aliquet dicattis id, pellentelerisque loborti

nec ullamcorperla sit amet imperros vehicula diamrit. In sem. Crasgestas</a> adipislesuada tristiqueentesque</a> auct

igo JavaScripo el contenidrimera vez. Le se ven en eenlace, se eje

e la página

laza el penúl

ue enlazan a

el tercer pár

L 1.0 Transitionaml">

"text/html; char>

nformacion");

agName("a");"+enlaces.length

unta a: "+enlacesr/>" + mensaje;

tp://prueba

es http://pruebaas entre navegadoa" || enlaces[i]

r/>" + contador +

foTagName("p");gName("a");r/>" + "Numero de

n solid silver; p"http://prueba">congue, commodo neante, ornare id

na sem, semper quadipiscing ullamciscing elit. Duisec ipsum aliquamo. Praesent id me

ibus odio. Vestibiam. <a href "httcus et metus venesed urna. Sed ru

ctum. Etiam <a hrtesque sit amet,is, ante arcu sce

tristique, pederdiet suscipit, nm euismod tristiqs id augue eu lorscing ligula. Duie, ipsum odio euitor.</p>

pt proporciodo de texto.La acción deel siguiente cecuta la func

ltimo enlace

a http://prue

rrafo

al//EN" "http://w

rset iso�8859�1"

h;

s[enlaces.length�

yoreshref "http://

+ " enlaces apunt

e enlaces del ter

padding:.5em"></dconsectetuer adipec, commodo ultri

aliquam vitae,uis, faucibus ut,corper, odio urnas scelerisque. Doullamcorper. Dui

etus.</p>

bulum ante ipsumtp://prueba">Ut benatis porta. Susutrum nulla vitaeref "http://pruebporta sit amet,

elerisque mi, at

velit feugiat manunc erat laoreetque. Ut dui. Donerem dictum interdis iaculis laoreeismod tortor, a v

nado para qAdemás, elpinchar sobapítulo. En eción llamada

���� ��

eba

www.w3.org/TR/xhtm

/>

2].href;

prueba/") {

an a http://prueb

cer párrafo "+e

iv>iscing elit</a>.cies, turpis. Quiultrices porttitorhoncus non, miconsequat arcu,

nec lacus neque,s accumsan metus

primis in faucibuibendum blandit ependisse cursus,tellus. Sed quis

a3">consequat semlectus. Curabiturcursus mi risus s

ssa, at sollicituest, a <a href "

c in metus sed rium. Donec pretiumt turpis. Maurisestibulum nisl mi

ue cuando seenlace debere un enlaceeste ejerciciomuestra().

�����+�

ml1/DTD/xhtml1�tr

ba"

enlaces.length;

Sed mattis enimisque sapien nuncor, pede. Nullam. <a href "http:/at posuere antevehicula in, eleeu urna. Aenean

us orci luctus etest</a>. Curabitusem non dapibus

s eros nec lectusm quis massa</a>.r posuere. Aliquased tellus.</p>

udin justo tellus"http://prueba">aisus laoreet sollm. Proin <amollis est sit a

i at odio. <a hre

e pinche sobdejar de mo

e forma parteo, sólo se deb

�� �� �

ransitional.dtd">

vitae orci. Phasc, posuere vitae,sit amet nisl el

//prueba2">Fuscequam non dolor.

eifend vitae, venvitae enim. Inte

t ultrices posuerur vestibulum. Nutincidunt, lorem

s tempor lacinia.. Donec aliquam eam in elit. Fusce

s vitae justo.aliquam leo odiolicitudin. Proin

amet diam. Curabief "http://prueba

bre el enlaceostrarse despe de los "Evebe saber que

���� @AC

>

sellusrutrum

lementum

Loremnenatiseger

reuncm magna

euismode

sedet nisi

itura5">Sed

sepuésentos"e al

C

www.depurando.com 187

Page 188: ASP .NET Framework 3.5

<!DOCTY<html x<head><meta h<title>

<style.oculto.visibl</style

<scriptfunctio

var eeleme

var eenlac

}</scrip</head>

<body>

<p idnisl arpede. Psit amepellentamet, carcu. Nvenenat<a id

</body>

</html>

EjemCompcadaañadsobreEn esllama

<!DOCTY<html x<head><meta h<title>

<scriptfunctio

var evar teleme

var llista

var nlista

}</scrip</head>

<body>

<ul id<li>L<li>C<li>S<li>P<li>M

</ul>

<input

</body>

</html>

YPE html PUBLIC "xmlns "http://www

http�equiv "Conte>Ejercicio 12 � DO

type "text/css">o { display: nonele { display: inle>

t type "text/javaon muestra() {elemento documeento.className

enlace documentce.className "o

pt>>

texto">Lorem ipsrcu, consequat coPellentesque masset nisl elementumtesque, felis euconsectetuer adipNam sed tortor netis erat eu odio.enlace" href "#"

>

>

mplo 3pletar el códvez que se pirlos a la listae un botón foste ejercicio,ada anade().

YPE html PUBLIC "xmlns "http://www

http�equiv "Conte>Ejercicio 13 � DO

t type "text/javaon anade() {elemento documetexto document.ento.appendChild(t

lista document.a.appendChild(ele

nuevoElemento "a.innerHTML list

pt>>

"lista">Lorem ipsum dolorConsectetuer adipSed mattis enim vPhasellus libero<Maecenas nisl arc

type "button" va

>

>

�//W3C//DTD XHTML.w3.org/1999/xhtm

nt�Type" contentOM básico y atrib

; }ine; }

script">

nt.getElementById"visible";

.getElementById("culto";

um dolor sit ametngue, commodo neca ante, ornare idelit convallis m

adipiscing ullamciscing elit. Duisc ipsum aliquam uPraesent id metuonclick "muestra

igo JavaScrippulsa sobre ea existente. Aorma parte dsólo se debe

�//W3C//DTD XHTML.w3.org/1999/xhtm

nt�Type" contentOM básico y atrib

script">

nt.createElement(createTextNode("Etexto);

getElementById("lmento);

<li>Texto de prueta.innerHTML + nu

sit amet</li>iscing elit</li>itae orci</li>/li>u</li>

lue "Añadir eleme

L 1.0 Transitionaml">

"text/html; charbutos XHTML</titl

d("adicional");

"enlace");

t, consectetuer ac, commodo ultricd, aliquam vitaemalesuada. Phaselcorper, odio urnas scelerisque. Doullamcorper. Duisus.</span></p>a(); return false

pt proporcioel botón. UtilAl igual quede los "Evente saber que a

L 1.0 Transitionaml">

"text/html; charbutos XHTML</titl

("li");Elemento de prueb

lista");

eba</li>";uevoElemento;

ento" onclick "an

al//EN" "http://w

rset iso�8859�1"le>

adipiscing elit.cies, turpis. Qui

ultrices porttillus magna sem, sa consequat arcu,onec lacus neque,s accumsan metus

e;">Seguir leyend

nado para qlizar las funcsucede en etos" de JavaSal pinchar so

al//EN" "http://w

rset iso�8859�1"le>

ba");

nade();">

���� ��

www.w3.org/TR/xhtm

/>

Sed mattis enim vsque sapien nunc,tor, pede. <spanemper quis, fauciat posuere antevehicula in, ele

eu urna. Aenean v

o</a>

ue se añadaniones DOM pl ejercicio anScript que seobre el botón

www.w3.org/TR/xhtm

/>

�����+�

ml1/DTD/xhtml1�tr

vitae orci. Phase, posuere vitae,id "adicional" c

ibus ut, rhoncusquam non dolor.

eifend vitae, venvitae enim. Integ

n nuevos elepara crear nunterior, la acce ven en el sin, se ejecuta

ml1/DTD/xhtml1�tr

�� �� �

ransitional.dtd">

ellus libero. Maerutrum et, luctu

class "oculto">Nunon, mi. DuisLorem ipsum dolo

nenatis ac, felisger lacus. Vestib

ementos a lauevos nodosción de pinchguiente capíla función

ransitional.dtd">

���� @AC

>

ecenasus at,ullam

or sits. Donecbulum

listas yharítulo.

>

C

www.depurando.com 188

Page 189: ASP .NET Framework 3.5

XPahttp:/

Perm

Se ba

Su esdocu

Ejem

EvalLa evnodo

Una epredi

SeleNom///

.

..@[]*@*|

Ejem

<alu

</al

<alumno<alumno

</alumn<alumno

</alumn</alumn

ath//www.di.un

mite acceder a

asa en relacio

stilo de notacmento XML

plo: /alumno

luación Xvaluación deos, booleano,

expresión XPicado

ección debre

mplos de e

umno dni=”9939393

<nombre>

<apellidos

<nacim>19

lumno>

os>o dni=”9939393”>

<nombre>Pedr<apellidos>Me

no>o dni=”12876540”>

<nombre>Ana<<apellidos>Mo

no>nos>

niovi.es/~lab

a partes de u

ones de pare

ción es simila

o/nombre

XPathuna expresió, número, ca

Path equivale

Nodos en

expresion

3”>

>Juan</nombre>

s>García García</ap

985</nacim>

ro</nombre>edario</apellidos>

</nombre>oreno</apellidos>

bra/cursos/X

un documen

entesco entre

ar a las rutas

ón XPath arradena.

e a un predic

n XPath

nes XPath

pellidos>

ML/XPath.pd

to XML

e nodos

s de los fiche

oja una expr

cado, que de

SelecNodoNodocon lNodoPadreAtribUn pEncajEncajUna d

h� /alumn

o

� /alumnoo

� //nomb

/alumn

���� ��

df

eros, pero se

resión de 4 t

evuelve todo

cciona los hijos a partir deos a partir dea descripcióno actuale del nodo abutosredicado queja con cualquja con cualqude varias sel

nos/alumno[<nombre>P

os/alumno/Dni=993939Dni=128765

bre

o/nombre

�����+�

refiere a no

ipos posibles

lo que encaj

os de nombel nodo raízel nodo actuan, no import

ctual

e debe cumpuier nodouier atributoecciones

[1]/nombrePedro</nom

@dni93540

J

�� �� �

dos en un

s: conjunto d

ja con dicho

re

al que encajta donde esté

plirse

o

bre>

Juan

���� @AC

de

enén

C

www.depurando.com 189

Page 190: ASP .NET Framework 3.5

EjesUn ej

AnceAnceAttribChildDesceDesceFollowFollowName

ParenPrecePreceSelfLa sin

OpeLa evboole

Oper

+ , � *

Funci

Funci

Funci

o <o <

//alumnoo <o <

s de Evaluje define un

storstor�or�selfbute

endantendant�or�sewingwing�siblingespace

ntedingeding�sibiling

ntaxis es: nom

eradores yvaluación deeano o un en

adores:

* , div , = , !=

iones numér

iones de cad

iones Boolea

<nombre>Pe<nombre>An

o[1]/nombre<nombre>Pe<apellidos>M

uación ennodo relativ

elf

g

mbreEje::no

y funcioneuna expresióntero

, < , > , <= , >

ricas: numbe

denas: concat

anas: not, tru

dro</nombra</nombre>

| //alumnodro</nombr

Moreno</ape

XPathvo a otro nod

do[predicad

es en XPaón en XPath

>= , or, and ,

er, abs, floor,

t, substring,

ue, false

re>>

[2]/apellidosre>ellidos>

do

TodoAnceTodoTodoDescDescNodoTodoTodonodoPadreTodoHermEl no

o]

athdevuelve un

mod

, ceiling, roun

contains, ….

���� ��

s

os los ancestrestros incluidos los atributos los hijos deendientesendientes inos que siguenos los hermanos los nodos doe del nodoos los nodos amanos anterido actual

n conjunto de

nd,…..

�����+�

ros de un nodos el nodoos del nodoel nodo

ncluido el nodn al nodonos despuésdel espacio d

anteriores aores al nodo

e nodos, una

�� �� �

odo

do

del nodode nombres

l nodo actuao actual

a cadena, un

���� @AC

del

al

C

www.depurando.com 190

Page 191: ASP .NET Framework 3.5

XMLLas clespac

El espla cla

Obj

XmlSon opued

El Xmentre

L Namesplases de XMLcio de nomb

pacio de nomse XmlDataD

etos XML

lDocumeobjetos que ren usarse pa

mlDataDocume datos.

paceL están en lares System.X

mbres SystemDocument

L

ent y Xmlrepresentanara navegar y

ment hereda

dll System.XXml.

m.Xml tambi

lDataDocXML en memy editar los n

de XmlDocu

Xml, para usa

én se extien

cumentmoria usandnodos XML

ument y tam

���� ��

ar sus clases

de en la dll S

o DOM nive

bién permite

�����+�

deberemos

System.Data,

l 1 y nivel 2.

e representa

�� �� �

importar el

, en concreto

Estas clases

ar las relacion

���� @AC

o con

nes

C

www.depurando.com 191

Page 192: ASP .NET Framework 3.5

Tra

XmlRepre(DOMde árdocupued

<?xm

<b

</

DentnodoDOMoperacódigmanimejorealiz

abajando

lDocumenesenta un doM) Level 1 y erbol en memmento. Dadoe utilizar com

ml version

books>

<book>

<auth

<pric

<pubd

</book>

<pubinfo>

<publ

<stat

</pubinfo

/books>

ro de la estruo, que se denM. La clase Xmaciones en ego XML en unpular los nodrado el rendzar lo siguien

con docu

ntocumento XMel Core DOMoria (caché)o que XmlDomo documen

n="1.0"?>

hor>Carson

ce format=

date>05/01

>

lisher>MSP

te>WA</sta

o>

uctura de losnomina objetmlDocumentl documenton archivo. Addos de tododimiento y lante:

umentos

ML. Esta clasM Level 2 delde un documocument impnto de origen

n</author>

="dollar">

1/2001</pu

Press</pub

ate>

s documentoto XmlNode.t, que extieno en conjuntdemás, la clael documentcapacidad d

XML

se implemenconsorcio Wmento XML yplementa lan de la clase

>

>31.95</pr

ubdate>

blisher>

os XML, cada. El objeto Xmde la clase Xo, (por ejemse XmlDocuto XML. Las cde uso y disp

���� ��

ta el Core DoW3C. DOM esy permite lainterfaz IXPaXslTransform

rice>

a círculo de emlNode es eXmlNode, adplo, cargarloment propoclases XmlNoonen de mét

�����+�

ocument Objla representexploraciónathNavigablem.

esta ilustracil objeto básimite métodoo en la memorciona un mode y XmlDotodos y prop

�� �� �

ject Modeltación en fory edición dee, también se

ón representico del árbolos para realizoria o guardaedio para veocument hanpiedades par

���� @AC

!

rmale

ta undezarar eler ynra

C

www.depurando.com 192

Page 193: ASP .NET Framework 3.5

La cladel ar

Crea

Crea

LoadAppesecun

Creanodo

versiLa ve

encoValor

standEste vel mé

Save

Attri……..

Parase va

AñadDocu

Podreun elméto

Finalm

//Dec

Obtenerreferenci

Recuperatexto de

ase XmlDocurchivo XML

ateElement(

ateAttribute

dXml(stringendChild(Xndarios de es

ateXmlDeclaXmlDeclara

ionrsión debe s

odingr del atributo

dalonevalor debe seétodo Save n

e(string) Gu

ibutes. Obtie

crear un docformando to

imos la declmento XML

emos utilizaremento XMLodo Append.

mente, con e

clare and crXmlDocumen

XmlElementint childCint grandC

acceso y moa de entidad

ar nodos comun nodo de e

ument tiene u

(string) Cre

e(string) Cr

g) Carga el d

XmlNode)Agste nodo.

aration(strtion con los

ser "1.0".

o de codifica

er "yes" o "nno escribe un

arda el docu

ene un objet

cument Xmlodo el docum

aración XMLcon el méto

r objetos deL a través de

el método Sa

reate new Xmnt xmlDoc

t el; Counter;ChildCounter

odificar nodod, etc.

mpletos, adeelemento.

una serie de

ea un eleme

rea un atrib

documento X

grega el nodo

ring versionvalores espe

ción

no". Si es refen atributo ind

umento XML

to XmlAttrib

Nuevo, utilizmento.

L y creamos edo AppendC

la clase XmlEe la colección

ave(), guarda

lDocumentnew XmlDocum

;

s específicos

más de la inf

métodos m

ento con el n

uto con el n

XML desde la

o especificad

n, string enecificados

erencia nulldependiente

en la ubicac

uteCollectio

zamos el obje

el elementoChild().

Element, Xmn Attributes,

amos el arch

ment();

���� ��

s de DOM, co

formación qu

uy importan

nombre espe

nombre espe

cadena espe

do al final de

coding, stri

(Nothing ene en la declar

ción especific

n que contie

eto XmlDocu

raíz. Que los

mlAttribute. Lque es una X

ivo XML

�����+�

omo nodos d

ue contiene

tes para crea

ecificado

ecificado

ecificada.

e la lista de n

ing standal

Visual Basicración XML.

cada.

ene los atribu

ument, a par

s iremos aña

Los atributosXmlAttribute

�� �� �

de elemento

el nodo, com

ar el conteni

nodos

lone) Crea u

) o String.Em

utos de este

rtir de este o

diendo al

s los añadimoeCollection, c

���� @AC

", de

mo el

ido

un

mpty,

nodo

objeto

os acon el

C

www.depurando.com 193

Page 194: ASP .NET Framework 3.5

//Recabsol

Este c

<?xml<myRo <my

<<<

</m <my

<<<

</m <my

<<<

</m <my

<<<

</m</myR

RecoCon Xrecur

Llama

prote {

//Create t xmlDoc.App xmlDoc.Cr

//Create t el xmlDo xmlDoc.App

//Child Lofor (child

{ XmlElemXmlAttr

//Creat childel childat childat childel

//Appen el.Appe

for (gr {

//Cr chil } }

//Save to cupera la ruluta o relat xmlDoc.Sav lbl.Text

código gene

l version "1oot>yChild ID "1<GrandChild<GrandChild<GrandChildmyChild>yChild ID "2<GrandChild<GrandChild<GrandChildmyChild>yChild ID "3<GrandChild<GrandChild<GrandChildmyChild>yChild ID "4<GrandChild<GrandChild<GrandChildmyChild>Root>

orrer NodXmlDocumenrsividad

amos al mét

ected void B

lbl GetL

the xml declpendChild(reateXmlDecl

the root nodoc.CreateElempendChild(el

oopdCounter 1

ment childelmribute child

te child witmt xmlDoc

ttr xmlDocttr.Value mt.Attribut

nd element iendChild(chirandChildCou

reate grandcdelmt.Appen

fileuta de accestiva, o una ve(MapPath("

"XmlDocume

ra el siguient

.0" encodin

">/>/>/>

">/>/>/>

">/>/>/>

">/>/>/>

dos de unnt podemos

odo recursiv

Button2 Clic

Label(275, 2

aration firs

aration("1.0

e and appendment("myRoot);

; childCount

mt;attr;

h ID attribu.CreateEleme.CreateAttrichildCounteres.Append(ch

nto the rootldelmt);nter 1; gr

hildrendChild(xmlDo

o física a lruta de acceXmlDocumentTntTest.xml C

te archivo XM

g "utf 8"?>

documens recorrer cad

vo pasándole

k(object sen

0);

st

0", "utf 8",

d into doc t");

ter < 4; ch

uteent("myChildibute("ID");r.ToString()hildattr);

t element

randChildCou

oc.CreateEle

la que está eso relativaTest.xml"));Created";

ML

nto XMLda uno de lo

e el elemento

nder, EventA

���� ��

, null));

hildCounter+

d");;);

unter < 3;

ement("Grand

asignada una a la aplic;

s nodos del d

o raíz (Docum

Args e)

�����+�

++)

grandChildC

dChild"));

na ruta de acación

documento,

mentElemen

�� �� �

Counter++)

acceso virtu

utilizando

nt)

���� @AC

)

al

C

www.depurando.com 194

Page 195: ASP .NET Framework 3.5

}

pu {

}

pu {

}

Reco

La ClPropo

Méto

Move

Move

Move

Move

Move

Move

Move

Move

Move

Move

XmlDocumen xmlDoc.Loa RecurseNod

ublic void R

//start re RecurseNod

ublic void R

string s; s string

new strforeach (X

{ s + st } lbl.Text +foreach (X

{ Recurse }

orrer Nodos

lase XPathNorciona un m

odo

eTo

eToChild

eToDescend

eToFirst

eToFirstChild

eToFollowin

eToId

eToNext

eToParent

eToPrevious

nt xmlDoc ad(MapPath("des(xmlDoc.D

RecurseNodes

ecursive loopdes(node, 0)

RecurseNodes

g.Format("{0ring(' ', levXmlAttribute

tring.Format

+ s + "<br>XmlNode n in

eNodes(n, lev

s de un Doc

Navigatormodelo de cu

Descr

Muevespec

Muev

ant Muev

Muev

d Muev

g Muevdocum

Muevcon u

Muevactua

Muev

s Muevactua

new XmlDocumXmlDocumentTocumentEleme

(XmlNode nod

p with level;

(XmlNode nod

} <b>Type:</vel), node.Nattr in nod

("{0} {1} ",

";node.ChildN

vel + 1);

cumento XM

ursor para de

ripción

ve XPathNavcificado.

ve XPathNav

ve XPathNav

ve XPathNav

ve XPathNav

ve XPathNavmento.

ve XPathNavun valor que

ve XPathNaval.

ve XPathNav

ve XPathNaval.

ment();Test.xml"));ent);

de)

l 0

de, int leve

/b>{1} <b>NaNodeType, node.Attribute

, attr.Name,

Nodes)

ML con XPa

esplazarse y

vigator a la m

vigator a un

vigator a un

vigator al pri

vigator al pri

vigator al ele

vigator al nocoincide con

vigator al sig

vigator al no

vigator al no

���� ��

;

el)

ame:</b>{2}ode.Name);es)

, attr.Value

th

editar datos

misma posició

nodo secund

nodo descen

mer nodo re

mer nodo se

emento espe

do que tienen la String es

uiente nodo

do principal

do relaciona

�����+�

<b>Attr:</b

e);

XML.

ón del XPath

dario del nod

ndiente del n

elacionado de

ecundario de

cificado en e

e un atributopecificada.

relacionado

del nodo act

do anterior

�� �� �

b> ",

hNavigator

do actual.

nodo actual.

el nodo actu

el nodo actua

el orden del

o del tipo ID

o del nodo

tual.

del nodo

���� @AC

�*

ual.

al.

C

www.depurando.com 195

Page 196: ASP .NET Framework 3.5

Move

Move

Move

Move

ParaXmlDy a pa

prote {

}

pu {

}

pu {

}

Obte

XmlD

using

using

eToRoot

eToAttribute

eToFirstAttrib

eToNextAttri

recorrer unDocument quartir de este

ected void B

lbl GetLXmlDocumen

xmlDoc.Loa

XPathNavig xpathNav.M RecurseNav

ublic void R

//start re RecurseNav

ublic void R

string s

s stringnew st

if (node.H { node.Mo

do { s + } while

node.Mo }

lbl.Text +

if (node.H { node.Mo

do { Recu } while node.Mo }

ener un Elem

Document.G

g System;

g System.Xml

Muev

bute

bute

documentoue crea un nuobjeto pode

Button3 Clic

Label(275, 2nt xmlDoc ad(MapPath("

gator xpathNMoveToRoot()vNodes(xpathN

RecurseNavNo

ecursive loopvNodes(node,

RecurseNavNo

null;

g.Format("{0tring(' ', l

HasAttribute

oveToFirstAt

string.Forme (node.Move

oveToParent(

+ s + "<br>

HasChildren)

oveToFirstCh

urseNavNodese (node.MoveoveToParent(

mento por

GetElementB

;

ve XPathNav

Xml con XPauevo objetoer desplazarn

k(object sen

0);new XmlDocumXmlDocumentT

av xmlDoc;Nav);

des(XPathNav

p with level0);

des(XPathNav

} <b>Type:</evel), node

s)

tribute();

mat("{0} {1ToNextAttrib

);

";

ild();

(node, levelToNext()););

ID

ById(string

vigator al no

ath, usaremoXPathNaviganos por todo

nder, EventA

ment();Test.xml"));

.CreateNavig

vigator node

l 0

vigator node

/b>{1} <b>Na.NodeType, n

} ", node.Nabute());

l + 1);

g) Obtiene el X

���� ��

do raíz del d

os el métodoator para desos los nodos

Args e)

;

gator();

e)

e, int level

ame:</b>{2}node.Name);

ame, node.Va

XmlElement c

�����+�

ocumento X

CreateNavigsplazarse po

l)

<b>Attr:</b

alue);

on el identific

�� �� �

ML.

gator() delr este docum

b> ",

ador especific

���� @AC

mento

cado

C

www.depurando.com 196

Page 197: ASP .NET Framework 3.5

publi

{

pub

{

X

d

/

/

X

C

/

/

e

C

}

}

Selec

XmlNexpre

ic class Sam

blic static

XmlDocument

doc.Load("id

//Get the fi

//This displ

XmlElement e

Console.Writ

//Get the fi

//This displ

elem doc.G

Console.Writ

lbl Getstring s; //DeclareXmlDocumen

xmlDoc.Loa

XmlNode no node xml

s string node.Node

foreach (X { s + st } lbl.Text

ctSingleNod

Node.SelectSesión XPath.

lbl Getstring s; //DeclareXmlDocumen

xmlDoc.Loa

XmlNode no node xml

s string node.Node

foreach (X { s + st } lbl.Text

mple

void Main()

doc new Xm

ds.xml");

rst element

ays the nod

elem doc.G

teLine( elem

rst element

ays the nod

GetElementBy

teLine( elem

tLabel(275,

and create nt xmlDoc ad(MapPath("

ode;Doc.GetElem

g.Format("<beType, node.N

XmlAttribute

tring.Format

s + "<br>"

de

SingleNode

tLabel(275,

and create nt xmlDoc ad(MapPath("

ode;Doc.SelectS

g.Format("<beType, node.N

XmlAttribute

tring.Format

s + "<br>"

mlDocument()

with an att

e <Person SS

etElementByI

.OuterXml );

with an att

e <Person SS

Id("A222");

.OuterXml );

20);

new XmlDocumnew XmlDocumXmlSample.xm

entById("ref

>Type:</b>{0Name);

a in node.A

("{0} {1} ",

;

e (String). Se

20);

new XmlDocumnew XmlDocumXmlSample.xm

ingleNode("/

>Type:</b>{0Name);

a in node.A

("{0} {1} ",

;

);

tribute of t

SN "A111" Na

Id("A111");

;

tribute of t

SN "A222" Na

;

mentment();ml"));

f 3");

0} <b>Name:<

Attributes)

, a.Name, a.

elecciona el

mentment();ml"));

//myChild[@C

0} <b>Name:<

Attributes)

, a.Name, a.

���� ��

type ID and

ame "Fred"/>

type ID and

ame "Tom"/>.

</b>{1} <b>A

.Value);

primer XmlN

ChildID 'ref

</b>{1} <b>A

.Value);

�����+�

value of A1

>.

value of A2

Attr:</b>",

Node que coin

f 3']");

Attr:</b>",

�� �� �

11.

22.

ncide con la

���� @AC

��

C

www.depurando.com 197

Page 198: ASP .NET Framework 3.5

GetE

XmlDcontiespec

//Cre

X

d

/

X

f

{

}

Selec

XmlNexpre

XmlDo

d

X

X

n

/

f

{

}

C

d

ElementByT

Document.Gene una listacificado

lbl Getstring s;

//DeclareXmlDocumen

xmlDoc.Loa

XmlNodeLis elmts xm

foreach (X { s str node.N lbl.Tex }

eate the Xml

XmlDocument

doc.Load("bo

//Display al

XmlNodeList

for (int i 0

{

Console.Wr

}

ctNodes

Node.SelectNesión XPath

ocument doc

doc.Load("bo

XmlNodeList

XmlNode root

nodeList roo

//Change the

foreach (Xml

{

book.LastC

}

Console.Writ

doc.Save(Con

string s;

TagName

GetElementa de todos lo

tLabel(275,

and create nt xmlDoc ad(MapPath("

t elmts; mlDoc.GetElem

XmlNode node

ring.Format(NodeType, noxt + s + "<b

Document.

doc new Xm

ooks.xml");

l the book

elemList

; i < elemL

riteLine(elem

Nodes (Stri

new XmlDo

ooksort.xml"

nodeList;

t doc.Docum

ot.SelectNod

e price on t

Node book i

Child.InnerT

teLine("Disp

nsole.Out);

tsByTagNaos elementos

20);

new XmlDocumnew XmlDocumXmlSample.xm

mentsByTagNa

in elmts)

"<b>Type:</bde.Name);br>";

mlDocument()

titles.

doc.GetEleme

ist.Count; i

mList[i].Inn

ing). Selecci

cument();

);

mentElement;

es("descenda

he books.

n nodeList)

ext "15.95";

lay the modi

me (Strings descendien

mentment();ml"));

ame("myGrand

b>{0} <b>Nam

);

entsByTagNam

i++)

nerXml);

iona una list

;

ant::book[au

;

ified XML do

���� ��

g). Devuelventes que coin

dChild");

me:</b>{1}",

me("title");

ta de nodos q

uthor/last n

ocument...."

�����+�

un objeto Xnciden con e

que coincide

name 'Austen

");

�� �� �

mlNodeList ql Name

en con la

n']");

���� @AC

��que

C

www.depurando.com 198

Page 199: ASP .NET Framework 3.5

XPatlbl

Orde

//DeclareXmlDocumen

xmlDoc.Loa

XmlNodeLis elmts xm

foreach (X { s str node.N lbl.Tex }

thNavigator GetLabel(2string s; XPathDocumXPathNavig

string exp

//DisplayXPathNodeIXPathNavigwhile (ite

{ s Str navRes

if (nav { navR s +

do { s

} wh }

lbl.Tex }

nando

lbl Getstring s; XPathDocumXPathNavig

//Select aXPathExpre

expr nav

//Sort the expr.AddSo

XmlSortOrXmlCaseOrXmlDataTy

//DisplayXPathNodeIXPathNavigwhile (ite

{ s Str navRes

if (nav { navR s +

and create nt xmlDoc ad(MapPath("

t elmts; mlDoc.SelectN

XmlNode node

ring.Format(NodeType, noxt + s + "<b

r75, 20);

ment xmlDoc gator nav

pr "//myCh

the selectiterator ite

gator navReserator.MoveN

ring.Format(ult.NodeTyp

vResult.HasA

Result.MoveT"<b>Attr:<

+ String.navResult.N

hile (navRes

xt + s + "<b

tLabel(275,

ment xmlDoc gator nav

all myChild ession expr; v.Compile("/

e selected bort("@ChildIrder.Descendrder.None, "ype.Text);

the selectiterator ite

gator navReserator.MoveN

ring.Format(ult.NodeTyp

vResult.HasA

Result.MoveT"<b>Attr:<

new XmlDocumnew XmlDocumXmlSample.xm

Nodes("//myG

in elmts)

"<b>Type:</bde.Name);br>";

new XPathDxmlDoc.Creat

ild[@ChildID

on.rator navult iteratext())

"<b>Type:</be, navResult

ttributes)

oFirstAttrib/b> ";

Format("{0}ame, navResuult.MoveToNe

br>";

20);

new XPathDxmlDoc.Creat

elements

/myChild");

ooks by titlD",ing,",

on.rator navult iteratext())

"<b>Type:</be, navResult

ttributes)

oFirstAttrib/b> ";

mentment();ml"));

GrandChild")

b>{0} <b>Nam

Document(MapteNavigator

D 'ref 3']";

.Select(exprtor.Current;

b>{0} <b>Namt.Name);

bute();

{1} ",ult.Value);extAttribute

Document(MapteNavigator

le.

.Select(exprtor.Current;

b>{0} <b>Namt.Name);

bute();

���� ��

);

me:</b>{1}",

pPath("XmlSa();

;

r);;

me:</b>{1} "

e());

pPath("XmlSa();

r);;

me:</b>{1} "

�����+�

ample.xml"))

",

ample.xml"))

",

�� �� �

;

;

���� @AC

��

C

www.depurando.com 199

Page 200: ASP .NET Framework 3.5

Xml

El objStringarchivAlgun

Writetextoseguiencod

Write

Writecon s

Writegenepued

Write

// CrFileS// EsXmlTeXmlTe

// LeoXML.

oXML.oXML.

"\httxmlns

oXML.oXML.oXML.DataSoXML.// InoXML.oXML.oXML.oXML.oXML.oXML.

oXML.

do { s

} wh } lbl.Tex }

lTextWri

jeto que escgBuilder u ovo físico) todnas caracterí

eProcessingIo que irá al pido de un espding="utf�8"

eStartEleme

eAttributeStsu valor. <Eti

eElementStrraría la siguie comproba

eEndElemen

reo el archiStream oFilestablezco elextWriterextWriter oX

e indico queFormatting

WriteProcesWriteStartE oXML

tp://schemass:rd \"http:

WriteStartEWriteStartEWriteAttrib

Source.WriteStartE

nserto etiquWriteElemenWriteElemenWriteElemenWriteEndEleWriteEndEleWriteEndEle

WriteEndEle

+ String.navResult.N

hile (navRes

xt + s + "<b

iter

ribe un archtro modo esdo el etiquetísticas de las

Instruction.�rincipio “<?[pacio. Con e"?>, que será

nt.� Escribe u

tring.� Esta pqueta Nomb

ring.� Escribeente etiquetren el ejemp

nt.� Esta prop

vo donde alme new File archivo y

XML new Xm

e se cree co Formattin

singInstrucElement("RepL.WriteAttrib.microsoft.//schemas.m

Element("DatElement("DatbuteString("N

Element("Conuetas que no ntString("InntString("ContString("Daement(); //ement(); //ement(); //

ement(); //

Format("{0}ame, navResuult.MoveToNe

br>";

ivo XML a pas el XmlTextWtado que nospropiedade

Esta propiedPrimer Textosto podemoá el encabeza

una etiqueta

ropiedad nobrePropiedad

e una etiquetta: <Nombreplo.

piedad cierra

macenaré mi Stream("UnaRla codificac

lTextWriter

n sangría log.Indented;

tion("xml",ort");buteString("com/sqlserveicrosoft.com

aSources");aSource"); /Name", "Nomb

nectionPropeson necesar

tegratedSecunnectString"taProvider",Cierro ConneCierro DataSCierro DataS

Cierro el re

{1} ",ult.Value);extAttribute

arte de haceWriter. Estesotros le indis del XmlTex

dad tiene doo] [segundo ts conseguir lado de nuest

a de apertura

os creará en ld=”ValorProp

ta de apertu>Valor</Nom

a una etiquet

infomre.Ruta\UnArchición al obje

(oFile, Enco

os nodos del

"version \"

"xmlns",er/reportingm/SQLServer/

// Abro Dat// Abro DatabreDS"); //

erties");rio cerrar.urity", "tru", " PARAMET, "SQL");ectionProperSource.Sources.

eport.

���� ��

e());

rlo nosotrosobjeto escribiquemosxtWriter son

os parámetrotexto]?>” y elo siguiente:tro informe.

a y necesitar

la anterior etpiedad”>. No

ra con un nombre>. No n

ta creada con

ivo.rdl", Fieto

oding.UTF8);

l xml..

"1.0\" encod

g/2005/01/re/reporting/r

taSources.aSource.Inserto pro

ue");TERS!RPTCADE

rties.

�����+�

a mano conbe sobre un

:

os el primeroel segundo d<?xml versio

rá ser cerrad

tiqueta unao necesita se

ombre y su vaecesita ser c

nWriteStarE

ileMode.Crea

ding \"utf 8

eportdefinitreportdesign

opiedad dent

ENACONEX.Val

�� �� �

un simple SFileStream(u

o correspondespués de eson="1.0"

a después

propiedad der cerrado.

alor. Estocerrado como

Element

ate);

\"");

tion\ner\"");

tro de etiqu

ue");

���� @AC

��

tring,un

de a elste

entro

o se

eta

C

www.depurando.com 200

Page 201: ASP .NET Framework 3.5

// VuoXML.oFile

El res

<?xml<Repoxmlns

<Da<

<</D

</Rep

string

<futb <ju

<<

</j <ju

<<

</j

uelco el bufFlush();

e.Close();

sultado será:

l version "1ort xmlns hts:rd "http:/ataSources><DataSource

<Connectio<Integra<Connect<DataPro

</Connecti</DataSourceDataSources>port>

g path = Serveusing (XmlTex{

writer.Form

writer.Writ writer.Writ

writer.Writ writer.Writ writer.Writ writer.Writ writer.Writ writer.Writ writer.Writ

writer.Writ writer.Writ writer.Writ writer.Writ

writer.Writ writer.Writ writer.Writ

writer.Writ writer.Writ

writer.Clos}

olistas> ugador pais="<nombre>Dav<equipo>Valejugador>ugador pais="<nombre>Leo<equipo>Barcjugador>

ffer.

:

.0" encodinttp://schema/schemas.mi

Name "NombronPropertiesatedSecuritytString> PARAovider>SQL</onPropertie

e>>

er.MapPath("~xtWriter write

matting = Form

teStartDocumeteStartElemen

teStartElementeAttributeStriteElementStrinteStartElementeString("ValeteEndElementteEndElement

teStartElementeAttributeStriteElementStrinteStartElementeString("BarcteEndElementteEndElement

teEndElementteEndDocumen

se();

"España"> vid Villa</nomencia C.F.</no

"Argentina"> o Messi</nomcelona F.C.</e

g "utf 8"?>s.microsoftcrosoft.com/

eDS">>>true</IntegAMETERS!RPTCDataProviders>

~/futbolistas.xer = new XmlT

matting.Inden

ent(); nt("futbolistas

nt("jugador");ing("pais", "Esng("nombre",nt("equipo");encia C.F.");();();

nt("jugador");ing("pais", "Arng("nombre",nt("equipo");celona F.C.");();();

();nt();

mbre> ombre>

mbre> equipo>

.com/sqlserv/SQLServer/r

gratedSecuriCADENACONEX.r>

xml"); TextWriter(pa

nted;

");

spaña"); "David Villa")

rgentina"); "Leo Messi");

���� ��

ver/reportinreporting/re

ity>.Value</Conn

th, Encoding.U

);

;

�����+�

ng/2005/01/reportdesigne

nectString>

UTF8))

�� �� �

reportdefinier">

���� @AC

��

tion

C

www.depurando.com 201

Page 202: ASP .NET Framework 3.5

</futb

<?xml<! X<Empl

bolistas>

XmlTextWrXmlTextWri

System.Tex

xmlWriter. xmlWriter.

xmlWriter. xmlWriter.

DateTim

xmlWriter.

//New Empl xmlWriter. xmlWriter. xmlWriter. xmlWriter. xmlWriter.

xmlWriter.XmlConvXmlDate

xmlWriter. xmlWriter. xmlWriter. xmlWriter. xmlWriter. xmlWriter.

//Address xmlWriter.//Employee

xmlWriter.

//New Empl xmlWriter. xmlWriter. xmlWriter. xmlWriter. xmlWriter.

xmlWriter.XmlConvXmlDate

xmlWriter. xmlWriter. xmlWriter. xmlWriter. xmlWriter. xmlWriter.

//Address xmlWriter.//Employee

xmlWriter.

//Employee xmlWriter. xmlWriter.

Response.R

l version "1XmlTextWriteloyeeList><Employee E <HireD

riter xmlWriter(MapPath

xt.Encoding.

FormattingIndentation

WriteStartDWriteCommen

me.Now.ToSho

WriteStartE

oyeeWriteStartEWriteAttribWriteAttribWriteAttribWriteAttrib

WriteElemenvert.ToStrineTimeSeriali

WriteStartEWriteElemenWriteElemenWriteElemenWriteElemenWriteElemen

WriteEndElemeWriteEndElem

oyeeWriteStartEWriteAttribWriteAttribWriteAttribWriteAttrib

WriteElemenvert.ToStrineTimeSeriali

WriteStartEWriteElemenWriteElemenWriteElemenWriteElemenWriteElemen

WriteEndElemeWriteEndElem

eListWriteEndElemClose();

Redirect("Emp

.0" encodiner Test Date

EmpID "1" LaDate>2003 01

iter new("EmployeeLiUTF8);

Formatting 5;

ocument();t("XmlTextWrrtDateString

lement("Empl

lement("EmpluteString("EuteString("LuteString("FuteString("S

tString("Hirg(DateTime.PzationMode.U

lement("AddrtString("StrtString("StrtString("CittString("StatString("Zip

ment();

ment();

lement("EmpluteString("EuteString("LuteString("FuteString("S

tString("Hirg(DateTime.PzationMode.U

lement("AddrtString("StrtString("StrtString("CittString("StatString("Zip

ment();

ment();

ment();

ployeeList.x

g "utf 8"?>: 09/03/2009

stName "JoeL01T00:00:00

ist.xml"),

g.Indented;

riter Test Dg());

loyeeList");

loyee");EmpID", "1")LastName", "FirstName",Salary", Xml

reDate",Parse("1/1/2Unspecified)

ress");reet1", "123reet2", "");ty", "MyCityate", "OH");pCode", "123

loyee");EmpID", "2")LastName", "FirstName",Salary", Xml

reDate",Parse("1/2/2Unspecified)

ress");reet1", "234reet2", "");ty", "MyCityate", "OH");pCode", "234

xml");

9 >

Last" FirstN0</HireDate>

���� ��

Date: " +

;

);"JoeLast");"Joe");

lConvert.ToS

2003"),));

3 MyStreet");y");;345");

);"MaryLast");"Mary");

lConvert.ToS

2003"),));

4 MyStreet");y");;456");

Name "Joe" S>

�����+�

String(50000

;

String(40000

;

Salary "5000

�� �� �

));

));

0">

���� @AC

�!

C

www.depurando.com 202

Page 203: ASP .NET Framework 3.5

</Emp

XmlXmlTuna slectoreflej

<Addre<<<<<

</Addr</Employee><Employee E <HireD <Addre

<<<<<

</Addr</Employee>

ployeeList>

lTextReaTextReader psecuencia der. Para avanzjan el valor d

lbl GetXmlTextRea

XmlText

while (xml {

switch {

casecasecase

{

}case

{

} }

if (xml {

whil {

s s

l } } } xmlReader.

ess><Street1>123<Street2 /> <City>MyCity<State>OH</S<ZipCode>123ress>>EmpID "2" LaDate>2003 02ess><Street1>234<Street2 /> <City>MyCity<State>OH</S<ZipCode>234ress>>

aderproporcionae datos XML.zar el lector,del nodo actu

tLabel(275,ader xmlReadtReader(MapP

Reader.Read

(xmlReader.N

e XmlNodeType XmlNodeType XmlNodeTyp

string s; s Strin xmlRea xmlRea xmlRea lbl.Text

break;

e XmlNodeTyp

string s; s Strin xmlReade lbl.Text

break;

Reader.HasA

e (xmlReade

tring s; String.FxmlReader.Nbl.Text +

Close();

MyStreet</S

</City>tate>45</ZipCode>

stName "Mary01T00:00:00

MyStreet</S

</City>tate>56</ZipCode>

acceso de sóEl nodo actuutilice cualqual.

20);er newath("Employe

())

NodeType)

e.XmlDeclarae.Element:e.Comment:

g.Format("{0der.NodeTypeder.Name,der.Value);+ s;

e.Text:

g.Format("r.Value);+ s;

ttributes)

r.MoveToNext

ormat(" Atame, xmlReads;

Street1>

>

yLast" First0</HireDate>

Street1>

>

ólo lectura yual hace refequiera de los

eeList.xml")

ation:

0}: {1} {2e,

Value: {0}

tAttribute()

ttribute: {0der.Value);

���� ��

tName "Mary">

con desplazaerencia al nos métodos de

));

2}<br>",

}<br>",

))

0} {1}<br>

�����+�

" Salary "40

amiento sólodo en el quee lectura y la

>",

�� �� �

000">

o hacia delane está situados propiedade

���� @AC

�"

nte ao eles

C

www.depurando.com 203

Page 204: ASP .NET Framework 3.5

ModCuanquere

Cuan

ValiLa claXmlR

prote{ lb

if {

} el

{

} }

priva{

Xm xm xm

XmXmtr

{

} ca

{

} fi

{

} }

dificar undo el objetoemos borrar

do queremo

//DeclareXmlDocumen

xmlDoc.Loa

//delete aXmlNode no

node xml node.Paren

//create aXmlElement

xmlDoc. node xml node.Paren xmlDoc.Sav Response.R

idar Docuase XmlReadReader cread

ected void B

bl GetLabef (ValidateD

lbl.Text +

lse

lbl.Text +

ate bool Val

mlReaderSettmlSet.ValidamlSet.ProhibmlReader vr mlDocument xry

xd.Load(vrreturn tru

atch (Except

lbl.Text +return fal

inally

vr.Close()

n DocumXmlDocumeun nodo, sim

os insertar un

and load newnt xmlDoc ad(MapPath("

a mode ode;Doc.SelectS

ntNode.Remov

a node and at newElement CreateElemeDoc.SelectS

ntNode.Inserve(MapPath("Redirect("Xm

umentoserSettings Eso mediante

Button14 Cli

el(275, 20); Document(Map

+ "Valid Do

+ "Invalid

idateDocume

tings xmlSet ationType VbitDtd fal

XmlReaderxd new Xml

r);ue;

tion ex)

+ ex.Messagse;

;

ento XMLent está cargmplemente t

n nodo, busc

w XmlDocumennew XmlDocumXmlSample.xm

ingleNode("/eChild(node)

dd it

nt("myNewEleingleNode("/tAfter(newElXmlSampleModlSampleModif

s XMLspecifica unel método C

ck(object se

Path("XmlBad

cument<br />

Document<br

nt(string fi

new XmlReValidationTyse;.Create(fileDocument();

e + "<br />"

Lgado en memtenemos que

camos la loca

ntment();ml"));

//myChild[@C);

ement");//myChild[@Clement, nodedified.xml")fied.xml");

conjunto deCreate.

ender, Event

dSample.xml"

>";

/>";

ileName)

eaderSettingype.DTD;

eName, xmlSe

";

���� ��

moria, es muye posicionarn

alización apro

ChildID 'ref

ChildID 'refe);));

e característic

tArgs e)

")))

gs();

et);

�����+�

y fácil modifnos en su no

opiada e inse

f 3']");

f 1']");

cas compatib

�� �� �

ficarlo. Siodo padre.

ertamos el n

bles en el ob

���� @AC

�)

nodo.

bjeto

C

www.depurando.com 204

Page 205: ASP .NET Framework 3.5

Tes

1. Wh

2. Whty

t

hich class caA. XmlConvB. XmlDocuC. XmlNewD. XmlSettin

hich class caypes?

A. XmlType

B. XmlCast

C. XmlConv

D. XmlSettin

an be used tovert ument

ngs

an be used to

ert

ngs

create an XM

o perform dat

ML docume

ta type conv

���� ��

nt from scrat

version betwe

�����+�

tch?

een .NET dat

�� �� �

ta types and

���� @AC

�*

XML

C

www.depurando.com 205

Page 206: ASP .NET Framework 3.5

AApliicaccocioon .

��

��

��

<�

Mne.NE

���

���

����

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsET 3

� �?

�����

��

CTS:Web3.5

:b5

www.depurando.com 206

Page 207: ASP .NET Framework 3.5

��

<�

En ocen locontr

Los coque eelem

En esASP.N

Los copareclos coevent

���

�����

casiones, es ps controles droles. Dispon

Controlescolocar cocontrol d

Controlesdesarrolla

ontroles de ues posible reentos de inte

ste tema se pNET.

ontroles de ucido a los “arontroles de utos.

� ���

posible quede servidor Wne de dos op

s de usuario.ontroles de fe usuario co

s personalizaador que se

usuario sonutilizar los yaerfaz de usu

proporciona

usuario sonrchivos incluusuario son m

���+�

necesite cierWeb ASP.NETciones. Pued

. Los controleformato y deomo una unid

ados. Un conderiva de Co

mucho mása existentes.ario complej

información

páginas ASPde”, conocidmucho más p

�� �

rta funcionalT integradosde crear:

es de usuarioe servidor Wdad y definir

ntrol personaontrol o Web

fáciles de cre. Esto permitjos.

general sob

.NET que pudos por los ppotentes. So

���

�� �

lidad en un c. En estos ca

o son contenWeb. A contin

propiedade

alizado es unbControl.

ear que los cte crear con

bre el uso de

eden reutilizrogramadorn compatible

�� �? � ��

����

control que nasos, puede c

nedores en louación pueds y métodos

na clase escri

controles perfacilidad con

los controle

zarse desde oes de Asp y Pes con las pr

������ ��

���� �

no está inclucrear sus pro

os que puedde tratar elpara el mism

ta por un

rsonalizadosntroles con

es de usuario

otras páginaPhp. Sin embropiedades y

� <�����

���

idaopios

e

mo.

, ya

o

s. Esbargo,los

www.depurando.com 207

Page 208: ASP .NET Framework 3.5

ParCon Vdispogenedemá

Para

1

2

3

a crear uVisual Studioone de un elera lo que serás paginas de

crear un con

1. Si no teneASP.NET”

2. Para creaComponede usuari

3. Se nos crcomponeserá susti

un controo .Net es la foemento pararía como unael sitio, reuti

ntrol de usua

emos un pro”.

ar el control dente…” En esio Web. Le in

eara un nuevente es comoituido en los

ol de usuaorma más sea ello en el ma página Weblizando así e

ario seguirem

oyecto cread

de usuario, vste wizard sendicamos el n

vo fichero coo si se trataselugares don

ario en Vencilla de conmenú de Agreb normal perel código.

mos los siguie

o, creamos u

vamos a la oeleccionamonombre que

on el nombree de una págnde usemos e

���

Visual Stunstruir un coegar. Con estro la cual se

entes pasos.

un proyecto

pción Archivs que queremva a tener n

e seleccionadgina Web. Elel control.

�� �? � ��

udio .NETntrol de usuta opción deva a poder im

de “Aplicació

vo �> Agregarmos crear unnuestro comp

do con extencontenido d

������ ��

T.ario, ya quemenú se nomportar en l

ón Web de

r Nuevon nuevo contponente.

nsión “.ascx”de esta págin

� <�����

sas

trol

”. Estena

www.depurando.com 208

Page 209: ASP .NET Framework 3.5

Con enuestarrasdentr

Esto g

<%@

Con elo vam

<Ban

EstrUn co.aspxde usagregde ustarea

Un co

esto podemotras páginastrar el ficherro de nuestra

genera el sig

Register Tag

esto estamosmos a usar b

coASPNET:E

ructura dontrol de usux) e incluye usuario es mugan el formatsuario puedeas como el en

ontrol de usu

La extens

En lugar dControl q

os crear nuesWeb. Para pro del “Exploa página web

guiente códig

gPrefix=”Ban

s diciendo qubajo en nomb

ncabezado r

de los conuario Web ASna página dey similar al pto y los conte incluir el cónlace de dato

uario se difer

sión de nomb

de una direcque define la

stros controlpoder usar elorador de solb.

go:

coASPNET” T

ue la paginabre de Banco

runat=”serve

ntroles dSP.NET es sime interfaz deproceso de crtroles secundódigo necesaos.

rencia de un

bre de archiv

tiva @ Page,configuració

les y reutilizal control en oluciones” al l

TagName=”E

a utilizar unoASPNET:Enc

er”/>

de usuariomilar a una pe usuario y córeación de udarios necesario para man

a página We

vo para el co

, el control dón y otras pr

���

ar todo el cóotra pagina wlugar donde

Encabezado”

fichero llamcabezado.

opágina Web Aódigo. El prona página ASarios. Al iguanipular su co

eb ASP.NET e

ontrol de usu

de usuario coropiedades.

�� �? � ��

digo que queweb solo tenqueremos c

” Src=”encab

mado “encabe

ASP.NET comceso de creaSP.NET, sóloal que una páontenido e in

en los siguien

uario es .ascx

ontiene una d

������ ��

eramos ennemos queolocar el con

bezado.ascx”

ezado.ascx”

mpleta (archiación del conque al finalágina, un conncluso realiza

ntes aspecto

x.

directiva @

� <�����

ntrol

”%>

y que

ivontrolsentrolar

s:

www.depurando.com 209

Page 210: ASP .NET Framework 3.5

En unformcontrcontrboton

<%@ C

<scrippp{

}

p{

}

p{

}

p{

}</scr

<asp:<asp:OnCli<asp:OnCli

Los contrlugar, deb

El controdeben es

n control de) y controlesrol de usuariroles de servnes.

Control Lang

ipt runat "sprotected inprotected Stprotected vo{

if (IsPo { curr

} else

{ curr Disp }

}

protected vo{ textColo ViewStat

}

protected vo{

if(curre { curr }

else { curr } DisplayC

}

protected vo{

if(curre { curr }

else { curr } DisplayC

}ript>

TextBox IDButton Font

ick "buttonUButton Font

ick "buttonD

roles de usuabe agregarlo

l de usuariotar en la pág

usuario pueds Web que eno para utilizavidor Web Bu

guage "C#" C

erver">nt currentCotring[] colooid Page Loa

ostBack)

rentColorIndInt16.Parse

rentColorIndplayColor();

oid DisplayC

or.Text cote["currentC

oid buttonUp

entColorInde

rentColorInd

rentColorInd

Color();

oid buttonDow

entColorInde

rentColorInd

rentColorInd

Color();

"textColor"t Bold "TrueUp Click" />t Bold "TrueDown Click"

ario no se puos a las págin

no contienegina de aloja

de utilizar lon una páginaar una barrautton en el co

lassName "Us

lorIndex;rs {"Red",d(object sen

ex (ViewState["

ex 0;

olor()

lors[currentolorIndex"]

Click(objec

x 0)

ex colors

ex 1;

wn Click(obj

x (colors

ex 0;

ex + 1;

runat "serv" ID "button

" ID "button/>

ueden ejecutnas ASP.NET,

elementos hmiento.

s mismos elea Web ASP.Nde herramieontrol y crea

serControl1"

, "Blue", "Gnder, EventA

"currentColo

tColorIndex] currentCo

ct sender, E

.Length 1;

ject sender,

s.Length 1

ver" ReadOnlnUp" runat "

nDown" runat

���

ar como arccomo haría

html, body o

ementos HTMNET. Por ejementas, puedear controlado

" %>

Green", "YelArgs e)

orIndex"].To

];olorIndex.To

EventArgs e)

;

, EventArgs

1))

ly "True" />"server" Tex

t "server" T

�� �? � ��

hivos indepecon cualquie

o form. Estos

ML (exceptomplo, si estáe colocar unaores de even

llow"};

oString());

oString();

e)

>xt "^"

Text "v"

������ ��

endientes. Ener otro contr

s elementos

html, bodycreando una serie dentos para los

� <�����

�n surol.

y

www.depurando.com 210

Page 211: ASP .NET Framework 3.5

InclPararecibpor to

1

2

3

En elusuarcontrpropi

<%@ P<%@ R

S<html<body<form

<

</for</bod

Otrasoluc

Defi

luir un coutilizar un coe una solicitodas las fase

1. En la págsiguiente

� UEu

� UEu

� Uc

2. En el cueelemento

3. Si el contmediante

ejemplo sigurio. Éste se erol se registriedades MinV

Page LanguagRegister TagSrc "~\Contrl>y>m id "Form1"<uc:Spinner

runat "sMinValueMaxValue

rm>dy>

posibilidad eciones al form

finir prop

ontrol deontrol de usuud de una páes de procesa

ina Web ASPe:

Un atributo TEste prefijo susuario.

Un atributo TEste nombreusuario.

Un atributo Scontrol de us

rpo de la págo form.

rol de usuare declaración

uiente se muencuentra ena para que uValue y Max

ge "C#" %> gPrefix "uc"rols\Spinner

runat "servid "Spinnererver"

e "1"e "10" />

es simplememulario en el

piedades

e usuariouario, éste dágina y éstaamiento que

P.NET conten

TagPrefix, que incluirá en

TagName, quse incluirá e

Src, que permuario que se

gina Web, de

io expone prn.

uestra una pn el archivo Sutilice el prefxValue del co

TagName "Sp.ascx" %>

ver">1"

nte arrastrarl que se quie

y métod

o en una pebe incluirsecontiene une realizan los

nedora, cree

ue permite asla etiqueta

ue permite aen la etiqueta

mite definir lae va a incluir.

eclare el elem

ropiedades p

ágina Web ASpinner.ascxfijo uc y el noontrol de usu

pinner"

r el control dere incluir

dos para u

���

página We en una págcontrol de u

s controles de

una directiv

sociar un prede apertura

sociar un noa de apertura

a ruta de acc.

mento de co

públicas, tam

ASP.NET quede la carpetombre de etiuario se estab

de usuario de

un contro

�� �? � ��

Web ASP.Ngina Web ASPusuario, diche servidor AS

va @ Registe

efijo al contrdel element

ombre al conta del elemen

ceso virtual a

ontrol de usu

mbién puede

contiene una Controls. Equeta Spinnblecen media

esde el explo

ol de usu

������ ��

NETP.NET. Cuando control paSP.NET.

er que incluya

rol de usuarioto del contro

trol de usuanto del contr

al archivo de

uario dentro

establecerla

n control deEn la página,er. Lasante declara

orador de

uario

� <�����

�do sesa

a lo

o.ol de

rio.rol de

el

del

as

el

ación.

www.depurando.com 211

Page 212: ASP .NET Framework 3.5

Puedharíaestab

MyCousingusingusingusingusingusingusingusingusingusingpubli{

p{

}p{

}}

MyCo<%@ P

I

<%@ R

<!DOCTrans<html<head

<</hea<body

<<

/>&nb

<<

</bod</htm

MyCousingusingusingusingusingusingusingusingusingusingpubli{

e definir propara una pá

blecer sus pro

ontrol.ascxg System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

public strin{

get { reset { lb

}public strin{

get { reset { tx

}

ontrolPropPage LanguagInherits "My

Register Src

CTYPE html Psitional//ENl xmlns "httd id "Head1"<title>Untitad>y><form id "fo<div>

<br /><asp:But

bsp;<br /><br /><uc1:MyC<br /><br /><asp:Lab<br /><br />

</div></form>dy>ml>

ntrolPropertyg System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

opiedades y mágina. La defiopiedades m

x

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass MyCont

ng UserCapti

eturn lblNamblName.Text

ng UserName

eturn txtNamxtName.Text

pertyTest.asge "C#" AutoyControlProp

c "MyControl

PUBLIC " //WN""http://wwwtp://www.w3.

runat "servtled Page</t

orm1" runat

tton ID "But

Control ID "M

bel ID "Labe

yTest.aspx.cs

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass MyCont

métodos parinición de unmediante dec

rols;rols.WebParttrols;rol : System

on

e.Text; } value; }

e.Text; } value; }

spxEventWireupertyTest" %>

.ascx" TagNa

3C//DTD XHTMw.w3.org/TR/org/1999/xhtver">itle>

"server">

ton1" runat

MyControl1"

l1" runat "s

rols;rols.WebParttrols;rolPropertyT

ra un controlna propiedadclaración y en

ts;

m.Web.UI.Use

"true" Code>

ame "MyContr

ML 1.0 /xhtml1/DTD/tml">

"server" Te

runat "serv

server"></as

ts;

Test : Syste

���

l de usuariod para un conn el código.

erControl

eFile "MyCon

rol" TagPref

/xhtml1 tran

ext "Get Nam

ver" />

sp:Label>

em.Web.UI.Pa

�� �? � ��

de la mismantrol de usua

ntrolPropert

fix "uc1" %>

nsitional.dt

me" OnClick

age

������ ��

manera queario permite

tyTest.aspx.

>

td">

"Button1 Cl

� <�����

!e lo

cs"

ick"

www.depurando.com 212

Page 213: ASP .NET Framework 3.5

p{

}p{

}}

EveSi undichoejemcontr

Fiche<%@ CInher<asp:<asp:<br /<asp:

Códiusingusingusingusingpubli{

p{

}}

CargAl igudinám

usingusingusingusingusingusingusingusingusingusingpubli{

p{

}}

protected vo{ MyContro

}protected vo{ Label1.T

}

entos de lcontrol de uo control parplo, si su conrol de usuari

ero ascxControl Langrits "HiContTextBox IDButton ID "

/>Label ID "L

gog System.Webg System.Webg System.Webg System.Webic partial c

protected vo{ Label1.T

}

ga de Conual que otrosmicamente.

g System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{

//Popula MyContro (MyContr c1.UserN form1.Co MyContro (MyContr

}

oid Page Loa

ol1.UserCapt

oid Button1

Text MyCon

los controusuario contira controlar lntrol de usuao para el eve

guage "C#" Atrol" %> "TextBox1"Button1" ru

Label1" runa

b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass HiCont

oid Button1

Text "Hi "

ntroles Ds controles d

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass HiCont

oid Page Loa

ate the formol c1 rol)LoadContName "Glenontrols.Add(ol c2 rol)LoadCont

d(object sen

ion "Enter

Click(object

trol1.UserNa

oles de uene controleos eventos pario contieneento Click de

utoEventWire

runat "servenat "server"

t "server" T

rols;rols.WebParttrols;rol : System

Click(object

+ TextBox1

Dinámicae servidor, lo

rols;rols.WebParttrols;rolDynamicLo

d(object sen

.

rol("MyContrn";c1);

rol("MyContr

nder, EventA

r User Name:

t sender, Ev

ame;

usuarioes de servidoproducidos pe un controlel botón.

eup "true" C

er"></asp:Te" Text "Hola

Text "Label"

ts;

m.Web.UI.Use

t sender, Ev

.Text;

amenteos controles

ts;

oad : System

nder, EventA

rol.ascx");

rol.ascx");

���

Args e)

:";

ventArgs e)

or Web, es ppor los controButton, pue

CodeFile "Hi

extBox>a" OnClick "

"></asp:Labe

erControl

ventArgs e)

de usuario p

m.Web.UI.Pag

Args e)

form1.Contr

�� �? � ��

osible escriboles secundade crear un

iControl.asc

"Button1 Cli

el>

pueden ser c

ge

rols.Add(c2)

������ ��

bir código enarios. Porcontrolador

cx.cs"

ck" />

cargados

;

� <�����

"

en el

www.depurando.com 213

Page 214: ASP .NET Framework 3.5

Elev

Codi<%@ C

I<asp:<asp:<asp:OnCli

Codiusingusingusingusingusingusingusingusingusingusingpublipubli{

pp{

}}

El ede l

Codi<%@ P

I

<%@ R<!DOC"http<html<head

<</hea<body

<<

<<

</bod</htm

Codiusingusingusingusingusingpubli{

p{

}}

vando ev

go ascxControl LangInherits "MeLabel ID "lTextBox IDButton ID "

ick "btnMess

go csg System; g System.Datg System.Cong System.Colg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic delegateic partial c

public eventprotected vo{

if (Send}

evento debla clase d

go aspxPage LanguagInherits "Me

Register SrcCTYPE html Pp://www.w3.ol xmlns "httd id "Head1"<title>Untitad>y><form id "fo<div>

<uc1:Mes<br /><br /><asp:Lab

</div></form>dy>ml>

go csg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{ MessageC

delegate}

ventos a l

guage "C#" AessageControblName" run"txtName" rbtnMessage"age Click"

ta;nfiguration;lections;

b;b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConvoid SendMe

class Messag

t SendMessagoid btnMessa

dMessage !

be ser siede control

ge "C#" AutoessageContro

c "MessageCoPUBLIC " //Worg/TR/xhtmltp://www.w3.

runat "servtled Page</t

orm1" runat

sageControl

bel ID "lblR

b.Security;b.UI;b.UI.WebContb.UI.WebContb.UI.HtmlConclass Messag

oid Page Loa

Control1.Sene(string mes

la página

utoEventWirel" %> at "server"unat "serverrunat "serv

/>

rols;rols.WebParttrols;ssageHandlereControl : S

eHandler Senge Click(obj

null) SendMe

empre decll de usuar

EventWireuplTest" %>

ntrol.ascx"3C//DTD XHTM1/DTD/xhtml1org/1999/xhtver">itle>

"server">

ID "Message

esult" runat

rols;rols.WebParttrols;eControlTest

d(object sen

dMessage +sage) { lblR

a

eup "true" C

Text "Enterr"></asp:Texver" Text "S

ts;

r(string mesSystem.Web.U

ndMessage;ject sender,

essage(txtNa

larado comrio.

"true" Code

TagName "MeML 1.0 Trans1 transitiontml">

eControl1" r

t "server" T

ts;

t : System.W

nder, EventA

Result.Text

���

CodeFile "Me

r Name: "></xtBox>Send Message

ssage);UI.UserContr

, EventArgs

ame.Text);

mo público

eFile "Messa

essageContrositional//ENnal.dtd">

runat "serve

Text ""></as

Web.UI.Page

Args e)

message;

�� �? � ��

essageContro

/asp:Label>

e"

rol

e)

o en la pa

ageControlTe

ol" TagPrefiN"

er" />

sp:Label>

};

������ ��

ol.ascx.cs"

arte super

est.aspx.cs"

x "uc1" %>

� <�����

)

rior

www.depurando.com 214

Page 215: ASP .NET Framework 3.5

Ejem

ConVamo

PágiLa páde us

El con

ConCreamestab

PropCreampara

priva

p{

mplo de C

trol paraos a crear un

ina Princiágina principasuario

ntrol de usua

ntrol paramos otro conblecemos sus

piedadesmos 2 propiela dirección.

ate int Num

public int N{

get { reset { N

Control d

un píe den control de u

ipalal tendrá un

ario lo podem

a mostrantrol de usuas funcionalid

para el coedades para

meroColumnas

NumeroColumn

eturn NumerNumeroColumn

de Usuar

e página cusuario web

a etiqueta y

mos reutiliza

r datosario con un dades de actu

ontrolel control. U

3;

as

oColumnas;as value;

io Web

con copyrpara coloca

un botón. Po

ar en cualqui

dataList, paraualización y l

Una para dete

}}

���

ightr como píe d

osteriormen

er página

a mostrar loso incorporam

erminar el n

�� �? � ��

de página

nte, incorpor

s datos de lomos a la pág

úmero de co

������ ��

amos el cont

os coches,gina principal

olumnas y ot

� <�����

*

trol

l

tra

www.depurando.com 215

Page 216: ASP .NET Framework 3.5

}p

p{

}

DamEn el

EstaEn elde us

ConEn undesen

La páveanconte

}private Repe

public Repea{

get { reset { D

}

mos valorload

this.Datathis.Dat

ablecer lacliente se disuario web. A

trolar Even control dencadenan ev

ágina en la qulos tendremenedora

eatDirection

atDirection

eturn DirecDireccion v

a las prop

aList1.RepeataList1.Repe

as propiedispondrán loAsí como la p

entosusuario, podventos, tendr

ue está colocmos publicar c

Direccion

Direccion

cion; } value; }

piedades

atColumns atDirection

dades paros controles nprogramació

demos tenerremos que c

cado el contrcon el objeti

RepeatDir

del contr

this.Numerothis.Dire

ra el clientnecesarios pn de sus eve

otros controontrolarlos e

rol de usuarivo de que lo

���

rection.Hori

rol

Columnas;eccion;

teara actualizaentos.

oles (botoneen el control

io nunca veráos eventos lle

�� �? � ��

izontal;

ar las propied

s). Si estos cde usuario.

á estos eveneguen a la pá

������ ��

dades del co

ontroles

ntos, para quágina

� <�����

ontrol

e se

www.depurando.com 216

Page 217: ASP .NET Framework 3.5

Vamo

Decla

pupu

pupu

Decla

publi{

pp{

}p{

}}

Decla

prote{

}p{

}

Por úquere

El pri

prote{

}

Cuan

os a declarar

EditRecorde coche

FinishedEactualizac

aramos los ev

ublic delegateublic event Ed

ublic delegateublic event F

aramos la cla

ic class Cha

private stripublic strin{

get { reset { M

}public Chang{

this.Mat}

aramos méto

ected virtua{

if (Edit { Edit }

}protected vi{

if (Fini { Fini }

}

último, debememos que se

mer lugar es

ected void D{ DataList DataList

Label lbstring NChangedR

OnEditRe}

do pulsamos

OnFinish

r 2 eventos e

rd, se desencque se está

EditRecord, sción

ventos para

e void EditReditRecordHand

e void FinishinishedEditRe

ase Changed

angedRecordEv

ng Matricung Matricula

eturn MatriMatriculaCoc

gedRecordEve

triculaCoche

odos que des

al void OnEd

tRecord ! n

tRecord(this

rtual void

shedEditRec

shedEditRec

mos agregare desencaden

s cuando pul

DataList1 Ed

t1.EditItemIt1.DataBind(bl (Label)NumeroMatricRecordEventAecord(cre);

s los botones

hedEditRecor

en el control

cadenará cueditando.

se desencade

el Control de

cordHandler(odler EditRecor

edEditRecordHcordHandler F

RecordEvent

ventArgs : E

laCoche;Coche

culaCoche;he value;

ntArgs(strin

Matricula

sencadenen

itRecord(Cha

ull)

, e);

OnFinishedEd

ord ! null)

ord(this, e)

llamadas a enen eventos.

samos el bot

itCommand(ob

ndex e.Ite);e.Item.FidnCula lbl.Tergs cre ne

s de Actualiz

d(new EventA

de usuario:

ando se esté

enará cuand

e Usuario

object sender,rd;

Handler(objectFinishedEditRe

tArgs

EventArgs

}}

ng Matricula

aCoche;

eventos si a

angedRecordE

ditRecord(Ev

)

);

estos métod.

tón de Edita

bject source

em.ItemIndex

Control("Vinext;ew ChangedRe

zar y Cancela

Args());

���

é editando u

o el usuario

, ChangedRecor

t sender, Evenecord;

aCoche)

lguien se ha

EventArgs e)

ventArgs e)

os en los lug

r.

e, DataListC

x;

nLabel");

ecordEventAr

ar se termina

�� �? � ��

n registro, y

guarde o can

rdEventArgs e

ntArgs e);

registrado p

gares del cód

CommandEvent

rgs(NumeroMa

a de editar:

������ ��

pasará el no

ncele la

);

para recibirlo

digo en los qu

tArgs e)

atricula);

� <�����

�ombre

os

ue

www.depurando.com 217

Page 218: ASP .NET Framework 3.5

En el

protec {

} pr

{

} pr

{

}

Tes

1. Wh

D

2. Yohmc

3. Yoto

lado de la p

cted void Page

this.DatosCthis.DatosDatosCoche

rotected void

lblMatricu

rotected void

lblMatricu

t

hat file extenA. .ausr exteB. .aucx exteC. .asuc exte

D. .ascx exten

ou want to crhow the Webmentioned thcan you best c

A. Create a syou the

B. Create a designer

C. Create a tcan spec

D. Create aspecify t

ou want to emto the top ofone.)

A. @Reme

B. @Refere

C. @Requi

D. @Regis

ágina princip

e Load(object

Coches1.EditRsCoches1.Finises.FinishedEdi

DatosCoches1

laCoche.Text

DatosCoches1

laCoche.Text

nsion do youensionensionensionnsion

reate a user cb page desigat the formacreate a user

separate userformat to im

separate usrs give you th

templated uscify their des

a user controthe style prop

mploy a userf the Web pag

ember

ence

ired

ter

pal, tenemos

sender, Even

Record += newshedEditRecorditRecordHandle

EditRecord(o

= "Editando "

FinishedEdit

= string.Empt

u use to create

control to disgners want tat of the datar control to so

r control for mplement in e

ser control fhe desired fo

ser control thsired format.

ol that simpperties for th

r control on oge to indicate

s que registra

ntArgs e)

DatosCoches.Ed += newer(DatosCoche

object sender,

" + e.Matricul

tRecord(object

ty;

e a user cont

splay data, bto format thea might be diolve this pro

each Web paeach user con

for each varormatting opt

hat exposes t

ly renders the user contr

one of your e that a user

���

ar para recib

EditRecordHand

s1 FinishedEd

, DatosCoches

laCoche;

t sender, Even

trol? (Choose

but you are ce data. Alsoifferent, depeoblem? (Choo

age and get entrol.

riation of thetions.

the data to th

the data andol.

Web pages. control is em

�� �? � ��

bir los evento

dler(DatosCoch

ditRecord);

.ChangedRecord

ntArgs e)

e one.)

concerned thao, some of thending on those one.)

each Web pa

e format on

he Web page

d let the We

What directimployed on t

������ ��

os

hes1 EditReco

dEventArgs e)

at you don’t he page desi

he Web page

age designer

nce the Web

e designers so

eb page desi

ive must be the page? (C

� <�����

rd);

know igners. How

to tell

b page

o they

igners

added Choose

www.depurando.com 218

Page 219: ASP .NET Framework 3.5

AApliicacco

���

��

%��

���

cioon .

�� �

���

���

���

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mne.NE

�?��

����

��

��:

MCsET 3

��

:���

CTS:Web3.5

��

:b5

www.depurando.com 219

Page 220: ASP .NET Framework 3.5

��

=�

Los coque econtrexcepexplícmodeStudicuadr

Los cohemocompcompañadAsimla aplensamaplica

Los cocompvisuapuedaplicasola a

Un codispoexisteajustasimplpropilos code unbase:controperaestad

��� �

����

ontroles perencapsulan laroles personapto que se encitamente. Aelo de objetoo, como la vro de herram

ontroles peros analizadopilación dinápatibilidad enen a una págismo, los conlicación quemblado dináaciones.

ontroles de upilado un conl de Visual Sten instalar eaciones, o simaplicación.

ontrol persononible en la cen dos formaa a sus requele es extendeiedades, métontroles de sn control per: Control y Wroles de servativos del codos.

�?�� �

��:�

rsonalizadosa interfaz dealizados no snlazan a un pAparte de lo ao, activar eveventana Propmientas.

rsonalizadosen el capitumica y no sen tiempo degina, donde sntroles de uslos incorpormico que co

usuario ASP.ntrol, podemtudio. Debiden una sola cmplemente s

nalizado es uclase base deas de crear cerimientos ser el controltodos y evenservidor webrsonalizado dWebControl.vidor ASP.NETntrol, como

���

�����

����

de Asp.Net se usuario y otson diferenteprefijo de etanterior, losentos y admipiedades, el d

no se puedelo anterior. Le pueden añadiseño es limsimplementesuario se debra esté precoontiene el co

.NET personamos añadirlodo a su entorcopia en la GAse pueden im

una clase heretermina la ccontroles perólo parcialmderivando dntos específicb existentes sdesde el prinEstas clasesT y requierela reproducc

�� �?�� �

���� �

son compontra funcionaes de los coniqueta diferecontroles peitir todas lasdiseñador vis

en confundirLos controleadir al cuadromitada, así coe se muestraben implemeompilada. Enntrol de usua

alizados sonal cuadro derno compiladAC, dejandomplementar

redada de uncantidad y elrsonalizadosmente y carecde él una nuecos así comose ajusta a suncipio derivásólo proporcn que nos hación, el estilo

�������

�� ��

entes compilidad en paqntroles de seente y se debersonalizadoopciones ensual, los cons

con los conts de usuarioo de herramomo su respan como un mentar como ceste caso, vario y lo vam

código compe herramientdo, los controque estén den el directo

na clase de ccódigo que. Si descubrece de algunaeva clase. Puo añadir nuevus requerimindolo desdecionan la funagamos cargo, el estado d

�� %����

����

ilados en la puetes reutilirvidor ASP.Nben registraros pueden ten tiempo de dstructores de

troles de usuWeb son coientas. Por lauesta visualmarcador decódigo de oriamos a extra

mos a compa

pilado. Cuantas y aprovecoles personaisponibles porio \bin par

control base.debe escribie que un cons opciones cede sobreesvas opcionesiento, considuna de las c

ncionalidad bo de algunosde vista y la a

��� �����

�� D�

parte del serzables. LosNET estándarr e implemenner su propidiseño de Vie propiedad

uario Web, qmponentesa misma razócuando see posición.igen, a no seaer elrtir entre

ndo hemoschar el entoralizados seara todas lasa su uso en u

. La lógicarse. Básicamntrol existentlave, lo másscribirs. Si ningunodere la creacclases de conbásica de loss aspectosadministraci

��:����

��

vidor

r,ntarosualy el

uedeón, su

er que

rno

suna

mentete se

deiónntrol

ón de

www.depurando.com 220

Page 221: ASP .NET Framework 3.5

HerCuanprimerealmpuedreutil

ElegUn coContrASp.Nutilizagenecomp

Creaapli

Una vaplica

Herusing

redar Condo descubraero deténgasmente con HTe empezar alidad y eficie

gir una clontrol de serrol. La clase CNET. No obstamos comúnral, los contrportamiento

ar un conicación w

vez creado yación web

redando dg System;

ntroles Ea que necesitse un momeTML, literalea planificar uencia.

lase baservidor personControl es latante, debe tnmente en aroles ASP.NE.

ntrol de uweb

compilado,

de un con

���

xistentesta un contronto y asegúrs y código Jan control AS

enalizado es ua clase raíz patener en cueplicaciones AET heredan d

usuario d

podremos tr

ntrol web

�� �?�� �

sl personalizarese de que lavaScript. Si sP.NET y post

una clase deara todos losenta que realASP.NET quee clases inte

de servid

rasladar la d

b existen

�������

ado para ejecla opción qusabe lo que dteriormente

Microsoft .Ns controles dlmente son me realmente sermedias que

dor, indep

ll resultante

nte

�� %����

cutar una dee necesita sedebe hacer ecrear la opc

NET Framewode servidor emuy pocos lose heredan de encapsulan

pendient

a la carpeta

��� �����

terminada tae puede obteen HTML purión para la m

ork heredadan las aplicacos controlesde Control. En un determi

te de la

bin de la

��:����

�area,enerro,mejor

a deionesqueEnnado

www.depurando.com 221

Page 222: ASP .NET Framework 3.5

usingusingpubli{

p{

}pp{

}pp{

}}

usingusingusingpubli{

p{

}}

HerAdemWebCque sAl he

g System.Webg System.Webic class Lab

public strin{

get { reset { l

}private stripublic int L{

get { reset { l

}private intprotected ov{ writer.W

@"<span , LabelW

base.Ren}

g System; g System.Webg System.Webic partial c

protected vo{

int widtLabeledT

prompt1. prompt1. form1.Co

LiteralC form1.Co

LabeledT prompt2. prompt2. form1.Co

}

redar dirmás de heredControl, quese desea apliredar de la c

b.UI;b.UI.WebContbeledTextBox

ng LabelText

eturn labelabelText v

ng labelTeLabelWidth

eturn labelWabelWidth

labelWidthverride void

Write(style ""disp

Width, Labelnder(writer)

b.UI;b.UI.WebContclass Labele

oid Page Ini

th 150; TextBox prompLabelText LabelWidth

ontrols.Add(pControl brk ontrols.Add(bTextBox prompLabelText LabelWidth

ontrols.Add(p

ectamendar de un conpuede ser ccar.clase WebCo

���

rols;: TextBox

Text; } value; }

xt;

Width; } value; }

;Render(Html

play:inlineText);;

rols;dTextBoxTest

t(object sen

pt1 new La"Enter Name width;

prompt1);new Litera

brk);pt2 new La"Enter Addr width;

prompt2);

nte de la cntrol Web exconveniente

ontrol, debe s

�� �?�� �

lTextWriter

block;width

t : System.W

nder, EventA

abeledTextBoe:";

alControl("<

abeledTextBoress:";

clase Wexistente, puecuando no h

sobreescribi

�������

writer)

h:{0}px"">{1

Web.UI.Page

Args e)

ox();

<br />");

ox();

bControlede heredarhay ningún co

r el método

�� %����

1}&nbsp;</sp

ldirectamentontrol con el

Renderizar

��� �����

pan>"

te de la clasel comportam

para

��:����

emiento

www.depurando.com 222

Page 223: ASP .NET Framework 3.5

propoLogoC

publi{

p{}p{

}pp{

}pp{

}}

usingusingusingpubli{

p{

}}

orcionar la sControl una

ic class Log

public LogoC{}public strin{

get { reset { l

}private stripublic strin{

get { reset { c

}private striprotected ov{ writer.W writer.W writer.W writer.W

}

g System; g System.Webg System.Webic partial c

protected vo{ LogoCont logo.Com logo.Log form1.Co

}

alida deseadpropiedad p

goControl : W

Control()

ng LogoUrl

eturn logoUogoUrl va

ng logoUrlng CompanyNam

eturn compacompanyName

ng companyNverride void

WriteFullBegWrite(@"<imgWrite(CompanWriteEndTag(

b.UI;b.UI.WebContclass LogoCo

oid Page Ini

trol logo mpanyName goUrl "Norontrols.Add(

���

da. La siguienpara la LogoU

WebControl

rl; } lue; }

;me

nyName; } value; }

Name;Render(Html

inTag("div")src ""{0}""

yName + "<br"div");

rols;ntrolTest :

t(object sen

new LogoCont"Northwind TthwindTraderlogo);

�� �?�� �

nte es una mUrl y la Comp

lTextWriter

);" /><br />",r />");

System.Web.

nder, EventA

trol();Traders";rs.gif";

�������

uestra de cópanyName:

writer)

, LogoUrl);

.UI.Page

Args e)

�� %����

ódigo que co

��� �����

ntiene

��:����

www.depurando.com 223

Page 224: ASP .NET Framework 3.5

AñaherEl reqcomp

Paraherra

Si desespecun tip

Mediaccesapareespectantonombespec

// Sp[c{}/[c{}

adir Contramientaquisito básicopilado en una

incorporarloamientas, Ele

sea que un iccificar una impo de clase e

iante Toolboso y el nombecerá junto acificar un Typo el parámetrbre especificcificado por

pecifies the[ToolboxBitmclass MyCont{}// Specifies[ToolboxBitmclass MyCont{}

trol de seaso para tenera dll.

o a la barra degir element

cono especiamagen particespecial que

oxBitmapAttrbre de archivoal control cuape, en cuyo cro Type comcado por el pel parámetro

e bitmap assmap(typeof(Btrol1 : User

a bitmap fmap(@"C:\Doctrol2 : User

���

ervidor P

r un control p

e herramienos, y elegimo

al para el concular utilizanse puede as

ribute, puedeo para un maando se agrecaso se carga

mo una cadenarámetro deo Type.

ociated withutton))]Control

ile.uments and SControl

�� �?�� �

Personali

personalizad

ntas, con el bos la dll del c

ntrol aparezcdo ToolboxBociar a otras

e especificarapa de bits degue al Cuada el mapa dena, el controle cadena en e

h the Button

Settings\Joe

�������

zado a la

o en la barra

botón derechcontrol

ca en el CuadBitmapAttribs clases.

r una cadenade 16 por 16ro de herrame bits asociadl busca un reel ensamblad

n type.

e\MyPics\myI

�� %����

a barra de

a de herrami

ho en la barra

dro de herraute. Esta cla

a que indiquepíxeles. Estemientas. Tamdo a ese tipoecurso de imado que conti

Image.bmp")]

��� �����

e

ientas es que

a de

mientas, puese es un atri

e la ruta dee mapa de bmbién puedeo. Si especificagen con eliene el tipo

��:����

e esté

edeibuto,

its

ca

www.depurando.com 224

Page 225: ASP .NET Framework 3.5

PerEspecarrasDe foetiqucuanddiseñatribuen elform

usingusingusingusing

names{

[Borde

p{

}

}

En elde Masoci

[Toolpubli

EjemVamo

Simufunci

Es decontr

Desdlos co

sonalizacifica la etiqutra desde unorma predeteeta vacía. Ésdo se arrastrño. Para espeuto. Puede udiseñador culario.

g System; g System.Webg System.Webg System.Web

space Custom

[ToolboxDataerWidth '1public class{

public M {

// Y }

}

ejemplo deyLabel. El disado a la clas

lboxData( @"ic class Log

mploos a crear un

ltáneamenteonara como

ecir, CustomCroles .

e CustomCoontroles pers

ndo Contueta predeten cuadro de herminada, elsta es la etiqra desde un cecificar valorusar este atriuando se arr

b;b.UI;b.UI.WebCont

mControls

a("<{0}:MyLab0' runat 'MyLabel :

MyLabel()

Your code go

código siguieseñador reese MyLabel.

<{0}:LogoCogoControl : W

n control per

e, creados unnuestra apli

ControlWebP

ntrolWebPasonalizados

���

trol de Seerminada genherramientadiseñador vueta que repcuadro de heres predetermibuto para perastra el con

rols;

bel Text 'Myserver'></{0Label

es here.

ente, el códimplaza toda

ntrol runatWebControl

sonalizado ll

n nuevo sitioicación consu

Pages utiliza

ges tendrem

�� �?�� �

ervidornerada paras en una hervisual de unapresenta un cerramientasminados inicersonalizar etrol desde e

yLabel' Bord0}:MyLabel>"

go anterior es las aparicio

""server""

lamado Web

o web llamadumidora o cl

rá los contro

mos que hace

�������

un control prramienta coherramientcontrol en sude un diseñaciales, los conel contenidol cuadro de h

derColor 'Ye")]

establece vaones de {0} p

CompanyName

bCustomCont

do CustomCoiente.

oles que intro

er una refere

�� %����

personalizadoomo Microsoa como Visuu estado preador visual antroles debeHTML iniciaherramienta

ellow' BackC

rias propiedpor el prefijo

e "" "" Logo

trol1

ontrolWebPa

oduzcamos e

encia a la dll

��� �����

o cuando éstoft Visual Stual Studio credeterminadoa la superficien utilizar estl que se inclus hasta el

Color 'Magen

ades específo de etiqueta

oUrl "" "" /

ages. Esta

en la bibliote

donde tenem

��:����

!te sedio.ea unao,e deteuye

ta'

ficasa

>")]

eca de

mos

www.depurando.com 225

Page 226: ASP .NET Framework 3.5

Ya esRegis

<%@ R

<body><f<d

</</

</body

Los codecla

stamos prepastrar el contr

Register Tag

>form id="formdiv>

<Gerardo:Se/div>/form>y>

ontroles disparativamente

arados pararol y Usarlo.

gPrefix "Ger

1" runat="ser

erverControl1

ponen de proe.

���

añadir el con

ardo" Namesp

ver">

ID="wcc1" ru

opiedades, a

�� �?�� �

ntrol persona

pace "Server

unat="server"

a las que pod

�������

alizado a la p

rControl1" A

Text="Hola Co

demos acced

�� %����

página Web.

Assembly "Se

ontrol Persona

er mediante

��� �����

En dos paso

erverControl

alizado" />

e programaci

��:����

"

os:

1" %>

ión o

www.depurando.com 226

Page 227: ASP .NET Framework 3.5

MétEs elser so

El mé

prote

ActuCadaobten

Podemanodirect

todo Rendmétodo clavobreescrito e

étodo Rende

ected overri { outp outp outp outp }

ualizar elvez que moner la dll res

mos hacerloo. Una alterntamente en

derve de un conen la clase de

r utiliza el ob

de void Ren

put.AddStyleAput.RenderBeput.Write(Teput.RenderEn

controldificamos elultante en e

o eliminandonativa es ensel directorio

���

trol personaerivada si qu

bjeto HtmlTe

derContents

Attribute("cginTag("p");xt);dTag();

control de lal directorio b

y volviendoeñar a la bilo bin del sitio

�� �?�� �

lizado. Esteueremos tene

extWriter, pa

(HtmlTextWri

color", "fuc;

a bibliotecabin del sitio w

a crear la reblioteca de co Web.

�������

método se der el control

asado como

iter output)

chsia");

de controlesweb.

eferencia, o ccontroles pe

�� %����

declara en ladel procesad

parámetro.

s personaliza

copiando el arsonalizados

��� �����

clase base ydo de la pág

ados, debere

archivo dll as a crear su d

��:����

)y debeina.

mos

dll

www.depurando.com 227

Page 228: ASP .NET Framework 3.5

ManVamo

[[p{

}}

Desd

ntener el eos a agregar

[DefaultProp[ToolboxDatapublic class{

public W { View } [Bindabl [Categor [Default [Localiz

public s {

get {

}

set {

} }

public i {

getset

}

protecte { outp }

}

e la página c

estadoun control p

perty("Text"a("<{0}:WebC

WebCustomC

WebCustomCon

wState["Size

e(true)]ry("AppearantValue("")]able(true)]tring Text

String s return ((s

ViewState["

nt Size

{ return Co{ ViewState

ed override v

put.Write("<

contenedora

���

personalizado

)]ustomControlontrol1 : We

trol1()

"] 1;

ce")]

(String)Viewnull) ? S

Text"] val

nvert.ToInt3["Size"] v

void RenderC

font size "+

podremos c

�� �?�� �

o para aume

l1 runat serebControl

wState["TextString.Empty

lue;

32(ViewStatevalue; }

Contents(Htm

+Size+">" +

cambiar el va

�������

entar el tama

rver></{0}:W

t"];y : s);

e["Size"]);

mlTextWriter

Text+ "</fo

alor de la pro

�� %����

año del texto

WebCustomCon

}

r output)

ont>");

opiedad Size

��� �����

o.

ntrol1>")]

��:����

*

www.depurando.com 228

Page 229: ASP .NET Framework 3.5

CreaEn esderiv

Querél.

names{

[[p{

}}

CreaAhora

Vamoque d

pu{

ación deste caso vamar de un con

emos un bot

space Server

[DefaultProp[ToolboxDatapublic class{

public C {

this View }

public i {

get {

}

set {

} }

protecte { View

thisbase

} }

ación dea vamos a co

os a modificaderiva de Cou

ublic class{

private

controleos a ampliarntrol existent

tón para ma

rControl1

perty("Text"a("<{0}:Coun

CountedBut

CountedButto

.Text "HawState["Coun

nt Count

return (int

ViewState["

ed override v

wState["Coun.Text View

e.OnClick(e)

controleombinar 2 o

ar CountedBuntedButton

CountedButt

string Cade

���

es Derivar el comportate, igual que

ntener el rec

)]tedButton ruton : System

n()

z Click";t"] 0;

)ViewState["

Count"] va

void OnClick

t"] ((int)wState["Coun;

es Compumás controle

utton. Para nn

on2 : Counte

naVisualizac

�� �?�� �

adosamiento de upodíamos d

cuento del n

unat server>m.Web.UI.Web

"Count"];

alue;

k(EventArgs

)ViewState["nt"] + " cli

uestoses existente

no complicar

edButton

cion;

�������

un tipo de coderivar de un

úmero de ve

></{0}:CountbControls.Bu

e)

"Count"]) + ick";

s.

r el código cr

�� %����

ontrol existena clase.

eces que hem

tedButton>")utton

1;

rearemos Co

��� �����

nte. Podemo

mos hecho c

]

ountedButto

��:����

os

lic en

n2

www.depurando.com 229

Page 230: ASP .NET Framework 3.5

}

CreaEl conun de

names{

[[p{

public C { Cade Init }

//Sobrecpublic C

{ this

Init }

private {

if ( {

} this

} protecte

{ View

thisbase

}

protecte { outp }

}

ación delntrol BookCoeterminado l

INamingCidentificagarantiza

space Server

[DefaultProp[ToolboxDatapublic class{

CountedBpublic s

{ get

{

}

set {

} }

public i {

get {

} set

{

} }

CountedButto

enaVisualizatValues();

cargado, tomCountedButto

.CadenaVisutValues();

void InitVa

ViewState["

ViewState["

.Text "Ha

ed override v

wState["Coun.Text View

e.OnClick(e)

ed override v

put.Write(Te

Control Counter es el rlibro.

Container: Esa a un controando que tod

rControl1

perty("Text"a("<{0}:Book

BookCounte

Button2 btn tring BookN

return (str

ViewState["

nt Count

return btn.

btn.Count

���

n2()

cion "clic

a una cadenan2(string ca

alizacion

lues()

Count"] n

Count"] 0;

z Click";

void OnClick

t"] ((int)wState["Coun;

void RenderC

xt);

Compuestresponsable

s una interfaol contenedodos los contr

)]Counter runar : WebContr

new Counteame

ing)ViewStat

BookName"]

Count;

value;

�� �?�� �

cks";

a para mostrad)

cad;

null)

;

k(EventArgs

)ViewState["nt"] + " " +

Contents(Htm

to BookCode registrar

z marcadoraor que crea uoles hijos tie

at server></rol, INaming

edButton2("a

te["BookName

value;

�������

rarla

e)

"Count"]) + + CadenaVisu

mlTextWriter

ountery mostrar e

a que no tienn nuevo espenen identida

/{0}:BookCougContainer

accesos");

e"];

�� %����

1;ualizacion;

r output)

l número de

ne métodos.pacio de nomades únicas

unter>")]

��� �����

consultas so

Esta interfazmbre identificpara la págin

��:����

obre

zcador,na.

www.depurando.com 230

Page 231: ASP .NET Framework 3.5

}}

CreaCadaCreamsólo n

El CopersoBookelem

El priobtenclase

Asp.NdetercadaBook

Debevalornecespropi

[Cont

publi{

align

public v { btn. }

protecte { Cont }

}

ación deluno de los omos otro connecesitamos

ntrolBuilderAonalizado dekCounter debentos de la p

mer argumener pasandoBookCounte

NET usará esrminar el tipouno de los o

kInquiryClass

emos asignarfalse para insario seguir ciedades del o

trolBuilder(

ic class Boo{

protecte {

intBook//Es

outpn 'center'>" outp outp

//siif (

{

} //enelse

{

void Reset()

Count 0;

ed override v

trols.Add(bt

l controlobjetos bookntrol en la libs el método R

Attribute Espntro del anabe asociarsepágina aspx a

ento para el aBookCounteer dada una

ta clase Booo de objeto iobjetos Book

r al segundondicar a ASP.con el análisobjeto exter

typeof(Book

okInquiryLis

ed override v

totalInquirkCounter curcribe el en

put.Write("<);

put.Write("<put.Write("< no contienControls.Co

output.Writoutput.Writ

n caso contre

//recorre l

���

void CreateC

n);

compuekCounter estbrería de conRender.

pecifica unalizador de ASa BookInquial código ade

atributo ConerBuilder, unetiqueta llam

kCounterBuiindicado porkCounter se i

argumento d.NET que hemis. Un valor fno, sino cont

CounterBuild

t : WebContr

void Render

ies 0; rent;cabezadotable border

tr><td colspB> Inquiriese controles,unt 0)

e("<tr><td ce("<b> No ha

ario, muestr

a colección

�� �?�� �

ChildControl

sto Booká en la colecntroles, llama

clase ControSP.NET. No sryClass, paraecuado.

ntrolBuilderAna clase quemada BookCo

ilder, que ser la etiquetanstanciarán

del atributomos gestionafalse indica qtroles hijo.

der)),ParseC

rol, INaming

(HtmlTextWri

r '1' width

pan '2' aligs</B></td></, escribe el

colspan '2'ay libros</b

ra cada uno

de controle

�������

ls()

kInquiryLcción Controado BookInq

olBuilder parse puede hera que Asp.Ne

Attribute es udefiniremosounter

deriva de CoBookCountey se añadirá

ControlBuildado los atribque los atrib

Children(fal

gContainer

iter output)

'90%' cellp

gn 'center'>/tr>");l mensaje pr

align 'centb></td></tr>

de los cont

es

�� %����

Listls del BookInquiryList, y lo

ra la creaciónredar esta claet pueda con

un objeto Typs para devolv

ontrolBuildeer. Medianteán a la colecc

derAttribute,butos hijos yutos hijos an

lse)]

padding '1'

>");

redeterminad

ter'>");>");

troles conte

��� �����

nquiryList.o modificamo

n de un contase. La clasenvertir los

pe, que podever el tipo de

r, paraesta asociac

ción Controls

, ParseChildrque no esnidados no so

cellspacing

do

enidos

��:����

os,

rol

emose la

ción,s de

ren, el

on

'1'

www.depurando.com 231

Page 232: ASP .NET Framework 3.5

+ tot

}

inter{

Syste

}

Tes

1. WT

D

2. YWth

A

D

3. YCin

talInquiries

} outp

} }

rnal class B{

public oem.Collectio {

if (

else }

public o {

} }

t

Which of the Toolbox for y

A. ToolboxIc

B. ToolboxD

C. ToolboxBD. ToolboxCo

ou are goinWebControl che browser w

A. Display

B. Paint

C. Build

D. Render

You are creaCompositeConstantiate the

A. CreateCh

B. InitChildr

// y muestr// e indica for (int i { current totalIn output.W output. current output. output.W}output.Writ + "</td></

put.Write("<

BookCounterB

override Typons.IDiction

tagName return type

e return nul

override voi

following ayour custom

Icon

Data

Bitmaponfig

ng to createclass. Which

window? (Ch

ating a comontrol class.e child contr

hildControls

ren

���

a el nombre a cada cont 0; i < Con

(BookCounquiries + cWrite("<tr><RenderBeginT.RenderContrRenderEndTagWrite("</tr>

e("<tr><td ctr>");

/table>");

uilder : Con

e GetChildCoary attribs)

"BookCounterof(BookCountl;

d AppendLite

attributes caWeb control

e a custom h method do hoose one.)

mposite contWhat meth

ols and set th

�� �?�� �

del libro ptrol contenintrols.Count

nter)Controlcurrent.Coun<td align 'lTag("td");rol(output);g();>");

colspan '2'

ntrolBuilder

ontrolType(s)

r")ter);

eralString(s

an be used tl? (Choose o

Web serveryou need to

trol, so youhod must be heir propertie

�������

para cada unido que debet; i++)

ls[i];nt;left'>" + cu

;

align 'cent

r

string tagNa

string s)

to set the imone.)

r control tho override to

u create a overridden

es? (Choose

�� %����

noe mostrarse

urrent.BookN

ter'>" + "To

ame,

mage that is

hat inherits get your co

class that iso you canone.)

��� �����

Name + "</td

otal Consult

s displayed i

directly fromontrol to disp

inherits fromn provide co

��:����

>");

as: "

in the

m the play in

m the ode to

www.depurando.com 232

Page 233: ASP .NET Framework 3.5

C. BuildChil

D. RenderCh

ldControls

hildren

����� �?�� �������� �� %������� �������:����

www.depurando.com 233

Page 234: ASP .NET Framework 3.5

AApliicaccio

��

��

��

F�

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mnecon

���

���

���

MCsn .N

� �?

�����

���

CTS:WebNET

3

:bT

5

www.depurando.com 234

Page 235: ASP .NET Framework 3.5

��

IntrLos cousuarcompreferCuanuna pindicavalidade va

Paso123

4

56

Dispotodos

El objpágin

���

roducciónontroles de vrio en una páprobación deencia a un codo se procespágina), el coar si han pasación, se estalidación ha p

os a realiz1. Arrastrar2. Dar nomb3. Establece

que se qu4. Establece

error de v5. Copiar el6. Establece

cuando e

onemos de us los errores

jeto Page disna.

� ��

n a los covalidación ASágina web. Ee un intervaloontrol de entsan los datosontrol de valsado la compablece una pproducido un

zar para vel Control dbre al controer la propieduiere Validarer la propiedvalidación quvalor de la per la propiedel control no

un control Vade validació

spone de una

�����

ontroles dSP.NET permExisten contro o la compatrada (un cos proporcionidación comprobación. Upropiedad enn error.

validar une Validar alol de Validarad ControlTorad ErrorMesue ha tenidopropiedad Erad Text a unes válido

alidationSumón producido

a colección V

�� ��

de validamiten comprooles para disaración de mntrol de servados por elprueba dichona vez que sn la página q

n controlFormulario

oValidate, pa

ssage, para do lugarrrorMessagena cadena co

mmary el cuaos en la págin

Validators co

���� �

F���

ación de Aobar los datostintos tiposmodelos. Cadavidor) situadusuario (poros datos y ese ha llamadoue indica si a

ara enlazar e

dar un mensa

a la propiedrta, normalm

l agruparía ena.

on todos los

�? � ����

����

ASP.NETos proporciode validacióa control deo en otra paejemplo, custablece unao a todos losalguna de las

el control de

aje al usuario

dad ToolTipmente * , par

en una misma

controles de

����� �� F

nados por en, como lavalidación hrte de la págando se envpropiedad p

s controles ds comprobac

Validar al co

odescriptivo

ra mostrar

a localizació

e validación d

F������

l

hacegina.víaparaeciones

ontrol

del

n

de la

www.depurando.com 235

Page 236: ASP .NET Framework 3.5

Tambpáginvalidaalgun

Los cocontrde er

La vavalidadel la("Uplpropivalida

BaseClase

PropiContrDisplEnabErrorIsVal

ReqEl conneces

Un co(contRequ

Para

1

2

3

bién tenemona. Por defecación han vano no haya v

ontroles tienrol en cuestiórror posicion

lidación delación de niveado del clientevel" fuerzaiedad Enableación del lad

eValidatoe de la que he

iedadrolToValidatayleClientSiderMessageid

quiredFientrol Requiresario.

ontrol Requitrol). AgreguiredFieldVal

agregar un c

1. Arrastre ea la págin

2. En la vistasecundar

3. En el pancon el coControlTo

s un métodocto, este métalidado con éalidado con

nen un métoón. Un contrar el foco en

lado del clieel superior sete, establecela validacióneClientScriptdo cliente pa

oreredan los co

te

eScript

eldValidaedFieldValida

redFieldValide el control qidator para p

control Requ

el control Rena.

a Diseño, selrio en el mism

el de tareasntrol RequireoValidate.

o Validate() ptodo es llamaéxito la propiéxito.

odo Focus, elrol de Validacn un control d

nte está pere realizará deremos la pron del lado clit de un contrra dicho con

ontroles de v

atorator garantiz

dator funcioque desee vapoder así aso

uiredFieldVa

equiredFieldV

leccione el cmo y haga cl

PropiedadesedFieldValid

para checkeaado automátiedad IsValid

cual puedeción tiene eldeterminado

mitida por de forma autoopiedad Clieiente). De forol de validactrol.

validación.

DescContNoneFalseMensEstad

za que el usu

na junto conalidar a la páociarlos fácil

alidator a un

Validator de

ontrol Requiic en Propied

s de etiquetaator en el m

���� �

ar todos los cticamente. Sd tendrá el va

ser llamadométodo Seto

efecto. Si elomática. ParentTarget derma alternatción a "false

ripciónrol a validare,Static o Dyne para deshabsaje de errordo de validac

uario no omit

n otro controágina antes dmente.

a página

l panel de ta

iredFieldValidades en el m

a, seleccioneenú despleg

�? � ����

controles deSi todos los calor true, fals

para establetFocusOnErro

cliente lo pera deshabilitala página a "tiva, podemo" para desha

namicbilitar la valirción del cont

te ningún ca

ol, por ejempde agregar el

reas Cuadro

dator, hagamenú contex

e el control qgable de prop

����� �� F

validación dontroles dese encaso de

ecer el foco eor para en ca

ermite, laar la validaci"Downlevel"os estableceabilitar la

dación de cli

trol

ampo de entr

plo un TextBocontrol

de herramie

clic con el boxtual.

que desea vapiedades de

F������

�de la

e que

en elaso

ón"r la

iente

rada

ox

entas

otón

lidar

www.depurando.com 236

Page 237: ASP .NET Framework 3.5

4

5

BasClaseestab

�����

ComEl conconstque,

Un coTextBComp

Para

1

2

3

4

5

6

4. Establezcusuario d

5. Si va a usvalidacióncontrolesdel grupo

seCompare base para eblece el tipo

Currency

Date. Fec

Double. S

Integer. S

String. St

mpareValntrol Compatante, con eligual que o m

ontrol CompBox (control)pareValidato

agregar un c

1. Arrastre epágina.

2. En la vistasecundar

3. En el pancon el coControlTo

4. Establezcque dese

5. EstablezcGreaterT

6. Si va a usvalidación

ca la propieddeje el contro

ar un contron, establezcas de validacióo tengan el m

reValidatel CompareVde datos par

. Se valida co

cha numérica

System.Doub

System.Int32

ring

lidatorreValidator cvalor de otrmayor que) o

areValidator). Agregue elor para pode

control Com

el control Co

a Diseño, selrio en él y ha

el de tareasntrol RegulaoValidate.

ca la propieda comparar.

ca la propiedhan, GeaterT

ar un contron, establezca

ad ErrorMesol en blanco.

ol ValidationSa la propiedaón. Puede semismo valor.

toralidator y elra la compar

omo un Deci

a

ble

2

compara losro control (mo para un tip

r funciona cocontrol quer así asociarl

pareValidat

ompareValid

leccione el cga clic en Pr

PropiedadesrExpressionV

ad ControlTo

ad OperatorThanEqual, L

ol ValidationSa la propieda

ssage en el t.

Summary paad Validationer cualquier c

RangeValidaración

mal y se per

datos propomediante un opo de datos e

onjuntamentdesee validalo a Compare

or a una pág

ator del pan

ontrol Compopiedades e

s de etiquetaValidator en

oCompare o

r en la compaLessThan, Les

Summary paad Validation

���� �

exto que des

ra consolidanGroup en elcadena, siem

ator. Contien

rmite moned

orcionados poperador deespecífico.

te con otro car a la págineValidator fá

gina

el de tareas

pareValidaton el menú co

a, seleccioneel menú des

ValueToCom

aración quessThanEqual

ra consolidanGroup en el

�? � ����

sea que apar

ar los mensajl nombre delmpre que tod

ne la propied

da y decimale

por el usuariocomparació

ontrol, por ea antes de agácilmente.

Cuadro de h

r, haga clic contextual.

e el control qsplegable de

mpare en el c

desea usar:l o DataType

ar los mensajl nombre del

����� �� F

rezca cuando

jes de error dl grupo dedos los contro

dad Type que

es

o con un valoón como men

ejemplo, ungregar el con

herramientas

con el botón

que desea vapropiedade

control o val

Equal, NotEqeCheck.

jes de error dl grupo de

F������

�o un

de

oles

e

ornor

ntrol

s a la

lidars de

lor

qual,

de

www.depurando.com 237

Page 238: ASP .NET Framework 3.5

RanEl condentrentre

El con(contRang

Para

1

2

3

4

5

RegEl concoinccompcorre

Un coun Tecontrfácilm

Para

controlesdel grupo

ngeValidantrol RangeVro de los líme pares de nú

ntrol RangeVtrol). AgregueValidator p

agregar un c

1. Arrastre ehasta la p

2. En la vistasecundar

3. En el pancon el coControlTo

4. Configuremínimo,validando

5. Si va a usvalidacióncontrolesdel grupo

gularExprntrol Regularciden con unprobar secueeo electrónic

ontrol RegulaextBox (control RegularExmente.

agregar un c

s de validacióo tengan el m

atorValidator comites superiorúmeros, cara

Validator fune el control qpara poder as

control Rang

el control Rapágina.

a Diseño, selrio en el mism

el de tareasntrol RangeVoValidate.

e las propiedrespectivamo.

ar un contron, establezcas de validacióo tengan el m

ressionVrExpressionVmodelo def

encias de caro, números

arExpressionrol). AgreguexpressionVal

control Regu

ón. Puede semismo valor.

mprueba quer e inferior esacteres alfab

nciona conjunque desee vasí asociar Ra

geValidator a

angeValidato

leccione el cmo y haga cl

PropiedadesValidator en

dades Maximente, que de

ol ValidationSa la propiedaón. Puede semismo valor.

ValidatorValidator cominido por unracteres predde teléfono,

nValidator fue el control qidator para p

ularExpressio

er cualquier c

e los datos pspecificadoséticos y fech

ntamente coalidar en la pngeValidato

a una página

or desde el pa

ontrol Rangeic en Propied

s de etiquetael menú des

mumValue y Mesea pueda e

Summary paad Validationer cualquier c

mprueba quea expresióndecibles, comcódigos pos

nciona conjuque desee vapoder así aso

onValidator

���� �

cadena, siem

roporcionad. Se puedenhas.

on otro contrpágina antesr con aquél f

a

anel de tarea

eValidator, hdades en el m

a, seleccionesplegable de

MinimumVaescribir un us

ra consolidanGroup en elcadena, siem

e los datos pregular. Estemo las que apstales, etc.

untamente calidar a la páociarlo a Reg

a una págin

�? � ����

mpre que tod

dos por el usucomprobar l

rol, por ejemde agregar efácilmente.

as Cuadro de

haga clic conmenú contex

e el control qpropiedade

lue en los vasuario en el c

ar los mensajl nombre delmpre que tod

roporcionade tipo de valiparecen en la

con otro contgina antes dgularExpress

a

����� �� F

dos los contro

uario estánlos intervalo

mplo, TextBoxel control

e herramient

el botónxtual.

que desea vas de

alores máximcontrol que e

jes de error dl grupo dedos los contro

dos por el usudación permas direccione

trol, por ejeme agregar elionValidator

F������

�oles

s

x

tas

lidar

mo yestá

de

oles

uariomitees de

mplo,

r

www.depurando.com 238

Page 239: ASP .NET Framework 3.5

1

2

3

4

5

CusEl conlógicaderiv

El conTextBCusto

Para

1

2

3

4

5

1. Arrastre eherramie

2. En la vistabotón sec

3. En el pancon el coControlTo

4. Establezccoincidir

5. Si va a usvalidacióncontrolesdel grupo

tomValidntrol Customa de validaciados en tiem

ntrol CustomBox (control)omValidator

agregar un c

1. Arrastre ehasta la p

2. En la vistasecundar

3. En el pancon el coControlTo

4. Para validel nombr

5. Si va a usvalidacióncontrolesdel grupo

el control Reentas a la pág

a Diseño, selcundario en

el de tareasntrol RegulaoValidate.

ca la propiedel texto del c

ar un contron, establezcas de validacióo tengan el m

datormValidator coón que ha esmpo de ejecu

mValidator fu). Agregue elpara poder

control Cust

el control Cupágina.

a Diseño, selrio en él y ha

el de tareasntrol CustomoValidate.

dar el controre de la funci

ar un contron, establezcas de validacióo tengan el m

egularExpresgina.

leccione el cél y haga clic

PropiedadesrExpressionV

ad Validatiocontrol para

ol ValidationSa la propiedaón. Puede semismo valor.

omprueba loscrito. Este tución.

unciona conjcontrol queasí asociar C

omValidator

ustomValidat

leccione el cga clic en Pr

PropiedadesmValidator en

ol en el exploón de JavaSc

ol ValidationSa la propiedaón. Puede semismo valor.

sionValidato

ontrol Regulc en Propied

s de etiquetaValidator en

nExpressionser válido.

Summary paad Validationer cualquier c

os datos propipo de valida

untamente cdesee valida

CustomValida

r a una págin

tor desde el

ontrol Custoopiedades e

s de etiquetan el menú de

orador clientcript que se

Summary paad Validationer cualquier c

���� �

or del panel d

arExpressionades en el m

a, seleccioneel menú des

en la expres

ra consolidanGroup en elcadena, siem

porcionadosación permit

con otro conar a la páginator fácilmen

na

panel de tar

omValidator,n el menú co

a, seleccioneesplegable d

e, establezcausará en la v

ra consolidanGroup en elcadena, siem

�? � ����

de tareas Cu

nValidator, hmenú context

e el control qsplegable de

sión regular c

ar los mensajl nombre delmpre que tod

por el usuare comproba

trol, por ejema antes de agnte.

eas Cuadro d

haga clic coontextual.

e el control qe propiedad

a ClientValidvalidación.

ar los mensajl nombre delmpre que tod

����� �� F

adro de

haga clic contual.

que desea vapropiedade

con la que d

jes de error dl grupo dedos los contro

rio utilizandor valores

mplo, el congregar el con

de herramie

n el botón

que desea vaes de

ationFunctio

jes de error dl grupo dedos los contro

F������

el

lidars de

eberá

de

oles

o la

trolntrol

ntas

lidar

on en

de

oles

www.depurando.com 239

Page 240: ASP .NET Framework 3.5

ValiLa prvaliday en eWizaencueanterValidsido l

SetFOtravalida

Ejem

<%@ Pa

<!DOCT"http<html<head

<t

fu {

v/a

idation Gopiedad Valiación diferenel botón o enrd,MultiVieentran en elriores). Pagedate("group"llamados a V

FocusOnEcaracterísticación y hace

mplo

age Language=

TYPE html PUBL://www.w3.orgxmlns="http:runat="servetitle>Untitled<script languunction Valida

var data = arg//start by setarguements.IsV

GroupsidationGrountes en la min otro controew o controlegrupo "" (grnos proporc

"). Page.IsVaValidate .

Errorca nueva de Aque el prim

"C#" AutoEven

LIC " //W3C///TR/xhtml1/DT//www.w3.org/r">d Page</titleuage="javascratePassword(s

guements.Valutting false Valid=false;

p se utiliza cisma página.ol "postbackes de datos (rupo por defeciona ademáalid refleja la

ASP.NET 2.0er control in

tWireup="true

DTD XHTML 1.0D/xhtml1 tran1999/xhtml">

>ipt" type="teource, arguem

e.split('');

cuando el usu. Establecerek" que cause(edición). Poecto), para cás los métodovalidez de to

es SetFocusOválido reciba

e" CodeFile="D

0 Transitionalnsitional.dtd"

ext/javascriptments)

���� �

uario quiereemos el nomla validaciónr defecto, tocompatibilidaos GetValidaodos los con

OnError quea el foco.

Default.aspx.c

l//EN"">

t">

�? � ����

tener escenbre del grupn. Ésto es útiodos los validad hacía atráators("groupntroles (acum

e se establece

cs" Inherits=

����� �� F

narios deo en el validl con controdadores seás (con versiop") ymulativa) que

e en controle

" Default" %>

F������

!

adorles

ones

e han

es de

www.depurando.com 240

Page 241: ASP .NET Framework 3.5

/i

/vf

i

/vf

i

/vf

i

/a

} </

</head<body>

<f

Contro

requirID="Re

Displa

Width=

Contro

requirClient

least

OnServ

Width=

Contro

//check lengthif(data.length

//check for upvar uc = falsefor(var c in d{

if(data[c] { uc=true } }if(!uc) return

//check for lovar lc = falsefor(var c in d{

if(data[c] { lc=true } }if(!lc) return

//check for nuvar num = falfor(var c in d{

if(data[c] { num=true } }if(!num) retu

//must be valarguements.IsV

/script>

d>>

form id="form<table bord

<tr><td

<td

olToValidate=

red.">*</asp:RegularExpress

ay="Dynamic" V</tr><tr>

<td

<td

="150px"></asp

olToValidate=

red.">*</asp:RtValidationFun

1 upper, 1 lo

verValidate="C</t

</tr><tr>

<td

<td

="150px"></asp

olToValidate=

hh < 6 || data

ppercasee;data)

>= 'A' && da

; break;

n;

owercasee;data)

>= 'a' && da

; break;

n;

umericse;data)

>= '0' && da

e; break;

rn;

idValid=true;

1" runat="serder="0">

d> User Name:<d><asp:TextBo<asp:Requir

"txtUser"Display

RequiredFieldionValidator1

ToolTipValidationExp

d> Password:</d><asp:TextBo

p:TextBox><asp:Requir

"txtPassword"Display

RequiredFieldnction="Valid

Controlower, and 1 n

ToolTipCustomValidattd>

d> Confirm Pasd><asp:TextBo

p:TextBox><asp:Requir

"txtConfirm"

.length > 14)

ta[c] <= 'Z')

ta[c] <= 'z')

ta[c] <= '9')

ver">

/td>

x ID="txtUseredFieldValida

y="Dynamic" ErdValidator><as" runat="serv="Must be 6 1ression="\w{6

td>

x ID="txtPass

edFieldValida

y="Dynamic" ErdValidator><asdatePassword"ToValidate="tumber"="Must be 6 1or1 ServerVal

sword:</td>

x ID="txtConf

edFieldValida

return;

r" runat="servator ID="Requi

rrorMessage="Usp:RegularExprver" ErrorMess14 of A Z, a z6,14}">*</asp:

sword" runat="

ator ID="Requi

rrorMessage="Psp:CustomValid

txtPassword" E

14 charactors,lidate" Displa

firm" runat="s

ator ID="Requi

���� �

ver" Width="15iredFieldValid

User name is rressionValidatsage="Must be z, 0 9 or " C:RegularExpres

"server" TextM

iredFieldValid

Password is redator ID="Cust

ErrorMessage="

, at least 1 uay="Dynamic">*

server" TextMo

iredFieldValid

�? � ����

50px"></asp:Tedator1" runat=

required." Tootor6 14 of A Z, ControlToValidssionValidator

Mode="Password

dator2" runat=

equired." TootomValidator1

"Must be 6 14

upper, 1 lower*</asp:CustomV

ode="Password

dator3" runat=

����� �� F

extBox>="server"

olTip="User n

a z, 0 9 or date="txtUserr></td>

d"

="server"

lTip="Passwor" runat="serv

charactors,

r, and 1 numbValidator>&nb

"

="server"

F������

"

ame is

""

d is ver"

at

er"sp;

www.depurando.com 241

Page 242: ASP .NET Framework 3.5

ToolTiID="Co

Confir

match

Contro

requirID="Re

ToolTi

</</body</html

usingusingusingusingusingusingusingusingusing

public{

pr {

} pr

{

ip="Confirm paompareValidato

rm Password mu

.">*</asp:Comp</tr><tr>

<td

<td

olToValidate=

red.">*</asp:RegularExpress

ip="Must be fo

</tr></table><br /><asp:Button<br /><br /><asp:Valida

/form>y>l>

System;System.Data;System.ConfigSystem.Web;System.Web.SeSystem.Web.USystem.Web.USystem.Web.USystem.Web.U

c partial cla

rotected void

rotected void

string data//start by

args.IsVal

//check lenif (data.Le

//check fobool uc = foreach (ch

{ if (c >

{ uc } } if (!uc) re

//check fobool lc = foreach (ch

{ if (c >

{ lc } } if (!lc) re

//check fobool num = foreach (ch

{ if (c >

Displayassword is reor1" runat="s

Controlust match."

ToolTippareValidator

d> Zip Code:</d><asp:TextBo<asp:Requir

"txtZip"Display

RequiredFieldionValidator2

Displayormatter as 9

Validat

n ID="Button1

ationSummary

guration;

ecurity;I;I.WebControlsI.WebControlsI.HtmlControl

ss Default :

Page Load(ob

CustomValida

a = args.Valusetting falsid = false;

ngthength < 6 ||

r uppercase false;har c in data

>= 'A' && c <

= true; brea

eturn;

r lowercase false;har c in data

>= 'a' && c <

= true; brea

eturn;

r numeric false;har c in data

>= '0' && c <

y="Dynamic" Erquired.">*</aerver" ControToValidate="t

="Password an></td>

td>

x ID="txtZip"edFieldValida

y="Dynamic" ErdValidator><as" runat="servy="Dynamic" Er9999 or 99999ionExpression

" runat="serv

ID="Validatio

;.WebParts;s;

System.Web.U

ject sender,

tor1 ServerVa

e;e

data.Length >

)

= 'Z')

k;

)

= 'z')

k;

)

= '9')

rrorMessage="Casp:RequiredFiolToCompare="ttxtConfirm" Di

nd Confirm Pas

" runat="serveator ID="Requi

rrorMessage="Zsp:RegularExprver" ControlTorrorMessage="M9 9999"n="\d{5}( \d{4

ver" Text="Sub

onSummary1" ru

UI.Page

EventArgs e)

alidate(object

> 14) return;

���� �

Confirm passwoieldValidator>txtPassword"isplay="Dynami

ssword must

er" Width="150iredFieldValid

Zip code is reressionValidatoValidate="txtMust be format

4})?">*</asp:R

bmit" />

unat="server"

t source, Serv

�? � ����

ord is require><asp:CompareV

ic" ErrorMessa

0px"></asp:Texdator4" runat=

equired." TootortZip"tter as 99999

RegularExpres

Width="312px

verValidateEve

����� �� F

ed."Validator

age="Password

xtBox>="server"

lTip="Zip cod

or 99999 999

sionValidator

" />

entArgs args)

F������

)d and

de is

9"

></td>

www.depurando.com 242

Page 243: ASP .NET Framework 3.5

} }

Tes

1. Yoinput

2. Yocontrof thethe chaveinval

3. Yowantprovithe c

{ num } } if (!num)

//must be v args.IsVal

t

ou prompt tht?

A. Provid/DbLookuB. Providset the MaC. ProvidD. Providside funct

ou created arols. This pae client-sideode in the Cvalid data.

lid data exis

A. In thepage’s IsVB. In theproperty aC. Re-enaD. Add th

ou have creat to provide ide the detaontrol and l

A. Set thErrorMesthe Web pB. Set thset the TeWeb pageC. Set theErrorMesthe Web pD. Set theText proppage.

m = true; bre

return;

validid = true;

he user to en

de a Regularup{code}.de a RangeVa

MaxVaue propde a CustomVde a Compartion that perf

a Web page tage also conte validation Click event h

How can yots?

e Click evenValid propere Load eventand exit the mable the clienhe runat="serated an elaba detailed m

ailed messaglist the detai

he Text propssage propertpage.e ErrorMessext property e.e ToolTip prssage propertpage.e ToolTip prperty to an a

ak;

nter a code t

rExpressionV

Validator to aperty to DbLoValidator witreValidator aforms a databthat containtains Buttonand noticed

handler was ou best solve

nt handler merty and exit tht handler memethod if thint-side scriptrver" attributorate Web p

message for ee next to eaciled error m

perty of the ty to an aste

sage propertyto an asterisk

roperty of thty to an aste

roperty of thasterisk. Plac

that exists in

Validator and

and set the Mookup(code)th server-sid

and set the cobase lookup

ns many conn controls thd that when y

executing ee this proble

ethod for eahe method ifethod of theis property ist to disable Pte to all of thpage that coeach validatch control. W

messages at t

validator coerisk. Place a

y of the valik. Place a Va

he validator cerisk. Place a

he validator cce a Validatio

���� �

n the databas

d set the Val

MinValue pro.

de code to seaompare expreof the code. trols that ar

hat perform you clickedven when so

em to ensure

ach of your Bf this properte Web page,s false.

PostBack unthe validation ontains manytion error, bWhat can yohe top of th

ontrol to thea ValidationS

idator controalidationSum

control to thea ValidationS

control to theonSummary

�? � ����

se. How can

lidationExpr

operty to DbL

arch the dataession to the

re validated PostBacks.any of the B

ome of the ce code is not

Button contrty is false. , test the W

il valid data controls.

y validated but you don’ou do to inde Web page

detailed meSummary co

ol to the detammary contro

e detailed mSummary co

e detailed mcontrol at th

����� �� F

n you validat

ression prope

Lookup(code

abase for the e name of a s

using validYou disableButton contrcontrols did t executed w

rols, test the

eb page’s Is

exists.

controls. Yo’t have spac

dicate an err?

essage and sontrol at the t

ailed messagol at the top

essage and sontrol at the t

message and she top of the

F������

*

te this

erty to

e) and

code.erver-

ation ed all rols, not

when

e Web

sValid

ouce to or at

set the top of

ge and of the

set the top of

set the e Web

www.depurando.com 243

Page 244: ASP .NET Framework 3.5

ExpCarac

CaracRegu

.

$

^

{}

[]

()

|

*

+

?

\

presionescter (s) Si

ctereslares

Tococosig

Co

Cococa

Cococu

Utho

Ut[auten

Utor

Sicu

Coce

Cope

Cohh

Caanlith\si

s Regulargnificado

odos los caraon ellos mismon cualquiergnificado esp

orresponde c

orresponde corresponderaadena. Esto c

orresponde corchetes([]),ualquier cara

tilizado paraola{2} hara m

tilizado paraaeiou] correstilizar el guión miniscula,

tilizado pararden de prec

ginifica un oualquiera de

oncuerda coero o mas oc

oncuerda coero no con o

oncuerda cohola.

aracter de esnteriormenteteralmente. P\\\ola u hhhoestan prece

res

acteres a excmos. En otrascadena conpecial.

con cualquie

con patronesa con la cadecorresponde

con un patro^ significa ‘nacter que no

a especificarmatch con la

a establecer cspondera conón para estabde la a a la z

a agrupar cadcedencia en o

lógico. (holalas cadenas

n ninguna ocurrencias de

n una o másola.

n cero o una

scape. Cuande, estan precPor ejemplo,ola. Adicionadidos por un

cepción de .,s palabras, lael texto hola

er unico cara

s al final de uena hola soloera si decimo

on al inicio deno’. Por ejemse encuentr

una cierta cacadena hello

cualquiera dn cualquierablecer rango.

denas. Similaoperaciones

a)|(HOLA) sighola or HOL

mas ocurrene la letra h, s

ocurrencias

a ocurrencia

do cualquiercedidos por u, h\*ola encaalmente, ciern backslash.

���� �

$, ^, {, [, (, |a expresión ra. Los caract

cter.

una cadena.o cuando seos hola, pero

e una cadenamplo [^aeiou]re en la lista”

antidad de caohello. aye{2

e un grupo dde las letrass. [a�z] corre

ar utilizar par.

ginifca que pLA."

ncias. h*ola seguida por la

s. h+ola conc

h?ola concu

a de los caraun backslashaja con la cadrtos caracter

�? � ����

, ), *, +, ?, y \regular holaeres excluido

Por ejemploencuentre ano sera asi s

a. Similar a $] siginifica “c”

aracteres. Po2} correspon

de caracteress a,e,i,o,u. Taespondera co

rentesis para

puede coinci

significa queas letras ola.

cuerda con h

uerda con ola

acteres espech, estos se codena h*ola pres tienen sig

����� �� F

\ son compacorrespondeos tienen un

o, $hola,l final de unasi decimos ho

$. Cuando secorresponde

or ejemplodera con aye

s. Por ejempambien se puon cualquier

a cambiar el

dir con con

e “concuerda."

ola y hhhhol

a y hola, per

ciales vistosomparanpero no congnificado esp

F������

aradoseran

aola?.

e usancon

eaye.

plo,uedeletra

a con

la,

ro no

pecial

www.depurando.com 244

Page 245: ASP .NET Framework 3.5

Ejem

<html><head>

<s

</s

</head<body>

<h3><f

<form

<t<t

Names=

</

<t

</<t

mplo 1

>>script languag

void Valida

if (Page lblOu }

else { lblOu } }

script>

d>>

font face="Ve

runat="serve

table bgcolor=tr valign="top<td colspan=<asp:Label

="Verdana" Fon</td>/tr>

tr><td colspan=<font face=Ve</td>/tr>tr><td align=rig<font face=

</td><td><ASP:RadioB

<asp:Li<asp:Li

</ASP:Radio</td>

ge="C#" runat

ateBtn Click(

e.IsValid == utput.Text =

utput.Text =

rdana">Simple

r">

="#eeeeee" cep">3>ID="lblOutpunt Size="10"

3>erdana size=2

ght>=Verdana size

ButtonList idistItem>MasteistItem>Visa<oButtonList>

=server>

Object Sender

true) { "Page is Vali

"Some of the

RequiredFiel

llpadding=10>

ut" Text="Fillrunat=server

><b>Credit Ca

=2>Card Type:

d=RadioButtonLrCard</asp:Li</asp:ListItem

r, EventArgs E

id!";

required fiel

ld Validator S

>

l in the requi/><br>

ard Informatio

</font>

List1 RepeatLaistItem>m>

���� �

E) {

lds are empty"

Sample</font><

ired fields be

on</b></font>

ayout="Flow" r

�? � ����

";

</h3>

elow" ForeColo

runat=server>

����� �� F

or="red" Font

F������

t

www.depurando.com 245

Page 246: ASP .NET Framework 3.5

</<t

</<t

</<t

</</

</form

</body</html

Ejem<%@ Pa

<html><head>

<s

<td align=mid <asp:Requir Control Display Initial * </asp:Requi

</td>/tr>tr><td align=rig<font face=

</td><td><ASP:TextBo

</td><td> <asp:Requir Control Display Width= * </asp:Requi

</td>/tr>tr><td align=rig<font face=

</td><td><ASP:DropDo

<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li

</ASP:DropD</td><td> <asp:Requir ControlTo Display= InitialVa * </asp:Requi

</td><td>/tr>tr><td></td><td><ASP:Button

</td><td></td>/tr>/table>

m>

y>l>

mplo 2 (Vage ClientTarg

>>

script languag

ddle rowspan=redFieldValidlToValidate="y="Static"lValue="" Wid

iredFieldVali

ght>=Verdana size

ox id=TextBox

redFieldValidlToValidate="y="Static""100%" runat=

iredFieldVali

ght>=Verdana size

ownList id=DristItem></aspistItem >06/0istItem >07/0istItem >08/0istItem >09/0istItem >10/0istItem >11/0istItem >01/0istItem >02/0istItem >03/0istItem >04/0istItem >05/0istItem >06/0istItem >07/0istItem >08/0istItem >09/0istItem >10/0istItem >11/0istItem >12/0DownList>

redFieldValidoValidate="Dr"Static"alue="" Width

iredFieldVali

n id=Button1

Validacióget=UpLevel %

ge="C#" runat

1>dator id="RequRadioButtonLi

dth="100%" run

dator>

=2>Card Numbe

x1 runat=serve

dator id="RequTextBox1"

=server>

dator>

=2>Expiration

ropDownList1 rp:ListItem>0</asp:ListIt0</asp:ListIt0</asp:ListIt0</asp:ListIt0</asp:ListIt0</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt

dator id="RequropDownList1"

h="100%" runat

dator>

text="Validat

ón del lad>

=server>

uiredFieldValiist1"

nat=server>

er:</font>

er />

uiredFieldVali

n Date:</font>

runat=server>

tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>

uiredFieldVali

t=server>

te" OnClick="V

do del Cli

���� �

idator1"

idator2"

>

idator3"

ValidateBtn_Cl

iente)

�? � ����

lick" runat=se

����� �� F

erver />

F������

www.depurando.com 246

Page 247: ASP .NET Framework 3.5

</s

</head<body>

<h3><f

<form

<t<t

ForeCo

</

<t

</<t

runat=

</<t

</<t

void Page Lif (!I

// Va } }

void Valida

if (Page lblOu }

else { lblOu } }

script>

d>>

font face="Ve

runat="serve

table bgcolor=tr valign="top<td colspan=<asp:Label

olor="red" Fon</td>/tr>

tr><td colspan=<font face=Ve</td>/tr>tr><td align=rig<font face=

</td><td><ASP:RadioB

=server><asp:Li<asp:Li

</ASP:Radio</td><td align=mid <asp:Requir Control ErrorMe Display Initial Width=</asp:Requi

</td>/tr>tr><td align=rig<font face=

</td><td><ASP:TextBo

</td><td> <asp:Requir Control ErrorMe Display Width=</asp:Requi

</td>/tr>tr><td align=rig<font face=

</td><td><ASP:DropDo

<asp:Li<asp:Li<asp:Li<asp:Li

Load() { sPostBack) { Validate intlidate();

ateBtn Click(

e.IsValid == utput.Text =

utput.Text =

rdana">Client

r">

="#eeeeee" cep">3>ID="lblOutpunt Names="Ver

3>erdana size=2

ght>=Verdana size

ButtonList id

istItem>MasteistItem>Visa<oButtonList>

ddle rowspan=redFieldValidlToValidate="essage="*"y="Static"lValue="""100%">iredFieldVali

ght>=Verdana size

ox id=TextBox

redFieldValidlToValidate="essage="*"y="Static""100%">iredFieldVali

ght>=Verdana size

ownList id=DristItem></aspistItem >06/0istItem >07/0istItem >08/0

ially to forc

Object Sender

true) { "Page is Vali

"Some of the

Side Require

llpadding=10>

ut" Name="lblOrdana" Font Si

><b>Credit Ca

=2>Card Type:

d=RadioButtonL

rCard</asp:Li</asp:ListItem

1>dator id="RequRadioButtonLi

dator>

=2>Card Numbe

x1 onchange="C

dator id="RequTextBox1"

dator>

=2>Expiration

ropDownList1 op:ListItem>0</asp:ListIt0</asp:ListIt0</asp:ListIt

ce *s to appea

r, EventArgs E

id!";

required fiel

edFieldValidat

>

Output" Text="ize="10" runat

ard Informatio

</font>

List1 RepeatLa

istItem>m>

uiredFieldValiist1"

er:</font>

ClientOnChange

uiredFieldVali

n Date:</font>

onchange="Clie

tem>tem>tem>

���� �

ar before the

E) {

lds are empty"

tor Sample</fo

"Fill in the rt=server /><br

on</b></font>

ayout="Flow" o

idator1" runat

e();" runat=se

idator2" runat

>

entOnChange();

�? � ����

first round t

";

ont></h3>

required fieldr>

onclick="Clien

t="server"

erver />

t="server"

;" runat=serve

����� �� F

trip

ds below"

ntOnChange();

er>

F������

"

www.depurando.com 247

Page 248: ASP .NET Framework 3.5

</<t

</</

</form

<scrip<! fu

fields } // ></scri

</body</html

Ejem<%@ Pa

<html><head>

<s

</s

</head<body>

<h3><f

<form

<table<t

<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li<asp:Li

</ASP:DropD</td><td> <asp:Requir ControlTo ErrorMess Display= InitialVa Width="1</asp:Requi

</td><td>/tr>tr><td></td><td><ASP:Button

</td><td></td>/tr>/table>

m>

pt language=ja

unction Client if (typeof( return; document.als are empty";

>ipt>

y>l>

mplo 3age clienttarg

>>script languag

void ListFo

// Chan// is

valSum }

script>

d>>

font face="Ve

runat="serve

e cellpadding=tr>

<td><table

<tr>

istItem >09/0istItem >10/0istItem >11/0istItem >01/0istItem >02/0istItem >03/0istItem >04/0istItem >05/0istItem >06/0istItem >07/0istItem >08/0istItem >09/0istItem >10/0istItem >11/0istItem >12/0DownList>

redFieldValidoValidate="Drsage="*""Static"alue=""00%">iredFieldVali

n id=Button1

avascript>

tOnChange() {Page Validato

l["lblOutput"

get=downlevel

ge="C#" runat

ormat Selecte

nge display mselected from

.DisplayMode

rdana">Valida

r">

=10>

bgcolor="#ee

0</asp:ListIt0</asp:ListIt0</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt1</asp:ListIt

dator id="RequropDownList1"

dator>

text="Validat

rs) == "undef

].innerText =

%>

=server>

dIndexChanged

mode of the vam the "ListFor

= (Validation

tionSummary S

eeee" cellpad

tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>tem>

uiredFieldVali

te" OnClick="V

fined")

= Page IsValid

d(Object Sende

alidator summarmat" dropdown

nSummaryDispla

Sample</font><

dding=10>

���� �

idator3" runat

ValidateBtn_Cl

d ? "Page is V

er, EventArgs

ary when a newnlist

ayMode) ListFo

</h3>

�? � ����

t="server"

lick" runat="s

Valid!" : "Som

E ) {

w option

ormat.Selected

����� �� F

server" />

me of the req

dIndex;

F������

quired

www.depurando.com 248

Page 249: ASP .NET Framework 3.5

<td<font</td>

</tr><tr><td a<fo

</td><td><AS

</A</td><td a

<as

</a</td>

</tr><tr><td a<fo

</td><td><AS

</td><td>

<as

</a

</td></tr><tr><td a<fo

</td><td><AS

</A</td><td>

<asCED

Wr

</a</td><td>

</tr><tr><td><<td><AS

</td><td><

colspan=3>t face=Verdan>

align=right>ont face=Verd>

SP:RadioButto<asp:ListIt<asp:ListIt

ASP:RadioButt>align=middlesp:RequiredFi ControlToVa ErrorMessag Display="St InitialValu * asp:RequiredF>

align=right>ont face=Verd>

SP:TextBox id>

sp:RequiredFi ControlToVa ErrorMessag Display="St Width="100% * asp:RequiredF

>

align=right>ont face=Verd>

SP:DropDownLi<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt

ASP:DropDownL>

sp:RequiredFiControlToValiErrorMessage=Display="StatInitialValue=Width="100%"runat=server>*asp:RequiredF>

</td>

SP:Button id=></td>

a size=2><b>C

dana size=2>Ca

onList id=Raditem>MasterCardtem>Visa</asp:tonList>

rowspan=1>eldValidatoralidate="Radioge="Card Type.tatic"ue="" Width="1

FieldValidator

dana size=2>Ca

d=TextBox1 run

eldValidatoralidate="TextBge="Card Numbetatic"" runat=serve

FieldValidator

dana size=2>Ex

st id=DropDowtem></asp:Listtem >06/00</astem >07/00</astem >08/00</astem >09/00</astem >10/00</astem >11/00</astem >01/01</astem >02/01</astem >03/01</astem >04/01</astem >05/01</astem >06/01</astem >07/01</astem >08/01</astem >09/01</astem >10/01</astem >11/01</astem >12/01</asList>

eldValidatordate="DropDow="Expiration Dtic"=""

>

FieldValidator

=Button1 text=

Credit Card In

ard Type:</fon

ioButtonList1d</asp:ListIteListItem>

id="RequiredFoButtonList1" "

100%" runat=se

r>

ard Number:</f

nat=server />

id="RequiredFBox1"er. "

er>

r>

xpiration Date

wnList1 runat=tItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>sp:ListItem>

id="RequiredFwnList1"Date. "

r>

="Validate" ru

���� �

nformation</b>

nt>

RepeatLayout=em>

FieldValidator

erver>

font>

FieldValidator

e:</font>

=server>

FieldValidator

unat=server />

�? � ����

></font>

="Flow" runat=

r1"

r2"

r3"

>

����� �� F

=server>

F������

www.depurando.com 249

Page 250: ASP .NET Framework 3.5

</</tabl

<font

<asp:DOnSele

<a<a<a

</asp

</form

</body</html

Ejem

<%@ Pa

<html><head>

<s

</s

</head<body>

<h<p

<f

</tr></table

</td><td valign=

<table <asp:Va Hea Fon Fon />

</td><</td>

/tr>le>

face="verdana

DropDownList iectedIndexChanasp:ListItem>Lasp:ListItem sasp:ListItem>S:DropDownList>

m>

y>l>

mplo 4

age clienttarg

>>script languag

void Button

if (Pag lblO }

else { lblO } }

void lstOpe

comp1.O comp1.V }

script>

d>>

h3><font face=p>Type a value

form runat=se

<table bgcolo

e>

=top>cellpadding=alidationSummaderText="Yount Names="vernt Size="12"

/tr></table>

a" size=" 1">

id="ListFormanged="ListForList</asp:Lisselected>BullSingle Paragr>

get=downlevel

ge="C#" runat

n1 OnSubmit(O

ge.IsValid) {Output.Text =

Output.Text =

erator Select

Operator = (VValidate();

="Verdana">Coe in each tex

rver>

or="#eeeeee"

20><tr><td>mary ID="valSuu must enter ardana"

Select the ty

at" AutoPostBarmat_SelectedItItem>eted List</asraph</asp:List

%>

="server">

bject sender,

"Result: Val

"Result: Not

edIndexChange

ValidationComp

mpareValidatotbox, select

cellpadding=1

um" runat="sera value in the

ype of validat

ack=trueIndexChanged"

sp:ListItem>tItem>

EventArgs e)

lid!";

t valid!";

ed(Object send

pareOperator)

or Example</foa comparison

10>

���� �

rver"e following fi

tion summary d

runat=server

{

der, EventArgs

lstOperator.S

ont></h3>operator, the

�? � ����

ields:"

display you w

>

s e) {

SelectedIndex

en click "Val

����� �� F

ish: </font>

;

idate" to tes

F������

!

t.</p>

www.depurando.com 250

Page 251: ASP .NET Framework 3.5

runat=

Type="

</

</body</html

Ejer

<%@ Pa

<html><head>

<s

<tr valign="t<td>

<h5><fo<asp:Te

</td><td>

<h5><fo

<asp:Li="server">

</asp:L</td><td>

<h5><fo<asp:Te<asp:Bu

</td></tr></table>

<asp:CompareV"String" runat

<br>

<asp:Label ID

/form>

y>l>

rcicio 5

age clienttarg

>>script languag

void Button rangeVa

if (rang lblO } else lblO }

rangeVaif (rang

lblO } else lblO }

rangeVa

top">

ont face="VerextBox id="tx

ont face="Ver

istBox id="ls

<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt<asp:ListIt

ListBox>

ont face="VerextBox id="txutton runat=s

Validator id=t="server"/>

D="lblOutput"

get=downlevel

ge="C#" runat

n1 Click(ObjelInteger.ValigeValInteger.Output1.Text{Output1.Text

lDate.ValidatgeValDate.IsVOutput2.Text{Output2.Text

lString.Valid

dana">StringxtComp" runat=

dana">Compari

tOperator" On

tem Selected="tem Value="Nottem Value="Gretem Value="Gretem Value="Lestem Value="Les

dana">StringxtCompTo" runaerver Text="V

="comp1" Contr

Font Names="

%>

="server">

ct sender, Evdate();IsValid) { = "Result: Va

= "Result: No

e();Valid) { = "Result: Va

= "Result: No

date();

1:</font></h5="server"></as

ison Operator:

nSelectedIndex

"true" Value="tEqual" >NotEqeaterThan" >GreaterThanEqualssThan" >LessTssThanEqual" >

2:</font></h5at="server"></Validate" ID="

rolToValidate=

"verdana" Font

ventArgs e) {

alid!";

ot Valid!";

alid!";

ot Valid!";

���� �

5>sp:TextBox>

:</font></h5>

xChanged="lstO

"Equal" >Equalqual</asp:ListreaterThan</asl" >GreaterThaThan</asp:List>LessThanEqual

5>/asp:TextBox><"Button1" oncl

="txtComp" Con

t Size="10pt"

�? � ����

Operator_Selec

l</asp:ListItetItem>sp:ListItem>anEqual</asp:LtItem>l</asp:ListIte

<p>lick="Button1_

ntrolToCompare

runat="server

����� �� F

ctedIndexChan

em>

ListItem>

em>

_OnSubmit" />

e = "txtCompT

r"/>

F������

"

nged"

>

o"

www.depurando.com 251

Page 252: ASP .NET Framework 3.5

</s

</head<body>

<h<b

<f

<

<

<

<

<

<

if (rang lblO } else lblO }

if (Page lblOu } else lblOu } }

script>

d>>

h3><font face=br /><br />

form runat="se

<table bgcolo<tr valign="t<td>

<h5><fo<asp:Te

</td><td>

<h5><fo</td><td>

<asp:L</td>

</tr><tr valign="t<td>

<h5><fo<asp:Te

</td><td>

<h5><fo</td><td>

<asp:L</td>

</tr><tr valign="t<td>

<h5><fo<asp:Te

</td><td>

<h5><fo</td><td>

<asp:L</td>

</tr></table>

<asp:Button Te

<asp:RangeVali id="rangeVa Type="Integ ControlToVa MaximumValu MinimumValu runat="serv

<asp:RangeVali id="rangeVa Type="Date ControlToVa MaximumValu MinimumValu runat="serv

<asp:RangeVali id="rangeVa Type="Strin ControlToVa MaximumValu MinimumValu runat="serv<br>

geValString.IOutput3.Text{Output3.Text

e.IsValid) { utput.Text = {utput.Text =

="Verdana">Ra

erver">

or="#eeeeee"top">

ont face="VerextBox id="tx

ont face="Ver

Label id="lbl

top">

ont face="VerextBox id="tx

ont face="Ver

Label id="lbl

top">

ont face="VerextBox id="tx

ont face="Ver

Label id="lbl

ext="Validate

idatoralInteger"ger"alidate="txtCue="10"ue="1"ver"/>

idatoralDate""alidate="txtCue="2001/1/1"ue="2000/1/1"ver"/>

idatoralString"ng"alidate="txtCue="Zebra"ue="Aardvark"ver"/>

sValid) { = "Result: Va

= "Result: No

"Result: Page

"Result: Page

ngeValidator

cellpadding=1

dana">Value txtComp1" runat

dana">Data Ty

Output1" Font

dana">Value txtComp2" runat

dana">Data Ty

Output2" Font

dana">Value txtComp3" runat

dana">Data Ty

Output3" Font

" ID="Button1

Comp1"

Comp2"

Comp3"

alid!";

ot Valid!";

e Valid!";

e Not valid!";

Sample</font>

10>

to Check:</font="server"/>

ype: Integer M

t Names="verda

to Check:</font="server"/>

ype: Date Min(

t Names="verda

to Check:</font="server"/>

ype: String Mi

t Names="verda

1" onclick="Bu

���� �

;

></h3>

nt></h5>

Min(1), Max(10

ana" Font Size

nt></h5>

(2000/1/1), Ma

ana" Font Size

nt></h5>

in(Aardvark),

ana" Font Size

utton1_Click"

�? � ����

0)</font></h5>

e="10pt" runat

ax(2001/1/1)<

e="10pt" runat

Max(Zebra)</

e="10pt" runat

runat="server

����� �� F

>

t="server" />

/font></h5>

t="server" />

font></h5>

t="server" />

r" />

F������

)

>

>

>

www.depurando.com 252

Page 253: ASP .NET Framework 3.5

<

</

</body</html

Ejer

<html><head>

<s

</s

</head<body>

<h3><f<br />

<form

<t<t

Size="

</

<t

</<t

<asp:Label id=

/form>

y>l>

rcicio 6

>>script languag

void Valida

if (Page lblOu }

else { lblOu } }

script>

d>>

font face="Ve><br />

runat="serve

table bgcolor=tr valign="top<td colspan=<asp:Label

"10pt" runat=</td>/tr>

tr><td colspan=<font face=Ve</td>/tr>tr><td align=rig<font face=

</td><td><ASP:TextBo

</td><td> <asp:Regula Control

Validat

="lblOutput"

ge="C#" runat

ateBtn Click(

e.IsValid) { utput.Text =

utput.Text =

rdana">Simple

r">

="#eeeeee" cep">3>ID="lblOutpu"server"/>

3>erdana size=2

ght>=Verdana size

ox id=TextBox

arExpressionVlToValidate="tionExpressio

Font Names="v

=server>

Object Src, E

"Page is Vali

"Page is InVa

RegularExpre

llpadding=10>

ut" Text="Ente

><b>Personal

=2>Zip Code:<

x1 runat=serve

Validator id="TextBox1"on="\d{5}"

verdana" Font

EventArgs E) {

id!";

alid! : (";

essionValidato

>

er a 5 digit z

Information</

</font>

er />

"RegularExpres

���� �

Size="10pt" r

{

or Sample</fon

zip code" Font

/b></font>

ssionValidator

�? � ����

runat="server

nt></h3>

t Names="Verda

r1" runat="ser

����� �� F

" />

ana" Font

rver"

F������

�*

www.depurando.com 253

Page 254: ASP .NET Framework 3.5

</<t

</</

</form

</body</html

Ejer

<%@ Pa

<html><head>

<s

</s

</head<body>

<h3><f<br />

<form

<t

Display Font Na Font Si Zip </asp:Regul

</td>/tr>tr><td></td><td><ASP:Button

</td><td></td>/tr>/table>

m>

y>l>

rcicio 7

age clienttarg

>>

script languag

void Valida

if (Page lblOut }

else { lblOut } }

script>

d>>

font face="Ve><br />

runat="serve

table cellpadd

y="Static"ames="verdanaize="10pt">code must belarExpression

n text="Valid

get="downleve

ge="C#" runat

ateBtn Click(

e.IsValid) { tput.Text = "

tput.Text = "

rdana">More R

r">

ding=10>

a"

5 numeric dinValidator>

date" OnClick=

l" %>

=server>

Object Sender

Page is Valid

Page is Not V

Regular Expres

igits

="ValidateBtn_

r, EventArgs E

d!";

Valid! : (";

ssion Examples

���� �

_Click" runat=

E) {

s</font></h3>

�? � ����

=server />

����� �� FF������

www.depurando.com 254

Page 255: ASP .NET Framework 3.5

<t

Size="

</

<t

</<t

</<t

9]{4}

</<t

</

tr valign="top<td colspan=<asp:Label

"10pt" runat=</td>/tr>

tr><td colspan=<font face=Ve</td>/tr>tr><td align=rig<font face=

</td><td><ASP:TextBo

</td><td> <asp:Requir Control Display Font Na > * </asp:Requi

<asp:Regula Control

Validat Display Font Na Ple</asp:Regul

</td>/tr>tr><td align=rig<font face=

</td><td><ASP:TextBo

</td><td> <asp:Requir Control Display Font Na * </asp:Requi

<asp:Regula Control

Validat(\sx\s*[0 9]{5 Display Font Na runat=s Must</asp:Regul

</td>/tr>tr><td align=rig<font face=

</td><td><ASP:TextBo

</td><td> <asp:Requir Control Display Font Na * </asp:Requi

<asp:Regula Control

Validat Display Width= Font Na runat=s Zip </asp:Regul

</td>/tr>

p">3>ID="lblOutpu"server" />

3>erdana size=2

ght>=Verdana size

ox id=TextBox

redFieldValidlToValidate="y="Dynamic"ames="Verdana

iredFieldVali

arExpressionVlToValidate="tionExpressioy="Static"ames="verdanaease enter a larExpression

ght>=Verdana size

ox id=TextBox

redFieldValidlToValidate="y="Dynamic"ames="Verdana

iredFieldValiarExpressionVlToValidate="tionExpressio5})?$)"y="Static"ames="verdanaserver>t be in form:larExpression

ght>=Verdana size

ox id=TextBox

redFieldValidlToValidate="y="Dynamic"ames="Verdana

iredFieldVali

arExpressionVlToValidate="tionExpressioy="Static""100%"ames="verdanaserver>code must belarExpression

ut" Text="Ente

><b>Personal

=2>Email:</fo

x1 runat=serve

dator id="RequTextBox1"

a" Font Size="

dator>

Validator id="TextBox1"on="^[\w ]+@[\

a" Font Size="valid e mail nValidator>

=2>Phone:</fo

x2 runat=serve

dator id="RequTextBox2"

a" Font Size="

dator>Validator id="TextBox2"on="(^x\s*[0 9

a" Font Size="

(XXX) XXX XXnValidator>

=2>Zip Code:<

x3 runat=serve

dator id="RequTextBox3"

a" Font Size="

dator>

Validator id="TextBox3"on="^\d{5}$"

a" Font Size="

5 numeric dinValidator>

er values for

Information</

ont>

er />

uiredFieldVali

"10pt"

"RegularExpres

\w ]+\.(com|ne

"10pt">address

ont>

er />

uiredFieldVali

"10pt">

"RegularExpres

9]{5}$)|(^(\([

"10pt"

XXX

</font>

er />

uiredFieldVali

"10pt">

"RegularExpres

"10pt"

igits

���� �

each field" F

/b></font>

idator1" runat

ssionValidator

et|org|edu|mil

idator2" runat

ssionValidator

[1 9][0 9]{2}\

idator3" runat

ssionValidator

�? � ����

Font Names="Ve

t="server"

r1" runat="ser

l)$"

t="server"

r2"

\)\s)?[1 9][0

t="server"

r3"

����� �� F

erdana" Font

rver"

9]{2} [0

F������

��

www.depurando.com 255

Page 256: ASP .NET Framework 3.5

<t

</</

</form

</body</html

Ejer

<html><head>

<s

vo

}

</s

</head<body>

<h3><f<br />

<form

<a

<p

<a

<a

tr><td></td><td><ASP:Button

</td><td></td>/tr>/table>

m>

y>l>

rcicio 8

>>script languag

void Valida

if (Pag lblO }

else { lblO } }

oid ServerValint num;

// evenif (int.Try

value. } else {

value. }

script>

d>>

font face="Ve><br />

runat="serve

asp:Label id=l Text="Enter Font Names= Font Size=

p>

asp:TextBox id

asp:RequiredFi

n text="Valid

ge="C#" runat

ateBtn OnClic

ge.IsValid) {Output.Text =

Output.Text =

idate (object

n number?yParse(value.IsValid = (nu

IsValid = fal

rdana">Custom

r">

lblOutput runr an even num="Verdana""10pt" /><br>

d=Text1 runat

ieldValidator

date" OnClick=

=server>

k(object send

"Page is val

"Page is not

source, Serv

Value, out num % 2 == 0);

se;

mValidator Exa

nat="server"mber:"

>

t="server" />

r id="Required

="ValidateBtn_

der, EventArgs

lid!";

t valid! : (";

verValidateEve

um) ) {

ample</font></

dFieldValidato

���� �

_Click" runat=

s e) {

;

entArgs value)

/h3>

or1" runat="se

�? � ����

=server />

) {

erver"

����� �� FF������

��

www.depurando.com 256

Page 257: ASP .NET Framework 3.5

</

<a

</

<p

<a

<s

</

</form

</body</html

ControlToVa ErrorMessag Display="Dy Font Names=/asp:RequiredF

asp:CustomVali ControlToVa ClientValid OnServerVal Display="St Font Names= Not an e/asp:CustomVal

p>

asp:Button tex

script languag

function Cl { // even n if (argum argumen else argumen } /script>

m>

y>l>

alidate="Textge="Please enynamic"="verdana" FoFieldValidato

idator id="Cualidate="TextdationFunctiolidate="Servetatic"="verdana" Foeven number! lidator>

xt="Validate"

ge="javascrip

ientValidate(

number?ments.Value%2nts.IsValid =

nts.IsValid =

t1"nter a number"

ont Size="10ptor>

ustomValidatort1"on="ClientValirValidate"

ont Size="10pt

onclick="Val

t">

source, argum

== 0) true;

false;

"

t">

r1" runat="ser

idate"

t">

lidateBtn_OnCl

ments)

���� �

rver"

lick" runat="s

�? � ����

server" />

����� �� FF������

��

www.depurando.com 257

Page 258: ASP .NET Framework 3.5

Ejem

Valid<%@ Pa<html<head<tit

</head

<scripvoid

{ La } </scri

<body><for<d

Valida

ErrorM

mplo 9

dationGrouage Language=xmlns="http:runat="servetle>Validationd>

pt language="Cd Button1 Cli

abel1.Text =

ipt>

>rm id="form1" div><h3>ValidatioEnter Search <asp:TextBox<asp:ButtonationGroup="Se<asp:RequiredMessage="Searc Control<br /><br /><hr /><br /><h3>Validatio<table cellpa<tr><td valig

Enter n

up cs.aspx"C#" %>//www.w3.org/r">n Groups</tit

C#" runat="seck(object sen

"Hello " + Te

runat="serve

onGroup (SearTerm:ID="SearchTeID="Button2"earch" />dFieldValidatch is empty!!lToValidate="

onGroup (Nameadding="5">

gn="top">name:</td>

1999/xhtml">

le>

rver">der, EventArg

xtBox1.Text +

r">

ch)</h3>

rm" runat="serunat="server

tor ID="Requir"SearchTerm" V

)</h3>

gs e)

+ ", you selec

erver" />r" Text="Searc

redFieldValida

ValidationGrou

���� �

cted " + Calen

ch" PostBackUr

ator1" SetFocu

up="Search" />

�? � ����

ndar1.Selected

rl="Search_cs

usOnError="tru

>

����� �� F

dDate;

.aspx"

ue" Runat="se

F������

��

rver"

www.depurando.com 258

Page 259: ASP .NET Framework 3.5

ErrorM

OnClic

</fo</body</html

Sear<%@ Pa<!DOCT"http<html<head<tit

</head<scrip

void { Te

Se La }

</scri<body><for<d

</<d

</<d

</<s<p

</</fo

</body</html

<td valig<asp:Te

<asp:ReMessage="Name

</td></tr><tr><td valig

Enter m</td><td valig<asp:Ca<br /><asp:Bu

ck="Button1_Cl<br />

</td></tr>

</table><br /><asp:Label ID

orm>y>l>

ch cs.aspxage Language=TYPE html PUBL://www.w3.orgxmlns="http:runat="servetle>Search Pagd>pt language="C

d Page Load(ob

extBox SearchT

earchTerm = (Tabel1.Text =

ipt>>rm id="form1" div><span style=/div>div><hr />/div>div><span style=<asp:Label ID Font Italic/div>span style="fop><br />/p>orm>y>l>

gn="top">extBox ID="TeequiredFieldVis empty!!" Control

gn="top">meeting time:

gn="top">alendar ID="C

utton ID="Butlick" Validat

D="Label1" ru

"C#" %>LIC " //W3C///TR/xhtml1/DT//www.w3.org/r">ge</title>

C#" runat="se

bject sender,

Term;

TextBox)Page.SearchTerm.Te

runat="serve

"font size: 3

"font size: 1D="Label1" ruc="True" /><s

ont size: 32p

xtBox1" runatValidator ID="

ToValidate="T

Calendar1" run

tton1" runat="tionGroup="Nam

unat="server"

DTD XHTML 1.0D/xhtml1 tran1999/xhtml">

rver">

EventArgs e)

PreviousPage.xt;

r">

2pt; color: #

6pt">You searunat="server"pan style="fo

t"></span>

t="server" Wid"RequiredField

TextBox1" Vali

nat="server" /

"server" Text=me" />

Text="Label"

0 Transitionalnsitional.dtd"

FindControl("

#ff0066">Searc

rched for: </sText="Label"ont size: 16pt

���� �

dth="247px" HedValidator2" R

idationGroup="

/>

="Postback to

Font Bold="tr

l//EN"">

"SearchTerm");

ch Page (Searc

span>Font Size="16t"> </span>

�? � ����

eight="22px" /Runat="server

"Name" />

Same Page"

rue" />

;

ch cs.aspx)</

6pt" ForeColor

����� �� F

/>"

span><br />

r="#FF0066"

F������

��

www.depurando.com 259

Page 260: ASP .NET Framework 3.5

Ejem

<%@ Pa

<html<head><tit

</head<body><div<h

<f

the fo

mplo 10

age Language=

xmlns="http:>tle>Sign In Fod>>v>h3><font face="Vform action="v<hr width="6<center> <asp:Validaollowing field DisplayMo<br /><br /><! sign<table bord<tr><td co<tab<t<

<</t

</tab</td>

</tr><tr>

"C#" %>

//www.w3.org/

orm Validatio

Verdana">Signvalidationfor00" size="1"

ationSummaryds:"ode="SinglePa

in >der="0" width

lspan="3">le border="0"r><td><font face=

</td>tr>ble>

1999/xhtml">

n Sample</tit

In Form Valim cs.aspx" menoshade>

ID="valSum" r

aragraph" Font

="600">

cellpadding=

"geneva,arial

tle>

idation Sampleethod="post" r

runat="server"

t Names="verda

="0" cellspaci

l" size=" 1"><

���� �

e</font></h3>runat="server"

" HeaderText="

ana" Font Size

ing="0" width=

<b>Sign In Inf

�? � ����

">

"You must ente

e="12" />

="100%">

formation</b><

����� �� F

er a valid va

</font>

F������

�!

alue in

www.depurando.com 260

Page 261: ASP .NET Framework 3.5

ErrorM

ErrorM

ErrorM

ErrorM

Size="

ErrorM

Contro

<td al<font

</td><td><asp

</td><td>

<aspMessage="Email Dis *

</asp <aspMessage="Email Dis Fon Not a v

</asp</td>

</tr><tr><td al<font

</td><td><asp

</td><td>

<aspMessage="Passw Dis *

</asp <aspMessage="Passw

Val"11" Wid Passw

</asp</td>

</tr><tr><td al<font

</td><td><asp

</td><td>

<aspMessage="Re en Dis *

</asp <aspolToCompare="p Err run Passwo

</asp</td>

</tr><tr><td co

&nbsp</tr><! per<tr><td co<tab<t<

<</t

</tab</td>

</tr><tr><td al<font

</td><td><asp

</td><td></td>

ign="right">t face="Arial

:TextBox ID="

:RequiredFiell. " splay="Dynami

p:RequiredFie:RegularExprel. " splay="Staticnt Names="Arivalid e mail p:RegularExpr

ign="right">t face="Arial

:TextBox ID="

:RequiredFielword. " splay="Dynami

p:RequiredFie:RegularExpreword. " lidationExpre

dth="100%" ruword must incp:RegularExpr

ign="right">t face="Arial

:TextBox ID="

:RequiredFielnter Passwordsplay="Dynami

p:RequiredFie:CompareValidpasswd"rorMessage="Rnat="server">rd fields donp:CompareVali

lspan="3">p;</td>

sonalization

lspan="3">le border="0"r><td><font face=

</td>tr>ble>

ign="right">t face="Arial

:TextBox ID="

" size="2">Em

email" Width=

dValidator ID

c" Font Names

ldValidator>ssionValidato

c" ValidationEal" Font Sizeaddress. MusressionValidat

" size="2">Pa

passwd" TextM

dValidator ID

c" Font Names

ldValidator>ssionValidato

ssion=".*[!@#

unat="server">lude one of tressionValidat

" size="2">Re

passwd2" Text

dValidator IDd. " c" Font Names

ldValidator>dator ID="Comp

Re enter Passw>'t match dator>

information

cellpadding=

"geneva,arial

" size="2">Fi

fn" MaxLength

mail Address:<

="200px" MaxLe

D="emailReqVal

s="Verdana" Fo

or ID="emailRe

Expression="^[e="11" runat="st follow emaitor>

assword:</font

Mode="Password

D="passwdReqVa

s="Verdana" Fo

or ID="passwdR

#$%^&*+;:].*"

>these (!@#$%^&tor>

e enter Passwo

tMode="Passwor

D="passwd2ReqV

s="Verdana" Fo

pareValidator1

word. " Displa

>

="0" cellspaci

l" size=" 1"><

irst Name:</fo

h="20" Width="

���� �

</font>

ength="60" run

l" ControlToVa

ont Size="12"

egexVal" Contr

[\w ]+@[\w ]+\"server">[email protected]

t>

d" MaxLength="

al" ControlToV

ont Size="12"

RegexBal" Cont

Display="Stat

&amp;*+;:)

ord:</font>

rd" MaxLength=

Val" ControlTo

ont Size="12"

1" ControlToVa

ay="Static" Fo

ing="0" width=

<b>Personal In

ont>

"200px" runat=

�? � ����

nat="server" /

alidate="email

runat="server

rolToValidate=

\.(com|net|org

n.

"20" runat="se

Validate="pass

runat="server

trolToValidate

tic" Font Name

="20" runat="s

oValidate="pas

runat="server

alidate="passw

ont Names="Ari

="100%">

nformation</b>

="server" />

����� �� F

/>

l"

r">

="email"

g|edu|mil)$"

erver" />

swd"

r">

e="passwd"

es="Arial" Fo

server" />

sswd2"

r">

wd2"

ial" Font Siz

></font>

F������

�"

nt

e="11"

www.depurando.com 261

Page 262: ASP .NET Framework 3.5

Contro

Names=

ErrorM

ErrorM

9]{4}

ErrorM

</tr><tr><td al<font

</td><td><asp

</td><td></td>

</tr><tr><td al<font

</td><td><asp

</td><td></td>

</tr><tr><td al<font

</td><td><asp

fa<asp

</td><td>

<aspolToValidate= Err="Arial" Fon Zip cod

</asp</td>

</tr><tr><td al<font

</td><td><asp

</td><td>

<aspMessage="Phone Dis *

</asp <aspMessage="Phone

Val(\sx\s*[0 9]{5 Dis Must be

</asp</td>

</tr><tr><td co

&nbsp</tr><! Cred<tr><td co<font

</td></tr><tr><td al<font

</td><td><asp<as<as

</asp</td><td>

<aspMessage="Card Dis *

</asp

ign="right">t face="Arial

:TextBox ID="

ign="right">t face="Arial

:TextBox ID="

ign="right">t face="Arial

:TextBox ID="ce="Arial" si:TextBox ID="

:RegularExpre"zip"rorMessage="Z

nt Size="11"de must be 5 p:RegularExpr

ign="right">t face="Arial

:TextBox ID="

:RequiredFiele. " splay="Dynami

p:RequiredFie:RegularExpree. " lidationExpre5})?$)"splay="Statice in form: (Xp:RegularExpr

lspan="3">p;</td>

dit Card Info

lspan="3">t face="Arial

ign="right">t face="Arial

:RadioButtonLsp:ListItem>Msp:ListItem>Vp:RadioButton

:RequiredFielType. " splay="Static

p:RequiredFie

" size="2">La

ln" MaxLength

" size="2">Ad

address" Widt

" size="2">St

state" Width=ze="2">Zip Cozip" Width="6

ssionValidato

ip Code. " Va

runat="servernumeric digitressionValidat

" size="2">Ph

phone" MaxLen

dValidator ID

c" Font Names

ldValidator>ssionValidato

ssion="(^x\s*

c" Font Names=XXX) XXX XXXXressionValidat

>

" size="2"><b

" size="2">Ca

List ID="ccTypMasterCard</asVisa</asp:ListnList>

dValidator ID

c" InitialValu

ldValidator>

ast Name:</fon

h="40" Width="

ddress:</font>

th="200px" run

tate:</font>

="30px" MaxLenode:</font>&nb60px" MaxLengt

or ID="Regular

alidationExpre

r">tstor>

hone:</font>

ngth="20" runa

D="phoneReqVal

s="Verdana" Fo

or ID="phoneRe

*[0 9]{5}$)|(^

="Arial" Font

tor>

b>Credit Card

ard Type:</fon

pe" Font Namessp:ListItem>tItem>

D="ccTypeReqVa

ue="" Font Nam

���� �

nt>

"200px" runat=

>

nat="server" /

ngth="2" runatbsp;th="5" runat="

rExpressionVal

ession="^\d{5}

at="server" />

l" ControlToVa

ont Size="12"

egexVal" Contr

^(\([1 9][0 9]

Size="11" run

Information</

nt>

s="Arial" Repe

al" ControlToV

mes="Verdana"

�? � ����

="server" />

/>

t="server" />

"server" />

lidator1"

}$" Display="S

>

alidate="phone

runat="server

rolToValidate=

]{2}\)\s)?[1

nat="server">

/b></font>

eatLayout="Flo

Validate="ccTy

Font Size="12

����� �� F

&nbsp; <font

Static" Font

e"

r">

="phone"

9][0 9]{2} [0

ow" runat="se

ype"

2" runat="ser

F������

�)

rver">

rver">

www.depurando.com 262

Page 263: ASP .NET Framework 3.5

ErrorM

Number

ErrorM

algori

number

</td></tr><tr><td al<font

</td><td><asp

</td><td>

<aspMessage="Card Dis *

</asp <aspr. " Cli Fon Not a v

</asp</td>

</tr><tr><td al<font

</td><td><asp<as<as<as<as<as<as<as<as<as<as<as<as<as<as<as<as<as<as<as

</asp</td><td>

<aspMessage="Expir Dis *

</asp</td>

</tr></table><br /><br /><input runa<br /><br /><hr width=

<script typ

function c { var cc var cc var i,

// SAM // Baseithm ) // is urs.

// Get ccSans if(ccSa arg ret }

// Conv

ign="right">t face="Arial

:TextBox ID="

:RequiredFielNumber. " splay="Dynami

p:RequiredFie:CustomValida

ientValidationt Size="11"valid credit p:CustomValid

ign="right">t face="Arial

:DropDownListsp:ListItem><sp:ListItem>0sp:ListItem>0sp:ListItem>0sp:ListItem>0sp:ListItem>1sp:ListItem>1sp:ListItem>0sp:ListItem>0sp:ListItem>0sp:ListItem>0sp:ListItem>0sp:ListItem>0sp:ListItem>0sp:ListItem>0sp:ListItem>0sp:ListItem>1sp:ListItem>1sp:ListItem>1p:DropDownLis

:RequiredFielration Date. splay="Static

p:RequiredFie

at="server" t

"600" size="1

pe="text/java

cClientValida

= arguments.SansSpace;digits, tota

PLE ONLY. Noed on ANSI X4

used to gener

the number, Space = cc.reansSpace.lengguments.IsValturn; // in

vert to array

" size="2">Ca

ccNum" runat=

dValidator ID

c" Font Names

ldValidator>ator ID="ccNum

onFunction="ccrunat="servercard number. dator>

" size="2">Ex

t ID="expDate"</asp:ListItem6/00</asp:Lis7/00</asp:Lis8/00</asp:Lis9/00</asp:Lis0/00</asp:Lis1/00</asp:Lis1/01</asp:Lis2/01</asp:Lis3/01</asp:Lis4/01</asp:Lis5/01</asp:Lis6/01</asp:Lis7/01</asp:Lis8/01</asp:Lis9/01</asp:Lis0/01</asp:Lis1/01</asp:Lis2/01</asp:List>

dValidator ID"c" InitialValu

ldValidator>

ype="submit"

" noshade="no

script">

te(source, ar

Value;

l;

t a real worl.13, the LUHN

ate and/or va

parse out anyplace(/\D/g,gth != 16) { id = false; valid ccn

y of digits

ard Number:</f

="server" />

D="ccNumReqVal

s="Verdana" Fo

mCustVal" Cont

cClientValidatr"> Must contain

xpiration Date

" runat="servem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>stItem>

D="expDateReqV

ue="" Font Nam

value="Sign I

oshade" />

rguments)

ld actual credN formula (als

alidate and ve

y non digits, "");

���� �

font>

l" ControlToVa

ont Size="12"

trolToValidate

te" Display="S

n 16 digits.

e:</font>

er">

Val" ControlTo

mes="Verdana"

In" />

dit card algoso known as th

erify the accu

should have 1

�? � ����

alidate="ccNum

runat="server

e="ccNum" Erro

Static" Font N

oValidate="exp

Font Size="12

.he modulus 10

uracy of some

16 left

����� �� F

m"

r">

orMessage="Ca

Names="Arial"

pDate"

2" runat="ser

or mod 10

credit card

F������

�*

ard

rver">

www.depurando.com 263

Page 264: ASP .NET Framework 3.5

</</di

</body</html

digits for(i= dig

// Doub for(i= dig if }

// Sum total = for(i=

// Resu if( tot arg ret } else arg ret } }

</script>

</center>/form>iv>y>l>

= new Array(0; i<16; i++)gits[i] = Num

ble & sum dig0; i<16; i+=2gits[i] *= 2;(digits[i] >

the numbers = 0; 0; i<16; i++)

ultstal % 10 == 0guments.IsValturn; // v

{guments.IsValturn; // in

16);

mber(ccSansSpa

gits of every ) {

9) digits[i

total +=

) { id = true; valid ccn

id = false; valid ccn

ace.charAt(i))

other number

i] = 9;

= digits[i];

���� �

;

�? � ��������� �� FF������

www.depurando.com 264

Page 265: ASP .NET Framework 3.5

AApliicaccio

���

;��

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mnecon

�� �

��$�

MCsn .N

�?�

���

CTS:WebNET

3

:bT

5

www.depurando.com 265

Page 266: ASP .NET Framework 3.5

��

Mét

1

Opci<asp:Goto

Opci<inpuButto

<scri// <!functdocum}// ]]</scr

2

Un co

prote{

}

Page

AcceUna dWebocurrobjetentre.NETdatosbien

��� �

todos de

1. Desde

ión a)HyperLink INavigateTes

ión b)ut id "Buttoon1 onclick(

ipt languageCDATA[

tion Button1ment.locatio

>ript>

2. Cross�

ontrol está c

ected void P{

if (Prev { lblD }

else { lblD ((Te Labe }

}

.PreviousPag

ediendo ade las actividutilizando Arido que requtos Session, Ce múltiples pFrameworks de un formdefinida, era

�� ;��

Navegac

el lado de

D "HyperLint2 </asp:Hyp

on1" type "b)" />

e "javascrip

onclick()on "Navigate

Page

onfigurado p

Page Load(ob

viousPage

Data.Text

Data.Text extBox)Previel1.Text R

ge, Obtiene l

a datos fudades que reASP.NET es lauieres accedCache, Cookiaginas, es mya contabamulario anteria algo asi com

��$��

ción

el cliente.

k1" runat "sperLink>

utton" value

t" type "tex

{Test2.aspx";

para realizar

ject sender,

null)

"No Previous

ousPage.Findequest.Form

a página que

ertementecurrentemede pasar da

der a controleies o el Quer

muy común esmos con un sior en otro amo un truco

��

server" Navi

e "Goto Navi

xt/javascrip

;

una PostBac

, EventArgs

sPage";

dControl("tx["txtData"];

e transfirió e

te tipadosnte realizamatos entre foes de la págiryString paraste escenarioencillo mecactual, solo qcon el VIEW

igateUrl "~/

igateTest2"

pt">

ck a una pág

e)

xtData")).Te;

el control a la

smos cuando drmulario Wena anterior ya persistir loso y por esa ranismos adicue no contaSTATE y aspe

���

/NavigateTes

onclick "re

ina Web dife

ext;

a página actu

desarrollamoeb. Cuantas vy en ocasions datos entreazón desde lcional para reba con una iectos de la c

�� �?�� ;�

t2.aspx">

eturn

erente.

ual.

os una aplicacveces no te hes utilizamoe postbacks ola versión 1.eferenciar lomplementacclase Page.

���$���

ciónhas loso1 deloscion

www.depurando.com 266

Page 267: ASP .NET Framework 3.5

Peroimplepágincontr

En la

1: pu2: {3:4:5:6:7:8:9:10: g11:12:13:14:15:16:17: }

En la pagin

<%@

Esta dtravéde auPrevioanter

En la

1: pu 2: { 3: 4: 5: 6:

7: 8: 9: }

desde ASP.Nementación.na anterior proles.

página inicia

ublic partial

public Text{ get { ret}public Text{

get { return

}protected{

}}

segunda pána anterior, a

@ PreviousPage

directiva noss del atributo

uto generar dousPage perrior.

segunda pá

ublic partial

protected{ Label1.T Label2.T

}

NET 2.0 hanLa clase Pre

permitiéndon

al colocamos

class Defa

tBox pp Nom

turn TextBox

tBox pp Tele

TextBox2; }

d void Page

gina, justamagregamos la

eType VirtualP

s permite espo VirtualPathde manera tirmitiéndonos

gina solo esc

class Defau

void Page

Text = PrevioText = Previo

mejorado esviousPage nnos entre otr

s nuestros co

ult : System.

mbre

x1; }

efono

}

Load(object

mente en la páa siguiente d

Path="~/Defa

pecificar que h especificampada los contener acceso

cribimos el s

ult2 : System

Load(object

ousPage.ppousPage.pp T

ste tipo de eos permite aras cosas ref

ontroles los e

.Web.UI.Pag

t sender, Eve

ágina dondeirectiva:

ult.aspx" %>

deseamos lemos la páginantroles de la o y referenci

iguiente cód

m.Web.UI.Pag

sender, Eve

Nombre.TextTelefono.Tex

scenario hacacceder a mierenciar los v

exponemos c

ge

entArgs e)

e queremos r

>

eer informaca anterior, copágina anteriar los miemb

igo para leer

ge

entArgs e)

t;xt;

���

ciendo más eembros de lavalores y pr

como propied

eferenciar lo

ción de la págon esto, ASPrior en una cbros de la cla

r nuestros da

�� �?�� ;�

elegante sua clase de laopiedades d

dades, ejemp

os datos de u

gina anteriorP.NET se encclase llamadaase de la pág

atos:

���$���

e los

plo:

una

r y a cargaagina

www.depurando.com 267

Page 268: ASP .NET Framework 3.5

3

Resp

prote{

}

4

HttpFinalisolici

prote{

}

UsaDesd

<?xml<site

<

<</sit

La cla

��

Ambas

Un Site

���

Desde

����

3. El códigque de

ponse.RedirRedirecci

ected void B{ Response

}

4. Su códidiferen

ServerUtiliiza la ejecucitud actual.

ected void B{ Server.T

}

ando SiteMe Visual Stud

l version "1eMap xmlns "<siteMapNode <siteMap <siteMap

</siteMapNodteMap>

ase SiteMap

La propieda

CurrentNod

s propiedades d

eMapNode rep

Title

Url

Description

SiteMapNode

ParentNode

ChildNodes

NextSibling

PreviousSib

go de servbe pedir o

rectona un clien

Button1 Clic

e.Redirect("

igo de sernte.

ity.Transferión de la pág

Button2 Clic

Transfer("Ej

Mapdio podemos

.0" encodinhttp://schem

e url "" titpNode url ""pNode url ""de>

provee acce

ad RootNode

de

decuelven un S

presenta un nod

n

podemos acce

e

s

g

bling

vidor envotra págin

te a una nue

k(object sen

Ejemplo4Dest

rvidor tra

rgina actual e

k(object sen

emplo4Destin

s agregar un

g "utf 8" ?>mas.microsofle "" descrtitle "" dtitle "" d

eso a traves d

iteMapNode.

do en el SiteMa

der a :

vía unmena web

eva dirección

nder, EventA

tino.aspx");

ansfiere el

inicia la ejec

nder, EventA

no.aspx");

SiteMap (o

>ft.com/AspNeription "">descriptiondescription

de programa

ap y provee pro

nsaje al n

n URL y espe

Args e)

;

l control a

cución de un

Args e)

un mapa del

et/SiteMap F

"" /> "" />

ación:

opiedades con in

���

navegador

cifica la nuev

a una pág

a nueva pág

sitio).

File 1.0" >

nformación sob

�� �?�� ;�

r informa

va URL.

ginaWeb

gina para la

bre:

���$���

�ando

www.depurando.com 268

Page 269: ASP .NET Framework 3.5

prote{

}

Tes

1. Whto

A

2. Wh

D

3. Yos

A

ected void B{ Response

}

t

hich of the fo a different

A. Redirect

B. NextPage

C. Transfer

hich control

A. SiteMenu

B. SiteMapV

C. SiteMenu

D. SiteMapPa

ou want to pite map. Wh

A. NavigateS

B. SiteMap

C. Map

D. Navigato

Button1 Clic

e.Redirect(S

following serWeb page w

e

requires the

uView

View

u

ath

rovide an Uphich class can

Site

r

k(object sen

iteMap.Curre

rver-side mewithout requi

Web.sitemap

p button for n you use to a

nder, EventA

entNode.Pare

thods can bering a round

p file to disp

your Web paccess the sit

Args e)

entNode.Url)

e used on thetrip to the cl

play site map

pages to progte map to acc

���

;

e HttpServerlient?

p information

grammaticallcomplish thi

�� �?�� ;�

rUtility to na

n?

ly navigate us?

���$���

vigate

up the

www.depurando.com 269

Page 270: ASP .NET Framework 3.5

AApliicaccio

��

��

��

��

T

Mnecon

���

����

����

��

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsn .N

� !?

��

� ��

��

CTS:WebNET

3

:bT

5

www.depurando.com 270

Page 271: ASP .NET Framework 3.5

��

EligservLa codenorealiz

La adtravé

La infpersoo en

Si seopciorendi

Si esusanddel cl

���

giendo envidornexión que smina sesiónza mediante

dministraciónés de múltiple

formación deonalización, oel servidor.

almacena enones en el ladimiento del s

almacenadodo técnicas dliente.

����

ntre man

se establece. Las sesionela administr

n del estadoes peticiones

el estado, coo los objetos

n el cliente, edo del clientservidor porq

o en el servidde manejo d

��� �

tener el e

entre un uses pueden abación del est

es el procesos para las mi

omo por ejems de un carro

el cliente enve tienden a tque no existe

or, el servidoel estado. La

�����

estado en

uario (el equbarcar múltiptado.

o por el cualismas o disti

mplo, el nomo de la comp

vía la informtener seguride demanda e

or la almacea seguridad d

���� !

�� ��

n el lado

uipo cliente)ples páginas

mantenemontas páginas

mbre de usuara, pueden s

ación al servdad mínima,en el servido

na, pero tiende estas opci

!? � �����

���

del clien

y un servidoWeb y su se

os la mismas Web.

rio, las opcioser almacena

vidor con cadpero ofrece

or para mant

ne que pasariones es may

�� �����

nte o en e

or Web seguimiento se

información

ones deados en el cli

da petición. Len un rápidoener el estad

rla al clienteyor que en e

�� �����

el

e

a

ente

Las

do.

l lado

www.depurando.com 271

Page 272: ASP .NET Framework 3.5

ViewLos foincluipágin

<inputvalue=F/pMGn

EncrPara

<conf <sy

< </s</con

Para

<%@ PInher

wStateormularios Wida para conna. La propie

t type="hidde="/wEPDwUKMTInqjqHlH66cdw==

riptandola aplicación

figuration>ystem.web><pages viewSsystem.web>nfiguration>

una página c

Page Languagrits " Defau

Web Forms pservar automdad ViewSta

n" name="__VIxNDIyOTM0Mg9k=" />

ViewStatn web

tateEncrypt

>

concreta

ge "C#" Autoult" ViewSta

proporcionanmáticamenteate se manti

IEWSTATE" id="kFgICAw9kFgICA

e

ionMode "Alw

EventWireupteEncryption

n la propiedae valores entene como un

"__VIEWSTATE" AQ8PFgIeBFRleH

ways"/>

"true" CodenMode "Alway

���� !

ad ViewStatetre múltiplesn campo ocu

HQFEzQvNS8yMDA

eFile "Defauys"%>

!? � �����

e como una epeticiones a

ulto en la pág

A2IDE6Mzc6MTE

ult.aspx.cs"

�� �����

estructuraa la mismagina.

EgUE1kZGROWHn/

�� �����

rt75X

www.depurando.com 272

Page 273: ASP .NET Framework 3.5

DesMantproceEnab

Leerif (V

En el

if

Con

Cam<inpu

CooLas coaplicaemplvisiteprevi

La maa estedatosidentdatos

habilitartener un estaesamiento enleViewState

r y EscribViewState["l Labe

else Labe

// Defin ViewStat

ViewState p

(ViewState[ Labe

else Labe

// Defin ViewStat

ntrolState

mpos Ocuut type=”hidd

okiesookies propoaciones Webearse para ae el sitio Webamente.

ayoría de lose límite, es rs, o mejor aútificar al usuas.

ViewStatado de vistan el servidora false

bir ViewStastVisit"]

el1.Text (

el1.Text "ne the ViewSte.Add("lastV

podemos alm

"lastVisit"el1.Text (

el1.Text "ne the ViewSte["lastVisi

e

ultosden” name=

orcionan unb. Por ejempalmacenar lasb de nuevo, l

s exploradoreecomendablún, un identifario y leer inf

tepara cada cor y el tamaño

tate! null)string)ViewS

lastVisit Vitate object Visit", Date

macenar cual

] ! null)(DateTime)Vi

lastVisit Vitate object t"] DateTi

=”nombre” va

medio paralo, cuando us preferenciaa aplicación

es admiten cle utilizar lasficador comoformación re

ontrol supono de la página

State["lastV

iewState notfor the nex

eTime.Now.To

quier objeto

iewState["la

iewState notfor the nex

ime.Now;

alue=”valor”

almacenar inn usuario visas del usuaripodrá recup

cookies de us cookies paro un id. de uelativa a éste

���� !

ne sobrecarga, establecem

Visit"];

t defined.";xt page viewoString());

o que sea Ser

astVisit"]).

t defined.";xt page view

”/>

nformación esita un sitio,o u otra infoperar la infor

n tamaño mra almacenarsuario. Estee de una bas

!? � �����

a. Para redumos la propi

w

rializable

ToString();

w

específica delas cookies pormación. Curmación que

áximo de 40r pequeñas cid. se puedee de datos u

�� �����

cir el tiempoedad

el usuario enpuedenuando el usuaalmacenó

96 bytes. Decantidades de utilizar parau otro almacé

�� �����

�o de

las

ario

ebidoeaén de

www.depurando.com 273

Page 274: ASP .NET Framework 3.5

Los epuedcookiexplocooki

EscrRespoRespoHttpCaCookaCookRespo

El ejemPara la

Para lacontinHttpCo

Amboscaducique toun obj

Puedevariossubclacrear duserIn

Son vainformcookiedistint

LimiDe fotodasun sitlas co

xploradorese almacenaries por sitio;oradores tamies que acep

ribir Cookonse.Cookiesonse.CookiesCookie aCookkie.Value kie.Expiresonse.Cookies

mplo agrega doa primera cooki

a segunda cookuación, lo agreookie, se debe

s ejemplos llevaidad debe ser dodos los valoresjeto String.

e almacenar unpares de nomb

aves se disponedos cookies indfo que tenga la

arias las razonemación relacionae, los atributostas fechas de ca

Response. Response Response

HttpCook aCookie. aCookie. aCookie. Response

itar el ámbiorma predetes ellas se envtio obtiene tookies de do

Limite ellas cookie

también imr en el equipsi se intenta

mbién defineptan desde to

kies["userName"["userName"

kie new HtDateTime.Now

DateTime.N.Add(aCooki

os cookies a la cie, los valores d

kie, el código crega a la colecciópasar el nombr

an a cabo la mide tipo DateTims de las cookies

valor en una cobre y valor en un de forma simdependientes deas subclaves use

s que hacen acada o similar ende ésta, comoaducidad a disti

.Cookies["use.Cookies["ue.Cookies["u

kie aCookie Values["useValues["lasExpires D

e.Cookies.Ad

itoerminada, tovían al servidodas las coos maneras:

ámbito de laes a una apli

ponen limitao del usuarioa almacenarn un límite aodos los sitio

].Value "p].Expires tpCookie("law.ToString()Now.AddDayse);

colección Cookide la colección C

ea una instanción Cookies a trare de la cookie

sma tarea: escrme. Sin embargose almacenan

ookie, como eluna sola cookie.milar a una cadeenominadas userName y lastV

onsejable el usn una sola cookla caducidad, seintos tipos de in

serInfo"]["userInfo"]["lserInfo"].Ex

new HttpCorName"] "ptVisit"] DateTime.Nowd(aCookie);

odas las cookdor con cualqokies para ese

as cookies acación del si

aciones respeo. La mayoríamás, las cooabsoluto, noros en conjunt

patrick";DateTime.No

astVisit"););(1);

es, una denomCookies se esta

ia de un objetoavés del métodcomo parte de

riben una cooko, el valor lastVcomo cadenas,

nombre de usu. Estos pares deena de consultaserName y lastVVisit.

o de subclaveskie. Además, dae aplican a todanformación, de

userName"] lastVisit"]xpires Dat

ookie("userIpatrick";DateTime.Now.AddDays(1);

kies de un sitquier solicitue sitio. Sin em

una carpetatio.

���� !

ecto al númea de los explokies más antrmalmente 3to.

ow.AddDays(1

inada userNamablecen directa

de tipo HttpCoo Add. Cuandol constructor.

ie en el exploraisited también, el valor de fec

uario y la últimae nombre y valoen una direcció

Visit, puede cre

. En primer lugaado que toda laa la informaciónebería almacena

"patrick";DateTime.

teTime.Now.A

Info");

w.ToString();

tio se almaceud para ese smbargo, pue

del servidor

!? � �����

ero de cookieoradores sótiguas se des300, en cuant

1);

me y la otra denmente.

ookie, estableceo se crea una ins

ador. En amboses un valor decha y hora se tie

a visita. Tambiéor se denominaón URL.) Por ejar una sola coo

ar, es convenieinformación esn. (A la inversa,ar ésta en cook

Now.ToStrinAddDays(1);

;

enan juntas eitio. Es decirede establece

r, lo que le pe

�� �����

es que cadalo permitenscartan. Alguto al número

ominada lastVi

e sus propiedadstancia de un o

s métodos, el vafecha y hora. Dene que conver

én puede almacan subclaves. (Lemplo, en lugaokie denominad

nte colocar lastá en una sola, si desea asignies independie

ng();

en el clienter, cada páginer el ámbito

ermitirá limit

�� �����

�sitio20unoso de

isit.

des y, aobjeto

alor deDadortir en

cenarasr deda

arntes.)

ya dede

tar

www.depurando.com 274

Page 275: ASP .NET Framework 3.5

LimiParacomo

HttpC

La rutvirtuacarpewwwcuyabajoaplica

LimiDe fositio esolicide acsalesconcr

Respo

Cuanpáginuna csiguie

Respo

De esdomi

LeerCuanjuntoHttpRobjetlectu

Establezcun domin

itar las cooklimitar las coo en el ejemp

Cookie appCo appCooki appCooki appCooki Response

ta de accesoal. El efecto ceta Applicatiow.contoso.coruta de accedicha carpetaciones, com

itar el ámbiorma predetees www.contan una págicceso determ.contoso.comreto. Para el

onse.Cookies Response Response

do el dominnas del subdocookie que seente:

onse.Cookies Response Response

sta manera,nios sales.co

r Las Cookdo un exploro con la soliciRequest, queto HttpRequera de las coo

ca el ámbitonio que pued

kies a una cookies a unaplo siguiente

ookie newe.Value "we.Expires e.Path "/A

e.Cookies.Ad

o puede ser uconseguido son1 o para lam, la cookieeso sea http:ta. Sin embarmo http://ww

ito de domierminada, latoso.com, laina de ese sitminado.) Si sum y support.lo, establezc

["domain"].Ve.Cookies["de.Cookies["d

io se estableominio espece pueda com

["domain"].Ve.Cookies["de.Cookies["d

la cookie estontoso.com y

kiesrador realizaitud. En sus ae está disponest es esencokies del obje

en un dominden tener acc

carpeta o apcarpeta del

e:

HttpCookie("written " + DateTime.No

Application1d(appCookie)

una ruta de aserá que la ca raíz virtualcreada en e//www.contrgo, la cookieww.contoso.c

inio de las cs cookies seas cookies qutio. (Esto pou sitio tiene scontoso.comca la propied

Value Dateomain"].Expiomain"].Doma

ece de esta mcificado. Tammpartir entre

Value Dateomain"].Expiomain"].Doma

tará disponiby support.co

a una solicituaplicacionesnible como pialmente la meto HttpReq

nio, lo que leceso a una co

plicaciónservidor, est

"AppCookie")DateTime.No

ow.AddDays(11";);

acceso físicacookie sólo e. Por ejempll ejemplo antoso.com/Ape no estará dcom/Applica

cookiesasocian a un

ue escriba sedría no inclusubdominiosm, puede asoad Domain de

eTime.Now.Toires DateTain "suppo

manera, la combién puedee varios subd

eTime.Now.Toires DateTain "conto

ble para el doontoso.com.

ud al servidorASP.NET, pu

propiedad Remisma que lauest se reali

���� !

e permitirá esookie

tablezca la p

);ow.ToString(1);

situada bajoestará dispono, si su sitionterior estarápplication1/ ydisponible paation2/ o htt

n dominio esenvían al se

uir las cookies, por ejempociar las cooke la cookie, c

oString();Time.Now.Addort.contoso.

ookie sólo ese utilizar la prominios, com

oString();Time.Now.Addoso.com";

ominio princ

r, envía las cuede leer lasequest de la ca del objetoza de maner

!? � �����

specificar los

ropiedad Pa

();

o la raíz del snible para lasse denominaá disponibley para las páara las páginp://www.co

specífico. Porervidor cuands que tenganlo, contoso.ckies a un subcomo en este

dDays(1);com";

tará disponiropiedad Domo se muest

dDays(1);

cipal, así com

ookies paracookies medclase Page. LHttpResponra similar a la

�� �����

s subdominio

th de la cook

itio o una ras páginas deapara las págginas situadas de otrasntoso.com/.

r ejemplo, sido los usuarin un valor decom,bdominioe ejemplo:

ble para lasomain para ctra en el ejem

mo para los

ese servidordiante el objLa estructuranse, por lo qua escritura d

�� �����

�os de

kie,

ízla

inasas

suose ruta

rearmplo

retoa delue lae las

www.depurando.com 275

Page 276: ASP .NET Framework 3.5

cookimanecontr

if (R

ServCon elos nase tramueséste.

<% Rfunc

EstecomoEsto

Y estEsto

Antesexisteque smostsecue

Del mestabde un

if (R

En elprevivalorconve

DateT

ies en el objeeras de obterol Label:

Request.Cook Labe

if (Requ {

Http Labe }

er.HTMLEneste métodoavegadores,ata de obtenstra como siVeamos un

Response.Wciona")) %

sería el códo tal: o es un br

to es lo queo es un br

s de intentare; si no es asse ha llamadorarlo en la pencia de com

mismo modoblecimiento.na subclave:

Request.Cook { Labe

Labe

}

ejemplo antamente en les en formaertirlo al tipo

Time dt; dt Dat

eto HttpRespner el valor d

kies["userNamel1.Text S

uest.Cookies

pCookie aCooel1.Text S

ncode("Strio se puede coen código soer, partiendofuese HTML,ejemplo:

Write(Serv%>

digo interno

reak &lt;B

e mostrará ereak <BR>

r obtener el vsí, se iniciaráo al métodoágina. Esto gmandos ejecu

, la lectura dEn el ejemp

kies["userIn

el1.Text Server.Html

el2.Text Server.Html

terior, el códa representade cadenas,o apropiado,

teTime.Parse

ponse. En elde una cooki

me"] ! nullerver.HtmlEn

["userName"]

kie Requeserver.HtmlEn

ing")onvertir un solamente viso de HTML n, en realidad

ver.HTMLEn

o obtenido, v

BR&gt; que

s navegadoque no fu

valor de unauna excepciHtmlEncodegarantiza queutables a la c

del valor de ulo de código

fo"] ! null

Encode(Reque

Encode(Reque

digo lee el vaación de cade, por lo que scomo en es

(Request.Coo

ejemplo deie denomina

l)ncode(Reques

] ! null)

st.Cookies["ncode(aCooki

tring codificasible pero nonormal, un tid es ASCII pu

ncode("Est

visible en fo

e no funci

r:unciona

a cookie, debón NullRefee para codifice un usuariocookie.

una subclavesiguiente se

l)

est.Cookies

est.Cookies

lor de la subena de un vasi desea utilizte ejemplo:

okies["userI

���� !

código siguieada usernam

st.Cookies["

"userName"];ie.Value);

ado en HTMo ejecutablepo de códigoro. Es útil pa

to es un b

ormato HTM

iona

bería asegurarenceExceptcar el contenmalintencio

e de una cooke muestra un

["userInfo"]

["userInfo"]

bclave lastVisalor DateTimzar el valor la

Info"]["last

!? � �����

ente se muee y mostrar

"userName"].

L, y por tantpor los naveo que aunqura escribir m

break <BR>

ML pero no

arse de que dion. Tenga enido de una conado no ha

kie es similarna manera de

["userName"

["lastVisit

sit, que se esme. Las cookieastVisit com

tVisit"]);

�� �����

estran dossu valor en u

Value);

o ejecutableegadores. Ese el navegad

manuales com

> que no

o ejecutable

dicha cookieen cuenta tamcookie antesagregado un

r a sue obtener el

]);

t"]);

stablecióes almacenao fecha, deb

�� �����

!un

e pordecir,dor lomo

e

mbiéns dena

valor

nbe

www.depurando.com 276

Page 277: ASP .NET Framework 3.5

Las su

mane

conti

if (R

LeerSyste

ModNo es

consi

explo

siguie

visita

int c

ElimLa elivariase enelimise deel expejempara

HttpC

ubclaves de u

era de obten

nuación, ext

Request.Cook { Syst

User Labe

Labe

}

r coleccioneem.Text.Stri

HttpCookfor (int

{ aCoo outp

outp

} Label1.T

dificar y es posible mo

ste en crear

orador para q

ente se mues

as del usuario

counter;if (Requ

counelse

{ coun } counter+

Response

Response

minar las cminación deción del procncuentra en ene. La técnicesea eliminarplorador complo de códigla aplicación

Cookie aCook

na cookie son

ner una subcl

raer el valor d

kies["userIn

tem.CollectiUserInfoCoo

rInfoCookieCel1.Text Server.Html

el2.Text Server.Html

es de cookiengBuilder o

kie aCookie; t i 0; i <

okie Requeput.Append("+ "<br />")

put.Append("+ "<br /><b

Text outpu

eliminar laodificar direct

una nueva c

que sobrescr

stra cómo m

o al sitio:

uest.Cookiesnter 0;

nter int.P

++;

e.Cookies["c

e.Cookies["c

cookiese una cookie,ceso de model equipo deca consiste er, pero estabmpruebe la cgo siguiente sn:

kie;

n una colección

lave determi

de la subclave

fo"] ! null

ons.SpecialikieCollectio

ollection

Encode(UserI

Encode(UserI

esutput new

Request.Coo

st.Cookies[iCookie name ;Cookie valuer />");

t.ToString()

as cookietamente una

cookie con n

riba la versió

modificar el va

["counter"]

arse(Request

ounter"].Val

ounter"].Exp

, es decir, sudificación. Nol usuario. Sinn crear una nbleciendo sucaducidad dese muestra u

n de tipo Nam

inada es obt

e por su nomb

l)

ized.NameValon;

Request.Coo

InfoCookieCo

InfoCookieCo

System.Text

okies.Count;

i]; " + Serve

e " + Serv

);

sa cookie. En

uevos valore

ón antigua en

alor de una c

null)

t.Cookies["c

lue counte

pires = Date

borrado físio es posible en embargo, pnueva cookiecaducidad ee la cookie, launa manera d

���� !

meValueCollect

ener la colec

bre, como se m

lueCollectio

okies["userI

ollection["u

ollection["l

t.StringBuil

; i++)

er.HtmlEncod

ver.HtmlEnco

su lugar, el p

es y, a contin

n el cliente. E

cookie que a

counter"].Va

er.ToString(

eTime.Now.Ad

co del discoeliminar direpuede consee con el mismn una fechaa descartaráde eliminar t

!? � �����

tion. Por cons

cción de subc

muestra en el

on

Info"].Value

userName"]);

lastVisit"])

lder();

de(aCookie.N

ode(aCookie.

proceso que

nuación, env

En el ejemplo

almacena un

alue);

();

ddDays(1);

duro del usuectamente unguir que el emo nombre qanterior a laporque estátodas las coo

�� �����

siguiente, otra

claves y, a

ejemplo sigu

es;

;

Name)

Value)

se debe seg

iarla al

o de código

recuento de

uario, es unana cookie, yaexplorador laque la cookiea actual. Cuaá anticuada.okies disponi

�� �����

"

a

iente:

uir

e las

aa queae quendoEn elibles

www.depurando.com 277

Page 278: ASP .NET Framework 3.5

QueSon p2083

Label", Pr", Pa

Tes

1. Yoom

A

2. Yoaru(C

A

3. Yodds(C

string cint limifor (int

{ cook aCoo aCoo Resp }

eryStringpares nombrcaracteres p

http://s

http://s

l1.Text "Urefs: " + Seage: " + Ser

t

ou need to ston your site smanagement

A. Client-side

B. Server-sid

ou need to tradditional loaunning a coChoose the b

A. Client-side

B. Server-sid

ou are creatdatabase. Whdo not need tide state maChoose the b

A. View stat

cookieName;t Request

t i 0; i <

kieName Reokie new Hokie.Expiresponse.Cookie

ge/valor quepor el métod

upport.micros

earch.microso

User: " + Seerver.HtmlEnrver.HtmlEnc

tore a user’s so that you cshould you u

e state manag

de state man

rack non-conad on your sopy of your best answer.)

e state manag

de state man

ting an ASPhile the user ato store the ianagement wbest answer.)

te

.Cookies.Coulimit; i++)

quest.CookiettpCookie(co

DateTimes.Add(aCooki

se pasan endo Http GET

soft.com/Defau

oft.com/result

rver.HtmlEnccode(Requestode(Request

user name acan pass thosuse? (Choose

gement

agement

nfidential useervers. You application.

)

gement

agement

P.NET Web accesses the information b

would meet y)

unt;)

es[i].Name;ookieName);.Now.AddDaysie);

la cadena de

ult.aspx?kbid=

ts.aspx?mkt=en

code(Requestt.QueryStrin.QueryString

and passwordse credentiale the best an

er preferencedistribute re

. Which typ

form that apage, you nebetween visiyour requirem

���� !

s( 1);

e consulta de

=315233

n US&setlang=

t.QueryStrinng["prefs"])g["page"]);

d as he or shs to back-enswer.)

es when a usequests amonpe of state m

allows a useeed to track sits to the Wements and b

!? � �����

el navegador

en US&q=hello

ng["user"]) +

he navigates nd servers. W

er visits young multiple Wmanagement

r to browsesearch and soeb page. Whbe the simple

�� �����

r con un limi

o+world

+

to different Which type of

ur site to minWeb servers

should you

informationorting values

hich type of cest to imple

�� �����

)

te de

pagesf state

nimize , each

u use?

n in a s. You client-ment?

www.depurando.com 278

Page 279: ASP .NET Framework 3.5

4. Ysetpreftypeimp

5. Yitemresusim

B. Control st

C. Hidden fiD. CookiesE. Query str

You are creatuser prefereferences to be of client-plement? (Ch

A. View s

B. Contro

C. Hidden

D. Cooki

E. Query

You are creams that matcults. Which

mplest to impl

A. View s

B. Contro

C. Hidden

D. Cooki

E. Query

tate

ields

ings

ting an ASP.ences and habe remember-side state mhoose the bes

state

ol state

n fields

es

strings

ating an ASPh the user’s type of clie

lement? (Cho

state

ol state

n fields

es

strings

NET Web siave each pagred between managementst answer.)

P.NET Web criteria. You

ent-side statoose the best

ite with dozege process tvisits, even it meets you

form that seu want userste managemt answer.)

���� !

ens of pages.the preferencif the user clur requirem

earches the ps to be able

ment meets y

!? � �����

You want toce informatioloses the Weents and is

product invento bookmark

your require

�� �����

o allow the uon. You wa

eb browser. Ws the simple

ntory and disk or e-mail sements and

�� �����

*

user to nt the

Which est to

splays search is the

www.depurando.com 279

Page 280: ASP .NET Framework 3.5

AApliicaccio

��

��

��

%�

Mnecon

���

����

����

����

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsn .N

� !?�

��

� ��

���

CTS:WebNET

3

��

:bT

5

www.depurando.com 280

Page 281: ASP .NET Framework 3.5

��

EstaUna aimáge

El arcdirect

Entre

�����

CuanApplitodasaplicaembaocurrpeticdesen

La infde obpropia la cmedi

ParaelemGloba

��� �

ado de Apaplicación wenes que se

chivo global.atorio virtual

e otras cosas

Applicatio

Applicatio

Applicatio

Session_S

Session_E

do la aplicaccation_Starts las peticionación. Esta seargo, el reinire tras satisfaión. Cuandoncadenando

formación pubjetos, estaniedad Applicolección Conante código.

añadir un arento. En el cal.

� ����

plicacióneb está formencuentran

asax contiende la aplicac

, el archivo g

on_Start

on_End

on_Error

Start

End

ción recibe lat. Si se editanes pendientecuencia reicio de la apliacer cualquiese recibe laotro evento

uede compado cada objeation de la cntens, cuyo c.

rchivo globalcuadro de diá

��� �

nmada por toden un direct

ne el código gción

global.asax c

a primera peel archivo gltes, se desennicia la aplicicación es traer solicitud psiguiente peo Application

rtirse globaleto asociadoclase HttpAppcontenido he

.asax a un prálogo Agrega

�����

as las páginatorio virtual o

global para la

ontiene cont

tición de usuobal.asax y sncadenará elación, eliminansparente ppendiente, yetición, la apn_Start

mente en too a un valor cplication. Laemos añadid

royecto, hacar nuevo ele

���� !?

�� %�

as Web, archo en sus sub

a aplicación

troladores d

uario, se desse guardan loevento Appnando toda lpara todos loy antes de aclicación vuel

oda la aplicacclave. Esto sepropiedad A

do al estado A

emos clic enmento, selec

?�� ������

�����

hivos , compodirectorios.

web. Se enc

e eventos pa

encadena elos cambios,lication_Enda informacióos usuarios, yceptar cualquve a comenz

ción, mediane implementApplication pApplication d

n Sitio Web>Accionamos C

� ����� ��

��

onentes, cód

uentra en el

ara los event

eventose completay se reinicia

ón de estadoya que solouier nuevazar,

te un diccionta utilizandopermite el acdirectamente

Agregar nuevlase de Aplic

� %������

digo e

tos:

ránará lao. Sin

nariolacesoe,

vocación

www.depurando.com 281

Page 282: ASP .NET Framework 3.5

Archi

<%@ Ap

<scrip

vo {

}

vo {

}

vo {

}

vo {

}

vo {

StateS

} vo

{

ivo Global.As

pplication Lan

pt runat="serv

oid Applicatio

// Código q Application Applicationstring[] l

Application WriteFile(

oid Applicatio

// Código Application WriteFile(

oid Applicatio

// Código q

oid Session St

// Código q

oid Session En

// Código q// Nota: E// se estab

Server// o SQLSe

oid WriteFile

System.IO.string str

str = DateT

sax

nguage="C#" %

ver">

on Start(obje

que se ejecutn["MensajeInin["ConexionBdibros = { "c#n["Libros"] ="Aplicación A

on End(object

que se ejecun["MensajeFin"Aplicacion F

on Error(obje

que se ejecut

tart(object s

que se ejecut

nd(object sen

que se ejecutl evento Sessblece como In

rver, el even

(string strTe

StreamWriter;Time.Now.ToSt

>

ct sender, Ev

a al iniciarscio"] = "La Ad"] = "Server=", "Asp.Net", libros; Arrancada");

sender, Even

ta cuando se "] = "La apliFinal");

ct sender, Ev

a al producir

ender, EventA

a cuando se i

der, EventArg

a cuando finaion End se deProc en el ar

to no se gene

xt)

writer = new

ring() + " "

ventArgs e)

se la aplicaciAplicación se =zeus;Database"PcHoy", "Hi

ntArgs e)

cierra la aplicación esta t

ventArgs e)

rse un error n

Args e)

inicia una nue

gs e)

aliza una sesiesencadena sólrchivo Web.con

era.

System.IO.Str

+ strText;

���� !?

iónha iniciado";e=Pub;UID=sa;Pistoria", "Geo

licaciónterminada";

no controlado

eva sesión

ión.lo con el modonfig. Si el mo

reamWriter(@"c

?�� ������

;PWD=secret;";ografia" };

o sessionstateodo de sesión

c:\test.txt",

� ����� ��

ese establece

true);

� %������

como

www.depurando.com 282

Page 283: ASP .NET Framework 3.5

}

</scri

ConcSi vamaplicacontr

Appli

Appli

Appli((int

EstaCuanestadprocelargoun tie

Mienusuar

ASP.N

����

Por dproceproceperm

Las seservidconfignecesválido

writer.Writ weiter.Clo

ipt>

currencia ymos a permitación debemrolar el acces

cation.Lock(

cation.Unloc

cation.Lockt)Applicatio

ado de lado nos conedo a la Web yeden del misde las páginempo, que p

tras una aplrio que esté

NET proporc

Funciona

Identifica

Almacena

Produce econtrolar

Libera au

defecto, el eseso ASP.NETeso ASp.NET,manecerá aun

esiones se iddor y viceverguración desario modificos para un U

teLine(str);se();

y Bloqueotir que los us

mos utilizar loso a los objet

()

ck()

k(); Applicaon["PageRequ

a Sesiónectamos cony permite alsmo navegadnas, hasta quor defecto e

icación se esinteractuand

iona un esta

con navega

a si una petic

a datos de la

eventos de srse en el arch

utomáticame

stado de la se. Sin embarg, en otro sernque se prod

dentifican y srsa, utilizandla aplicacióncarlo medianURL, que tien

suarios modos métodos Ltos de estad

tion["PageRestCount"])+

un sitio Websitio Web redor que inicióue conscientees de 20 min)

sté ejecutanddo con el siti

do de sesión

dores que tie

ción es parte

a sesión para

sesión, comohivo global.a

ente recursos

esión se almgo, puede covidor de estaduzca un fallo

siguen con undo una cookien. .NET Framnte programaen dos carac

ifiquen los oLock y Unloco de la aplica

equestCount"+1;Applicati

b ASP.NET, ceconocer queó la sesión. Eemente term).

do, habrá vaio Web.

n con las sigu

enen desact

de una sesió

a usarlos en v

o Session_Stasax o en el c

s de la sesión

acena en lanfigurarse pado o en unao o se reinici

n SessionID de HTTP o unework gestioación. Sessiocterísticas im

���� !?

objetos almack de la claseación.

"] = ion.UnLock()

reamos unae las siguientEsto nos permminemos la se

rias sesiones

uientes carac

ivadas las co

ón existente

varias peticio

art y Sessioncódigo de otr

n si la sesión

memoría deara que se aa base de dae el proceso

de 120 bits, qURL modificona automátonID está formportantes:

?�� ������

cenados en eHttpApplica

);

sesión. La setes peticionemite mantenesión o ésta

s, básicamen

cterísticas:

ookies

ones.

_End, que pra aplicación

termina o c

l servidor, colmacene septos Sql Serveo ASP.NET

que se pasacado, dependticamente elmado por ca

� ����� ��

el estado deationState pa

esión otorgaes de esa págner el estadocaduque (pa

nte, una para

ueden

aduca.

omo parte deparado deler, en cuyo c

del cliente adiendo de laSessionID; naracteres AS

� %������

laara

unginaa loasado

a cada

el

caso

al

no esCII

www.depurando.com 283

Page 284: ASP .NET Framework 3.5

El estHttpSdiccioLos o

usingusingusingusingusingusingusingusingusingusingusing

publi{

p{

}p{

Son únicael mismo

Son aleattras cono

tado de la seSessionStateonario del esobjetos de dic

g System; g System.Colg System.Cong System.Datg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Tex

ic partial c

protected vo{

}protected vo{

if (rbl. {

stri Sess Sess

swit {

as a nivel gloSessionID.

torios, por loocer el valor

esión se impl. Esta coleccstado de la seccionario se

lections;nfiguration;ta;b;b.Security;b.UI;b.UI.HtmlConb.UI.WebContb.UI.WebContxt;

class Sessio

oid Page Loa

oid rbl Sele

SelectedInd

ng[] Libros ion["cattexion["catcod

tch (rbl.Sel

case "n": Libros[ Libros[ Libros[

break;case "d": Libros[ Libros[ Libros[

break;case "h": Libros[ Libros[ Libros[

obal, por lo q

o que es comdel SessionID

ementa utilición es un dicesión que seestablecen y

trols;rols;rols.WebPart

nState : Sys

d(object sen

ctedIndexCha

ex ! 1)

new strinto"] rbl.Se"] rbl.SeectedItem.Va

0] "Progra1] "Progra2] "C# Ess

0] "Oracle1] "Sql Se2] "TRansa

0] "PC Har1] "Diccio2] "Linux

ue no es pos

mplicado adivD de la sesió

zando la proccionario clae han añadidoy recuperan

ts;

stem.Web.UI.

nder, EventA

anged(object

ng[3];SelectedItemelectedItem.alue)

amando c#";amando ASP.Nsentials";

e";erver";ac Sql";

rdware";onario HardwDevice Driv

���� !?

sible que dos

vinar el valorn anterior.

opiedad de cove�valor queo directameusando la pa

.Page

Args e)

t sender, Ev

m.Text;.Value;

NET";

ware";vers";

?�� ������

s sesiones di

del SessionI

olección Cone contiene tonte, mediantalabra clase S

ventArgs e)

� ����� ��

ferentes ten

D de otra se

ntents de la codos los objete programaSession.

� %������

�ngan

esión,

claseetosación.

www.depurando.com 284

Page 285: ASP .NET Framework 3.5

}p{

}}

ConSe cola págnorm

El estsesió

Enab

���

Si sabsesio

Por del atralmacSql Se

En wesecció

G����

�����

} Sess }

}protected vo{

if (rbl. { lblM }

else {

Stri sb.A sb.A sb.A sb.A sb.A lblM ddl.

striint

ddl.for

{

}

} }

figuracióontrola en cagina. En una

malmente situ

tado de sesión para una p

leSessionSta

True

False

ReadOnly

bemos que nnes o en su d

defecto, el esributo modecene separaerver.

eb.config, laón <system.w

�%���� ����

����%��$

break;

ion["libros

oid Button1

SelectedInd

Message.Text

ngBuilder sbAppend("Tu hAppend((striAppend(" con Append((striAppend("\"."Message.TextVisible trung[] CatLibi;Items.Clear(i 0; i <

ddl.Items.A

n del estada página maplicación suado en el d

ón está habilpágina, añad

ate admite es

y

no vamos a udefecto poni

stado de seside la etiquedo del proce

informaciónweb>, que se

HIJ����I ���K

$HI���� ������

"] Libros;

Click(object

ex 1)

"Tu debes

b new Strias seleccionng)Session["codigo \"")

ng)Session[");sb.ToString

e;ros (string

();CatLibros.G

dd(new ListI

ado de sesmediante las ee controla mirectorio raíz

itado por deiendo el atri

stos valores:

utilizar sesioniendo a solo

ión se almacta sessionstaeso ASP.NET,

n sobre la coe encuentra

K�����HI,����I

�H �!�*�*� L���

;

t sender, Ev

s selecciona

ingBuilder()nado la cate"cattexto"]));"catcode"]);

g();

[])Session["

GetLength(0)

Item(CatLibr

siónentradas demediante el az de la aplica

efecto. Podembuto Enable

nes podemoslectura

ena en la meate, en web., en otro serv

nfiguración den la secció

I ������HI�*

���H��L=���D

���� !?

ventArgs e)

ar una categ

);egoria "););

;

"libros"];

); i++)

ros[i]));

la directiva Parchivo de coación.

mos activar eSessionState

s mejorar el

emoria del seconfig, podevidor de esta

del estado dn <configura

I ���������

D���HIMN

?�� ������

goria";

Page, en la ponfiguración

explícitamene a la directiv

rendimiento

ervidor. Sin eemos configuado o en una

e sesión se eation>

���%��$HI �

� ����� ��

parte superioweb.config,

nte el estadova Page

o desactivand

embargo, usurar para quea base de dat

encuentra en

�!�*�*� O�����

� %������

or de

o de

do las

andoe setos

n la

�I

www.depurando.com 285

Page 286: ASP .NET Framework 3.5

Hay v

��

��

<co

<

c

r

"

<

varios atribut

allowCustsesión pubase de dinicial en

mode: Escontroladestado de

o Oo In

eo S

ee

o So C

cookielesservidor s

o Ao U

Ho S

eo U

cookieNaASP.NET_

customPr

regeneraSessionID

sqlCommde ser ca

sqlConne

Timeout:caduque

onfiguration>

<sessionState

cookieless="t

regenerateExpi

"true" /> </sy

</configuratio

tos, todos op

tomSqlDatabuede ser unadatos predetla cadena de

specifica si eldas por estae sesión.Off. Estado dnProc. El estel valor por dStateServer.este atributoespecifique qSqlServer. SeCustom. Nos

ss: Las cookiesepa a qué sAutoDetect cUseDeviceProHttpBrowserCSi cualquieraespecifica UsUseCookies e

ame: Nombre_SessionId

rovider: Nom

teExpiredSesD caducadas

mandTimeoutncelado. Por

ectionString:

Especifica ey sea rechaz

<system.web>

rue"

iredSessionId

ystem.web>

on>

pcionales:

base: Si es trbase de dat

terminada ese conexión.

l estado de scopia de we

e sesión desado de servidefectoEl estado de, deberá exisque servidoralmacena epermite esp

es se utilizanesión está cocomprobará sofile determCapabilitiesde los antereUri, Sessiones el valor po

e de la cooki

mbre del prov

ssionID: Paraserán sustitu

t. Número der defecto es 3

Cadena de c

el número dezada por el se

=

rue, la base dtos personalis ASPState y

sesión esta db.config y , s

activadodor se almac

sesión se alstir una entrase usará parn BD. stateCpecificar un p

n para almaceonectada la psi el cliente qinará si se ad

riores determnID se manteor defecto

e que almac

veedor de es

a usarlo conuidas por un

e segundo q30

conexión.

e minutos deervidor. Por

���� !?

de datos Sqlizada. Por deno se puede

esactivado psi está activa

cena, en pro

macena en eada para stara almacenaronnectionStproveedor pe

enar la Sessipetición.que hace la pdmiten cook

mina que noendrá añadie

cena la Sessio

stado de ses

sesiones sinnuevo ident

ue un coman

inactividaddefecto es 2

?�� ������

que almacenefecto es false especificar

para todas lado, dónde se

ceso, en el s

el servidor loteConnectior el estado detring especifiersonalizado

onID, de for

petición admies, basándo

se admiten cendo un valo

onID, por def

ión persona

cookies. Si etificador. Es f

ndo SQL está

antes de que20.

� ����� ��

na datos dese, en cuyo cun catálogo

s páginase almacena

ervidor loca

ocal. Si se utionString, quee sesiónicará el servi

ma que el

mite cookies.ose en

cookies, o sior al URL.

fecto es

lizado

es true, lasfalse por def

á inactivo an

e la sesión

� %������

!

caso la

el

l. Es

lizae

dor

se

fecto

tes

www.depurando.com 286

Page 287: ASP .NET Framework 3.5

<confi

<sys

<

</sy

</conf

Tes

1. In b

A

D. An

2. Yoa

D

3. Yoc

D

4. Yoy

A

iguration>

stem.web>

<sessionState

cookieless

regenerate

timeout="3

sqlConnect

stateNetwo

ystem.web>

figuration>

t

which file sbest answer.)

A. Any ASP.N

B. Web.conf

C. Global.as

ny ASP.NET

ou need to application. W

A. Session

B. Applicatio

C. Response

D. Response.

ou need to sconnects to y

A. Session

B. Applicatio

C. Response

D. Response.

ou need to wyou respond t

A. Applicatio

B. Applicatio

C. Session S

D. Session E

mode="SQLSer

="true "

ExpiredSessio

0"

ionString="Da

rkTimeout="30

should you w

NET server p

fig

sax

T server page

store state Which object

on

e.Cookies

ViewState

store user loour Web app

on

e.Cookies

ViewState

write data to to? (Choose

on Start

on End

Start

End

rver"

onId="true "

ata Source=MyS

0"/>

write code to

page with an

e with an .asp

data that is t should you

ogon credentplication. Wh

a database bthe best answ

SqlServer;Inte

o respond to

n .aspx exten

px.vb or .asp

accessible use? (Choos

tials that arehich object s

before a usewer.)

���� !?

egrated Secur

the Applica

nsion

px.cs extensio

to any userse the best an

provided byhould you us

r’s session ti

?�� ������

ity=SSPI;"

tion Start ev

on

r who connenswer.)

y the user ese? (Choose

imes out. W

� ����� ��

vent? (Choo

ects to your

each time thethe best answ

Which event s

� %������

"

se the

r Web

e user wer.)

should

www.depurando.com 287

Page 288: ASP .NET Framework 3.5

AApliicac

��

��

��

cio

���

�,$

�� ��

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mnecon

� "?

$���

�� D

MCsn .N

���

D��

CTS:WebNET

3

:bT

5

www.depurando.com 288

Page 289: ASP .NET Framework 3.5

��

ConEste eASP.Notras

priva

{

R

A

S

}

Es prelugar

No secontr

Despobjet

ConEn esGlobadecirerrorerroradecu

' HandSub Ap SeEnd Su

' HandPrivat

Di

Di If

���

ntrolar erejemplo de cNET. El contrs palabras, to

ate void Pag

Response.Wri

ApplicationS

Server.Clear

eferible utilizde confiar e

e puede mosrolador Error

ués de contrto Server (cla

ntrolar erste ejemplo dal.asax que d, todos los eres en el niver genérica deuados.

dler in Globapplication Ererver.Transfeub

dler in Errorte Sub Page Lo ByVal e As im errMessage New Systemim appExceptiof (TypeOf (app Dim checkEx CType(a Select Case Case 403 errMes

"Yo Case 404 errMes

"Th Case 408 errMes

"Th Case 500 errMes

"The Case Else errMes

��

rrores encódigo muesrolador captuodos los erro

ge Error(obj

te("An appl

pecificErro

rError();

zar bloques Ten un contro

strar informar no se crean

rolar un erroase HttpServ

rrores ende código sedetecte todorrores que nel de página.enominada E

l.asax file ror(ByVal senr("Errors.asp

s.aspx file oad(ByVal senSystem.EventAs System.Te.Text.StringBon As System.pException) Ixception As HappException,e checkExcept

sage.Append(ou are not al

sage.Append(he page you r

sage.Append(he request ha

sage.Append(server canno

sage.Append(

,$��

n una págstra un contrura todas lasores que no s

ect sender,

ication erro

rLogger(Serv

Try/Catch allador de erro

ación de erron nuevas inst

or, debe borrverUtility).

n una aplmuestra cóm

os los erroresno se detectaEn el ejemprrors.aspx, q

der As Objectx")

der As SystemArgs) Handlesxt.StringBuiluilder()Exception = Ss HttpExceptittpException HttpExceptioion.GetHttpCo

lowed to view

equested cann

s timed out."

t fulfill you

��

����

ginaolador paras excepcionese detectan c

EventArgs e

or has been

ver.GetLastE

lrededor deores de la pá

or en un conttancias de los

rarlo median

icaciónmo crear uns ASP.NET noan con un blolo, el controque interpret

t, ByVal e As

m.Object,s MyBase.Loadlder =

Server.GetLastion) Then = on)ode

w that page.")

not be found."

")

ur request.")

��� "? �

���

el evento Err

s no controlacon un bloqu

e)

logged.");

Error().Mess

cualquier cóágina.

trol (como Las controles e

te una llama

controladoro controladooque Try/Catlador transfita los errores

EventArgs)

tError()

")

��,$���

���

ror de una páadas de la páue Try/Catch

sage);

digo sujeto a

abel), porqueen la página.

ada al métod

r de errores es al procesartch ni en uniere el contros y muestra

��� ���

D��

ágina Web dágina actual.

h.

a errores, en

e al llamar a

do ClearError

en el archivor una solicitucontroladorol a una págilos mensajes

��� D��

e. En

n

l

r del

oud, esdeina des

www.depurando.com 289

Page 290: ASP .NET Framework 3.5

El

En er La SeEnd Su// Hvoid

Se }

// Hprot

{ Sy Sy

if {

} el

{

}

er La

Se }

Erro<cust

def

<

</cus

El atr

"The End Select lse

' The excep errMessage

"The fol appExnd If rrMessage.Appeabel1.Text = eerver.ClearErubHandler in Glod Applicationerver.Transfe

Handler in Ertected void Pa

ystem.Text.Stystem.Exceptio

f (appExceptio

HttpExceptionswitch (chec{case 403:

{ errMes

break; } case 404:

{ errMes

break; } case 408:

{ errMes

break; } case 500:

{ errMes

break; } default:

{ errMes

break; }

}

lse

// The excepterrMessage.Ap appExceptio

rrMessage.Appeabel1.Text = e

erver.ClearEr

ores en etomErrors mo

faultRedirec

<error statu

stomErrors>

ributo mode

server has e

ption was not.AppendFormatlowing error xception.ToSt

end("<br />PlerrMessage.Toror()

obal.asax filError(Objectr("Errors.asp

rors.aspx filage Load(obje

ringBuilder eon appExcepti

on is HttpExc

n checkExceptkException.Ge

sage.Append("

sage.Append("

sage.Append("

sage.Append("

sage.Append("

tion was not ppendFormat("on.ToString()

end("<br />PlerrMessage.To

ror();

el archivoode "RemoteO

ct "customer

usCode "404"

lleva los sigu

xperienced an

an HttpExcep(occurred<br /ring

ease contact String()

e sender, Evenx");

e.ct sender, Ev

rrMessage = non = Server.G

eption)

ion = (HttpExtHttpCode())

You are not a

The page you

The request h

The server ca

Ther server h

an HttpExceptThe following);

ease contact String();

o de confnly"

ror.htm">

redirect "c

uientes valor

��

n error.")

ption.

/>{0}",

the server ad

ntArgs e) {

ventArgs e)

new StringBuilGetLastError()

xception)appEx

allowed to vie

requested can

has timed out"

annot fullfill

has experience

tion.g error occurr

the server ad

figuració

customerror4

res:

��� "? �

dministrator."

lder();;

xception;

ew that page."

nnot be found

");

l your request

ed an error.")

red<br />{0}",

dministrator."

n

404.htm"/>

��,$���

")

");

.");

t.");

);

,

");

��� ��� ��� D��

www.depurando.com 290

Page 291: ASP .NET Framework 3.5

Nomie

Re

On

Of

Web

En un

Cada

Authe(AuthPagesLabel

Label

Label

Parala sig

ConfigAuthen(AuthesectiorootCo

Otra

ConfigAuthen(AuthesectiorootCo

Pode

mbre de embro

emoteOnly

n

ff

b.Config

n archivo We

� A

� C

� N

� P

� S

� S

� T

sección del

enticationSehenticationSsSection ps l1.Text se

l1.Text We

l1.Text We

modificar louiente forma

guration rootCnticationSectenticationSecton2.Mode = Autonfig.Save();

posibilidad e

guration rootCnticationSectenticationSecton2.Mode = Autonfig.Save();

mos crear u

Descripc

Habilita lpersonaliASP.NET

Habilita lDefaultReDeshabilierrores e

eb.Config nos

AppSettingsS

ConnectionSt

NetSectionGr

ProtectedCon

SerializationS

SystemWebS

Transactions

archivo de c

ection sectiection)WebC

PagesSectection.Mode.

ebConfigurat

ebConfigurat

s valores dea

Config = WebCion section2 tion)rootConfthenticationM

es indicar el

Config = WebCion section2 tion)rootConfthenticationM

n nuevo arch

ón

os errores peizados sólo sese muestra e

os errores peedirect, se emita los erroreestándar.

s podemos e

Section

tringSection

roup

nfigurationSe

SectionGrou

SectionGroup

SectionGrou

configuración

on onfigurationion)WebConfiToString();

ionManager.A

ionManager.C

un archivo d

onfigurationM=ig.GetSectionMode.Forms;

nombre de l

onfigurationM=ig.GetSectionMode.Forms;

hivo de confi

��

ersonalizadose muestran een el host loc

ersonalizadosmiten los erros personaliza

encontrar co

ection

p

p

up

n equivale a

nManager.GetigurationMan

AppSettings

ConnectionSt

de configurac

Manager.OpenWe

n("system.web/

a aplicación:

Manager.OpenWe

n("system.web/

iguración:

��� "? �

s sólo en clienen clientes recal.

s. Si no se esores estándaados y permit

n la siguient

una clase.

tSection("synager.GetSec

["MyAppSetti

trings["Nort

ción a nivel d

ebConfiguratio

/authenticatio

:

ebConfiguratio

/authenticatio

��,$���

ntes remotosemotos y los e

specifica ningr.te que se mu

es sesiones d

ystem.web/auction("syste

ing"];

thwind"].Con

de Maquina

on(null);

on");

on("/WebSite5

on");

��� ���

s. Los erroreserrores de

ún objeto

uestren los

de recursos

uthenticatioem.web/pages

nnectionStri

procederem

");

��� D��

�s

n");");

ng;

mos de

www.depurando.com 291

Page 292: ASP .NET Framework 3.5

Configconfig

El mévalor

filenRuta

saveValorguard

forcetrue

El par

Nomi

Fu

Mi

Mo

Tes

1. Yoe

2. Wha

3. Whs

guration confg.SaveAs(Serve

étodo Configes de config

namede acceso y

Moder de Configurdar.

eSaveAllpara guarda

rametro save

ombre de embro

ll

nimal

odified

t

ou catch an error?

A. Server.Ge

B. Server.Cl

C. Request.G

D. Applicati

hich of the foall that apply

A. Response

B. Page Err

C. Applicatio

D. Server E

hich of the foettings?

ig = WebConfier.MapPath("c

guration.Saveuración que

nombre del

rationSaveM

r aun cuando

eMode pued

Descripción

Hace que todEsto es princinformación

Hace que sóescriban en

Hace que sóconfiguració

unhandled e

etLastError()

learError()

GetLastError

ion.GetLastE

ollowing can.)

e Error

ror

on Error

Error

ollowing cod

gurationManagonfiguracion.

eAs()Escribeincluye este

archivo en q

Mode que det

o no se haya

de tomar los

n

das las propicipalmente úto para trasla

lo las propiedel archivo de

lo las propiedn, incluso cua

exception in

()

r()

Error()

n you use to c

de samples c

��

ger.OpenWebConconfig"), Con

en el archivoe objeto Conf

que se va a g

termina los v

modificado

siguientes v

edades se estil para crear

adar valores d

dades que dife configuració

dades modificando el valor

a Page Err

catch unhand

orrectly retri

��� "? �

nfiguration("/nfigurationSav

o de configuiguration.

uardar el arc

valores de pr

la configura

valores:

scriban en el r archivos dede configurac

fieren de losón.

cadas se escr es igual que

ror handler.

dled exceptio

ieves the curr

��,$���

/WebSite5");veMode.Full, t

ración XML e

chivo de con

ropiedad que

ción; de lo c

archivo de coconfiguració

ción de un eq

valores here

riban en el are el valor her

How can y

ons in an app

rent cookie c

��� ���

true);

especificado

figuración.

e se van a

ontrario, fal

onfiguración.n de

quipo a otro.

dados se

rchivo de redado.

ou access th

plication? (C

configuration

��� D��

los

se.

he last

Choose

n

www.depurando.com 292

Page 293: ASP .NET Framework 3.5

A

B

C

D

4. Yore

A

B

C

D

A. VB Dim sect

//C#

string s

B. VB Dim sect

//C#

HttpCook

WebCo

C. VB Dim sect

//C#

string s

D. VB Dim sect

WebCo

//C#

HttpCook

WebCo

ou need to haequests a file

A. Implemen

B. Implemen

C. Implemen

D. Implemen

ion As String

ection = WebC

ion As HttpCo

iesSection se

onfigurationM

ion As String

ection = WebC

ion As HttpCo

onfigurationM

iesSection se

onfigurationM

ave ASP.NETe ending in a

nt the IPartit

nt the IHttpM

nt the IHttpH

nt the IHttpH

g = WebConfigu

ConfigurationM

ookiesSection

ection = (Http

Manager.GetSec

g = WebConfigu

ConfigurationM

ookiesSection

Manager.GetSec

ection = (Http

Manager.GetSec

T dynamicala .Doc extens

tionResolver

Module interf

Handler inter

HandlerFacto

��

urationManager

Manager.GetSec

= _ WebConfig

pCookiesSectio

ction("httpCoo

urationManager

Manager.GetSec

= _

ction("system

pCookiesSectio

ction("system

lly generate Wsion. How ca

interface.

face.

rface.

ory interface

��� "? �

r.GetSection _

ction("system

gurationManag

on)

okies");

r.GetSection(

ction("httpCo

.web/httpCook

on)

.web/httpCook

Word documan you do thi

.

��,$���

_ ("system.we

.web/httpCook

er.GetSection

"httpCookies"

okies");

ies")

ies");

ments when a is?

��� ���

eb/httpCookies

kies");

n("httpCookies

")

Web browse

��� D��

�s")

s")

er

www.depurando.com 293

Page 294: ASP .NET Framework 3.5

AApliicac

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

cio

���

<��

J,�

���

Mnecon

�� "

���

����

P��

MCsn .N

"?��

���

����

CTS:WebNET

3

��

:bT

5

www.depurando.com 294

Page 295: ASP .NET Framework 3.5

��

P�

DetEn ASobjetla verel tip

priva{

}

ConObjeRespo

Requ

Serve

���

�����

terminanSP.NET, el obto del tipo Htrsión del expo de explora

ate void But{ System.W

string s + "T + "N + "V + "M + "M + "P + "I + "I + "I + "I + "I + "S + "S + "S + "S + "S

+ "S + "S

TextBox1}

ntexto deect Descriptionse En

AS

est Peun

er Pr

<��

��

ndo Tipobjeto RequesttpBrowserCplorador, y laador cliente.

tton1 Click(

Web.HttpBrow "Browser

Type " + bName " + bVersion "Major VersioMinor VersioPlatform "s Beta "s Crawler s AOL " + s Win16 "s Win32 "upports Framupports Tabupports Cooupports VBSupports Javbrowser.Ecmupports Javupports Act + "\n";.Text s;

Página yionncapsula la infSP.NET.

ermite a ASP.Nna solicitud W

roporciona mé

�� J

de Navegst contiene uCapabilities.a versión prin

object sende

serCapabilitCapabilitie

rowser.Typerowser.Brows+ browser.Ven " + brown " + brow+ browser.P

+ browser.Be" + browserbrowser.AOL+ browser.W+ browser.W

mes " + brles " + brkies " + bcript " + aScript "aScriptVersia Applets iveX Control

y Aplicac

formación de

NET leer los veb.

étodos auxiliar

���� "

J,���

gadoruna propiedaEste objetoncipal y secu

er, System.E

ties browseres\n"+ "\n"

ser + "\n"ersion + "\nwser.MajorVewser.MinorVePlatform + "eta + "\n"r.Crawler + L + "\n"Win16 + "\n"Win32 + "\n"rowser.Framerowser.Tablebrowser.Cookbrowser.VBS+

ion.ToString" + browser

ls " + bro

ión

la respuesta H

valores HTTP e

res para proce

"?�� <���

����

ad denominacontiene prondaria que p

EventArgs e)

r Request.

n"ersion + "\nersion + "\n"\n"

"\n"

""es + "\n"es + "\n"kies + "\n"Script + "\n

g() + "\n"r.JavaAppletowser.Active

HTTP de una o

enviados por u

esar las solicit

�� J,���

� ��

ada Browseropiedades copuede utiliza

Browser;

n"n"

n"

ts + "\n"eXControls

operación

un cliente dura

tudes Web.

���� ��

��

que devuelvomo el nombr para deter

ante

� P������

ve unbre yminar

www.depurando.com 295

Page 296: ASP .NET Framework 3.5

Conte

Sessio

Appli

Trace

Req

Méto

Prop

ext EnHT

on Prcodu

ication Pr

e Pr

re

es

quest

odos

MapPath Su

SaveAs G

piedades

Nombre

AcceptTypes

AnonymousI

ApplicationP

AppRelative

Browser

ClientCertific

ncapsula todaTTP individual

roporciona acconfiguración duración.

roporciona acc

roporciona un

ealizar el segu

sta clase.

obrecargadona ruta de ac

uarda una so

s

ID

Path

CurrentExecu

cate

la informació.

ceso a los valoe la sesión y a

ceso a los valo

conjunto de m

imiento de la

. Asigna la rucceso física d

olicitud HTTP

utionFilePath

���� "

ón específica d

ores del estada los métodos

ores del estad

métodos y pro

ejecución del

uta de accesoel servidor, c

en el disco.

Descripció

Obtiene unMIME adm

Obtiene elhay.

Obtiene laaplicación

Obtiene laaplicaciónde tilde (~"~/page.as

Obtiene o eposibilidadela solicitud

Obtiene ella solicitud

"?�� <���

de HTTP acerc

do de la sesións de administr

do de la aplica

opiedades que

código. No se

o virtual de lacorrespondien

ón

na matriz de citidos por el c

identificador

ruta de acceASP.NET en e

ruta de accey la hace rela) para la raízspx").

establece infoes del explor.

certificado deactual.

�� J,���

a de una solic

n, a la ración de la

ción.

e le ayudan a

e puede hered

a dirección URnte a la solici

cadenas de tcliente.

anónimo del

so a la raíz vel servidor.

so virtual deativa utilizandz de la aplicac

ormación acerador del clie

e seguridad d

���� ��

citud

dar

RL solicitadaitud actual.

ipos Accept

l usuario, si

virtual de la

la raíz de lado la notacióción (como e

erca de las nte que realiz

del cliente pa

� P������

a

o

nn

za

ara

www.depurando.com 296

Page 297: ASP .NET Framework 3.5

ContentEnco

ContentLeng

ContentType

Cookies

CurrentExec

FilePath

Files

Filter

Form

Headers

HttpMethod

InputStream

IsAuthentica

IsLocal

IsSecureCon

Item

LogonUserId

Params

Path

PathInfo

PhysicalApp

PhysicalPath

oding

gth

e

cutionFilePath

m

ated

nnection

dentity

licationPath

h

h

���� "

Obtiene o ecuerpo de

Especifica cliente, en

Obtiene o esolicitud en

Obtiene uncliente.

Obtiene laactual.

Obtiene laactual.

Obtiene lacliente, en

Obtiene o ela secuenc

Obtiene un

Obtiene un

Obtiene el(como GE

Obtiene elentrante.

Obtiene unautenticad

Obtiene unequipo loca

Obtiene unutiliza sock

Obtiene elcoleccionesServerVaria

Obtiene elactual.

Obtiene unQueryStrin

Obtiene laactual.

Obtiene infde un recu

Obtiene lafísico del dque se está

Obtiene la

"?�� <���

establece el jla entidad.

la longitud debytes.

establece el tntrante.

na colección d

ruta de acce

ruta de acce

colección deformato MIM

establece el fia actual de e

na colección d

na colección d

método de trT, POST o HE

contenido de

n valor que ino.

n valor que inal.

n valor que inkets seguros,

objeto especs Cookies, Foables.

tipo Window

na colección cg, Form, Ser

ruta de acce

formación adrso con exten

ruta de acceirectorio raízá ejecutando

ruta de acce

�� J,���

juego de cara

el contenido

tipo de conte

de cookies en

so virtual de

so virtual de

archivos carME de varias p

filtro que se uentrada.

de variables d

de encabezad

ransferencia EAD) que uti

el cuerpo de l

ndica si la sol

ndica si la sol

ndica si la con es decir, HT

cificado desdeorm, QuerySt

sIdentity par

combinada derverVariables

so virtual de

icional de la nsión URL.

so al sistemade la aplicac

.

so al sistema

���� ��

acteres del

enviado por e

enido MIME de

nviada por el

la solicitud

la solicitud

rgada por el partes.

utilizará al le

de formulario

dos HTTP.

de datos HTTiliza el client

la entidad HT

icitud se ha

icitud es del

nexión HTTP TTPS.

e las ring o

ra el usuario

e elementos y Cookies.

la solicitud

ruta de acces

a de archivosción de servid

a de archivos

� P������

el

e la

er

o.

TPe.

TTP

so

dor

www.depurando.com 297

Page 298: ASP .NET Framework 3.5

"<br>

QueryString

RawUrl

RequestType

ServerVaria

TotalBytes

Url

UrlReferrer

UserAgent

UserHostAdd

UserHostNam

UserLanguag

Timestam

Applicat VirtualP Physical HttpHead

>"); HttpMeth IsAuthen IsLocal. IsSecure LogonUse TotalReq UserAgen IpAddres

if (Requ UrlR

else UrlR

UserLangforeach

User

e

bles

dress

me

ges

mp.Text Co

tionPath.TexPath.Text Path.Text

ders.Text

hod.Text Rnticated.TexText Requ

eConnection.erIdentity.TquestBytes.Tnt.Text Res.Text Re

uest.UrlRefeReferrer.Tex

Referrer.Tex

guages.Text(string s i

rLanguages.T

ntext.Timest

t RequestRequest.FileServer.MapP

Server.UrlDe

equest.HttpMt Requestest.IsLocalText Requeext Requesext Requesquest.UserAgquest.UserHo

rrer ! nullt Request

t "No refe

String.Empn Request.Usext + s + "

���� "

físico corre

Obtiene laconsulta H

Obtiene laactual.

Obtiene o edatos HTTP

Obtiene unWeb.

Obtiene elentrada ac

Obtiene infla solicitud

Obtiene infla solicitudvínculo con

Obtiene laexplorador

Obtiene la

Obtiene el

Obtiene unpreferencia

tamp.ToStrin

.ApplicationePath;Path(Requestecode(Reques

Method;.IsAuthentic.ToString();est.IsSecurest.LogonUserst.TotalBytegent;ostAddress;

l).UrlReferrer

errer";

pty;serLanguages"<br>";

"?�� <���

espondiente a

colección deTTP.

dirección UR

establece el mP (GET o POS

na colección d

número de btual.

formación aceactual.

formación aceanterior del

n la dirección

cadena de agr del cliente.

dirección IP

nombre DNS

na matriz de cas de idioma

ng();

nPath;

t.FilePath);st.Headers.T

cated.ToStri;eConnection.rIdentity.Toes.ToString(

r.ToString()

s)

�� J,���

a la dirección

variables de

RL original de

método de trST) que utiliz

de variables d

bytes de la se

erca de la dir

erca de la dircliente que eURL actual.

gente de usu

del host del c

S del cliente r

cadenas ordedel cliente.

ToString()).

ing();

ToString();oString();();

;

���� ��

URL solicitad

tipo cadena

la solicitud

ransferencia dza el cliente.

de servidor

ecuencia de

rección URL d

rección URL destablecía un

uario original

cliente remot

remoto.

enada con las

Replace("&"

� P������

�da.

de

de

de

de

del

to.

s

,

www.depurando.com 298

Page 299: ASP .NET Framework 3.5

Res

Méto

Prop

Serv

Méto

sponse

odos

AppendHead

Clear

ClearConten

ClearHeader

End

Flush

Redirect

SetCookie

piedades

Cookies

Buffer

Cache

Expires

Status

StatusCode

ver

odos:

ClearError

GetLastErro

HtmlDecode

HtmlEncode

MapPath

Transfer

der Agrega

Borra to

nt Borra to

rs Borra to

Envía apágina y

Envía al

Sobreca

Infraestr

Obtiene la c

Obtiene o een el búferla respuesta

Obtiene la dconfiguració

Obtiene o euna páginala misma pmemoria calas versione

Establece la

Obtiene o edevuelve al

Borra la ex

r Devuelve

e Sobrecargcaracteres

Sobrecarg

Devuelve acceso vir

Sobrecarg

un encabezad

oda la salida d

oda la salida d

odos los enca

cliente today provoca el e

cliente toda

rgado. Redire

ructura. Actu

colección de

establece un y se van a ea completa.

directiva de cón de privac

establece losalmacenada

ágina antes daché. Expireses anteriores

a línea Status

establece el cl cliente.

xcepción ant

la excepción

gado. Descods HTML no vá

gado. Codifica

la ruta de acrtual especific

gado. Finaliza

���� "

do HTTP a la

de contenido

de contenido

bezados de l

la salida delevento EndRe

la salida alm

ecciona un cl

aliza una coo

cookies de re

valor que indnviar despué

caché (por ejdad y cláusu

minutos que en la caché de que expirs se proporcio de ASP.

s que se dev

código de est

erior.

anterior.

ifica una cadálidos.

a una cadena

ceso al archicada en el se

a la ejecución

"?�� <���

secuencia de

de la secuen

de la secuen

a secuencia d

búfer actual,equest.

acenada en e

iente a una n

okie existente

espuesta.

dica si los resés de que se

emplo, tiemplas de variac

deben transde un explore, aparece laona para que

uelve al clien

ado de HTTP

ena que se h

a que se va a

vo físico quervidor Web.

de la página

�� J,���

e salida.

ncia del búfer

ncia del búfer

del búfer.

, detiene la e

el búfer.

nueva direcci

e en la colecc

sultados se vahaya termina

po de expiracción) de una p

scurrir antes drador. Si el usversión alma

e exista comp

nte.

de la salida

ha codificado

mostrar en

corresponde

a actual e inic

���� ��

r.

r.

ejecución de l

ón URL.

ción de cooki

an a almacenado de proce

ción, página web.

de que caduqsuario vuelveacenada en patibilidad con

que se

para elimina

un explorado

e a la ruta de

cia la ejecució

� P������

la

es.

nar sar

quee a

n

r

or.

ón

www.depurando.com 299

Page 300: ASP .NET Framework 3.5

Acc

PageLa prestabpermelem

<%@ P

<!DOC"http

<scri

pro {

}

</scr

<html

<head

</hea

<body<fo

<h3

<ast

r</a

</f</bod</htm

UrlDecode

UrlEncode

ediendo

e.Headeropiedad Heablecer informmite agregar iento head.

Page Languag

CTYPE html Pp://www.w3.o

ipt runat "s

otected void

// Create Style body

bodyStyle. bodyStyle.

// Add the// of the

Page.Heade

// Add the Page.Heade

ript>

l >

d id "head1"runat "ser<title>To

ad>

y>orm id "form

3>HtmlHead C

sp:label idtext "View and

runat "serveasp:label>

form>dy>ml>

de una nu

Sobrecarga través d

Sobrecargdesde el s

a las cab

ader obtienemación del eninformación

ge "C#" %>

PUBLIC " //Worg/TR/xhtml

erver">

d Page Load(

a Style objyStyle new

ForeColor BackColor

e style rule current pag

er.StyleShee

e page title er.Title "

rver">be replaced

m1" runat "s

Class Exampl

"Label1"w the HTML sbody style

er">

eva página p

gado. Descode HTTP y des

gado. Codificaservidor Web

beceras

e una referenncabezado dcomo hojas

3C//DTD XHTM1/DTD/xhtml1

object sende

ect for the Style();

System.DrawSystem.Draw

named bodySe. The rule t.CreateStyl

to the headHtmlHead Exa

.</title>

erver">

e</h3>

ource code oadded to the

���� "

para la solicit

ifica una cadspués se env

a una cadenahasta el clien

ncia a un objel documentde estilos, re

ML 1.0 Trans1 transition

er, System.E

body of the

wing.Color.Bwing.Color.L

Style to theis for the

leRule(bodyS

der element.ample";

of this pagee header ele

"?�� <���

ud actual.

ena que se ció al servidor

a para una trante a través d

eto HtmlHeato para la páeglas de esti

sitional//ENnal.dtd">

EventArgs e)

e page.

Blue;LightGray;

e headerbody HTML e

Style, null,

.

e to see theement."

�� J,���

codificó para sr en una direc

ansmisión HTde la direcció

ad que se puágina. El objelo, un título

N"

element."body");

e title

���� ��

su transmisicción URL.

TTP segura ón URL.

uede utilizareto HtmlHeay metadatos

� P������

!ón

parad les al

www.depurando.com 300

Page 301: ASP .NET Framework 3.5

Tes

1. Wha

2. Yo

3. Wh

t

hich of the foapply.)

A. Whether

B. Whether t

C. The user’

D. Whether

E. Whether t

ou have crea<Query>”.

A. Page.Ti

B. Page.He

C. Respons

D. Respons

hich of the fthe browse

A. Flush

B. Clear

C. End

D. ClearCo

following can

the client ha

the user is lo

s e-mail add

the browser

the browser

ated an ASP.N. How can yo

itle

eader.Title

se.Header.Ti

se.Title

following Rer while allow

ontent

n you determ

as the .NET F

ogged on as a

dress

supports Ac

supports Jav

NET search ou dynamica

itle

esponse methwing you to a

���� "

mine from the

Framework C

an administra

tiveX

vaScript

page and wally set the pa

hods causes add to the res

"?�� <���

e Request.Br

CLR installed

ator

ant to set theage title?

ASP.NET tosponse later?

�� J,���

rowser object

d

e page title t

o send the cu?

���� ��

t? (Choose a

to “Search re

urrent respo

� P������

"

all that

esults:

nse to

www.depurando.com 301

Page 302: ASP .NET Framework 3.5

AApliicaccio

��

�#

A

e

Mnecon

���

#$

����

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsn .N

� )?

��

����

CTS:WebNET

3

:bT

5

www.depurando.com 302

Page 303: ASP .NET Framework 3.5

��

ASP.Ncrearel empropo

PágUna pcomose motenerpágincoloc

Para

12

3

���

Net facilita lar un marco compleo de la porcionado po

ginas Maepágina maeso una plantillostrará en tor una páginana maestra. Tcamos el con

Utilizar pági

1. Creamos2. Agregam

3. Agregam

�#$

a consistencionsistente, eágina Web por “pistas” q

estrasstra proporcila para todasodas las págimaestra conTodas las págtenido que v

nas maestra

un sitio webos una págin

os páginas d

�� A

ia de un sitioen el que cadpor parte delue indiquen

ona HTML cos las páginasnas que utilin un logotipoginas maestrvaría en cada

s realizamos

bna maestra a

de contenido

A���

o web con lasda página ubl usuario, proal usuario có

ompartido, cde un sitio.cen esa págo y un menúras tienen una página hija

s los siguient

al sitio

o basadas en

�����

s páginas mabicará su contoporcionadoómo ha llega

controles y cTodo lo queina maestra.; éstos se mona zona de co.

es pasos:

la página ma

���� )? �

aestras, quetenido. La nao por el mapaado a la pági

código, que paparece enPor ejemploostrarán en contenido en

aestra

� �#$��

no permitenavegación faa del sitio y/ona actual.

pueden usarsla página mao, podríamoscada “hijo” dlas que

A�������

ncilitao

seaestrasde la

www.depurando.com 303

Page 304: ASP .NET Framework 3.5

Se cre

<asp:

Este cpáginConte

eará la págin

ContentPlac</asp:Co

comodín sernas hijo). EnentPlaceHold

na maestra c

ceHolder idontentPlaceH

rá lo que rellela página mader.

on una decla

"CPHContenidolder>

enará el conaestra, podem

aración de co

do" runat "s

tenido de lamos añadir l

ontrol ya col

server">

página queo que quera

���� )? �

ocada:

use esta págmos alreded

� �#$��

gina maestrador del contr

A�������

(lasrol

www.depurando.com 304

Page 305: ASP .NET Framework 3.5

AñaLas pel Co

Podepropi

Una pÉstas<formdesig

Estoen tie

En las

<%@ PCodeF

<asp:</asp<asp:</asp

La dir

El concorre

PágiEs nootrosun enmantweb pmás v

EditEn re(desdque l

publi{

}

Adem

<%@ M

adir Págináginas que antentPlaceH

mos colocario ID)

página maess son archivom>, <head> ygnada en el c

nos permitirempo de ejec

s páginas hij

Page LanguagFile "Defaul

Content IDp:Content>Content ID

p:Content>

rectiva @Pag

ntrol Contenespondiente

inas Maesormal que qus elementos sncabezado qtuvieran en cpuede combventajoso pa

tar Dinámspuesta a ciede una páginas páginas se

ic Image Log{

get { reset { th

}

más de defini

MasterType v

nas de Códañadiremos,older que he

r más de un C

stra tiene uns .aspx normy <body>. Tocontrol Conte

rá ver el aspecución.

as tendremo

ge "C#" Mastt.aspx.cs"

"Content1"

"Content2"

ge contiene

nt tiene una p

stras Anidueramos mansólo se compue se mantucada divisiónbinarse con uara cada pág

micamenteertos eventoa hija). Paraecundarias p

go

eturn this.Ihis.ILogo v

ir las propied

virtualpath

digoque utilizaráemos añadid

ContentPlace

controlPlacemales, con unodo el contenentPlaceHold

ecto de la nu

os

erPageFile "Inherits " D

ContentPlace

ContentPlace

una referenc

propiedad qu

dadasntener algunpartirán en uuviera para ton. ASP.NET nouna página anina.

e la páginos, podemosello, crearempuedan acced

Logo; } value; }

dades en la p

"~/MasterPag

án esta págindo a la página

eHolder en u

eHolder vacína directiva Pnido del contder de la pág

eva página c

"~/MasterPagDefault" Tit

eHolderID "h

eHolderID "C

cia al archivo

ue lo enlaza

nos elementouna parte deoda la compaos permite cnidada, o co

na maestrquerer cammos una proder y cambia

página maest

ge.master" %

na maestra, ca maestra.

una página m

o. Este contrPage, pero sitrol hijo se egina maestra

cuando se co

ge.master" Atle "Página

head" Runat

CPHContenido

o MasterPage

con el Conte

os a lo largola misma. Poañía, pero tarear páginasn la página m

abiar la presepiedad públarla.

tra, en las hi

%>

���� )? �

colocará tod

maestra (cada

rol está llenoin las etiquetncuentra en.

ombine con l

AutoEventWirsin título"

"Server">

o" Runat "Se

e de esta pág

entPlaceHold

de toda la apor ejemplo,ambién elems anidadas. Cmaestra origi

ntación de laica en la pág

jas tendrem

� �#$��

o su conteni

a una tiene s

o de páginastas <html>,la zona

a página ma

reup "true" %>

erver">

gina .

derID

plicación, pepodríamos t

mentos que seCualquier páginal, lo que s

a página maegina maestra

os que hace

A�������

�ido en

si

hijas.

estra

roenereginasea

estra, a la

r:

www.depurando.com 305

Page 306: ASP .NET Framework 3.5

Propopágin

prote{

}

RefeContrImageim.Im

CargEstamdinám

Podrí

Tes

1. Wh

2. Wha

3. Yc

orciona un mna principal d

ected void B{

this.Maste}

erenciar Crol c Maste im (ImagmageUrl "~

gar Páginmos ante unmicamente u

íamos hacer

Almacena

Volver a

Ses

Res

En el PreI

void Page_

{ if (Sess

Ma

}

t

hat is the rela

A. One mast

B. One conte

C. Multiple

D. One cont

hich of the fall that apply

A. Content p

B. Content p

C. Content p

D. Content p

You are concompatibility

medio de crede ASP.NET c

Button1 Clic

er.Logo.Imag

Controlester.FindContge)c;/imagenes/i

nas Maestrescenario enuna de ellas p

:

ar en sesión

a cargar la p

ssion["master

sponse.Redire

Init cargar la

_PreInit(Objec

sion["masterpa

asterPageFile

ationship bet

ter page for m

ent page for

content page

ent page for

following sta.)

pages can ref

pages can ref

pages can ref

pages can ref

nverting an y, you need t

ar una referecuando la pro

k(object sen

eUrl "~/imag

srol("ILogo")

nadecobn.jpg

ras Dinámn el que tengpara las pági

el nombre d

página

page"] = "Mas

ct(Request.Ur

masterpage

ct sender, Ev

age"] != null

= (String)Se

tween master

multiple cont

multiple ma

es for multipl

one master p

atements abo

ference priva

ference publi

ference publi

ference contr

existing Wto read prop

encia con esopiedad Mas

nder, EventA

genes/inadec

);

g";

micamentgamos diferenas hijas.

de la masterp

ster2.master";

rl.ToString())

e necesaria

entArgs e)

)

ession["master

r and conten

tent pages

ster pages

le master pag

page

out referencin

ate properties

ic properties

ic methods in

rols in the m

Web applicatperties from

tablecimientster tiene ac

Args e)

cobn.jpg";

teentes mastes

page que que

;

);

rpage"];

nt pages? (Ch

ges

ng master pa

s in the mast

in the maste

n the master

aster page.

tion to use the master p

���� )? �

to inflexibleceso a la pág

spages y que

eramos

hoose the bes

age member

ter page.

er page.

page.

master pagpage. Which

� �#$��

de tipos a lagina principa

eramos carga

st answer.)

s is true? (C

ges. To mah of the follo

A�������

�al

ar

Choose

aintain owing

www.depurando.com 306

Page 307: ASP .NET Framework 3.5

cp

A. Ad

D. Ad

4. Yosh

A. Pa

changes are ypage? (Choos

dd an “@ M

B. Add an “@

C. Add a Ma

dd a Content

ou need to dhould you im

age Load

B. Page Ren

C. Page Pre

D. Page Pre

you requirese all that app

asterType” d

@ Master” d

asterPageFil

tPlaceHolder

dynamically mplement the

nder

eRender

eInit

d to make toply.)

declaration.

declaration.

le attribute to

r control.

change the e dynamic ch

o .aspx page

o the “@ Pag

master pagehanging? (Ch

es to enable

ge” declaratio

e of a contenhoose the bes

���� )? �

them to wo

on.

nt page. In st answer.)

� �#$��

ork with a m

which page

A�������

�master

event

www.depurando.com 307

Page 308: ASP .NET Framework 3.5

AApliicaccio

��

��

Mnecon

���

���

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsn .N

� )?�

��

CTS:WebNET

3

��

:bT

5

www.depurando.com 308

Page 309: ASP .NET Framework 3.5

��

Temainform"TementoradmiLos T

ASP.Nlos coestabanchu(CSS)contrCSS, o(Temcontr

ApliLa Waspeces lade seestilode senuest

ApliLas efijar aHTMHTMservidestilo

��� �

as y Skins � Lmación de e

ma". Un Temarno de las pánistrarse reaTemas tambié

NET incluye vontroles de nblecer las proura, altura, epara factoriroles. Podemo podemos da), que se aproles individu

icando eseb es un entcto de difereresponsableervidor de ASos CSS de priervidor y nostros Formula

icando estiquetas esta una lista deL de servidorL estándaresdor. Si obseros se pasan a

� ���

La característstilo y diseñoa se puede aáginas y contalizando camén se puede

varias caractnuestra aplicopiedades deetc. Los contizar los ajustmos definir ladefinir esta iplicarán a toduales se espe

stilos a Ctorno flexibleentes Web Sie de los ricosSP.NET y los cmera clase. Emuestra el barios Web.

tilos a conándar HTMLe parejas atrr de ASP.NETs. El siguientervamos el cóal navegador

��� &

tica de Temao en un grupplicar a cualqtroles del sitimbios al Teman compartir

terísticas parcación. Los coe estilo comoroles tambiées de estilo da informaciónnformacióndas o una paecifican com

Controlese para las inttes. La adopdiseños quecontroles deEsta secciónbuen contro

ntroles htL soportan Cibuto/valor dT pueden acee ejemplo vadigo fuenteen la repres

���,

as y Skins depo separadoquier sitio deio. Los camba, sin tener qcon otros de

ra personalizontroles sopo fuentes, boén soportan cde forma sepn de los estilen grupos dearte de las páo un Skin de

sterfaces de ución generale podemos ee servidor wediscute cóml que nos pro

tmlSS a través ddelimitada peptar estilosarios estilos ade la páginasentación de

���

ASP.NET 2.0de ficheros,e forma queios en el Estique editar laesarrolladore

ar la aparienortan un moordes, colorecompletameparada de lasos como proe ficheros seáginas de la aentro de un T

usuario, con vlizada de "Cancontrar eneb has sido dmo utilizar estoporcionan s

del atributopor puntos yde la mismaaplicados a ddevuelta allos controle

0 nos permitea cuyo conjuafecte a la ailo de un sitios páginas dees.

ncia o el estilodelo de objees de fondo yente "Cascads propiedadeopiedades deeparados llamaplicación. LTema.

variaciones eascading Stylla Web. Tod

diseñados patos estilos jusobre la apar

"style" (esticomas. Todoa forma quediferentes cocliente, verees.

���� )?

e factorizar lunto llamamapariencia yo puedene forma indiv

o de las págeto Style pary primer planing Style Shees de lose los controlemados Themos estilos de

extremas enle Sheets" (Cdos los controra soportar lunto con conriencia de

ilo), que se pos los controlas etiquetasontroles deemos que est

?�� �����

aos

vidual.

inas yrano,eets"

es oee

elCSS)oleslostroles

puedeoless

tos

www.depurando.com 309

Page 310: ASP .NET Framework 3.5

<%@ P

<html<body

<h3

<p>

<sprunat

</s

<p>

<bucolor

<p>

Page Languag

l>y>

3><font face

><font face

pan id "Spant "server"> This is so

span>

><font face

utton id "Bur:black;widt

><font face

ge "C#" %>

e "verdana">A

"verdana"><

n1" style "f

ome literal

"verdana"><

utton1" stylth:100" runa

"verdana"><

Applying Sty

h4>Styled Sp

ont: 12pt ve

text inside

h4>Styled Bu

e "font: 8ptt "server">C

h4>Styled Te

yles to HTML

pan</h4></fo

erdana; colo

a styled sp

utton</h4></

t verdana;baClick me!</b

ext Input</h

L Controls</

ont><p>

or:orange;fo

pan control

/font><p>

ackground cobutton>

h4></font><p

/font></h3>

ont weight:7

olor:lightgr

p>

���� )?

00"

reen;border

?�� �����

www.depurando.com 310

Page 311: ASP .NET Framework 3.5

Ent<in

verdarunat

<p>

Sel<se

color<<<

</s

<p>

Sel<sp<in

color<in

color<in

color</s

</bod</htm

CSS tcontesenciestilotal y c<%@ P

<html<head

<st

ter some texnput id "Texana;backgrout "server"/>

><font face

lect an itemelect id "Ser:lightblue;<option>Item<option>Item<option>Itemselect>

><font face

lect an optipan style "fnput id "Radr:red;zoom:2nput id "Radr:red;zoom:2nput id "Radr:red;zoom:2span>

dy>ml>

ambién defienida en unallo definir loo. Los estiloscomo muestPage Languag

l>d>

tyle>

.spanstyle {

font:font wcolor:

}

.buttonsty {

font:backgrborderwidth:

} .inputstyl

{font:backgrborderborderwidth:

} .selectsty

{font:backgrcolor:

} .radiostyl

{

xt: <p>xt1" type "tund color:ye>

"verdana"><

m: <p>elect1" stylcolor:purpl

m 1</option>m 2</option>m 3</option>

"verdana"><

on: <p>font: 16 pt vdio1" type "00%" runat

dio2" type "00%" runat

dio3" type "00%" runat

na un atribua sección <stys estilos unaen controlestra el siguienge "C#" %>

e

12pt verdanweight:700;orange;

yle

8pt verdanaround color:r color:blac100

e

14pt verdanround color:r style:dashr color:red;300;

yle

14pt verdanround color:purple;

e

ext" value "llow;border

h4>Styled Se

e "font: 14pe;" runat "s

h4>Styled Ra

verdana;fontradio" name"server"/>Opradio" name"server"/>Opradio" name"server"/>Op

to de clase qyle>...</stylea vez y aplicas HTML de sete ejemplo.

a;

;lightgreen;k;

a;yellow;ed;

a;lightblue;

"One, Two, Tstyle:dashe

elect Input<

pt verdana;bserver">

adio Buttons

t weight:300"Mode" chec

ption 1<br>"Mode" styl

ption 2<br>"Mode" styl

ption 3

que puede fije> del documrlos a difereervidor tamb

Three" styleed;border co

</h4></font>

background

s</h4></font

0">cked style "

le "width:50

le "width:50

jarse a una dmento. El atrntes etiquetbién se pued

e "font: 14polor:red;wid

><p>

t><p>

"width:50;ba

0;background

0;background

definición deibuto de clasas sin tenerden establece

���� )?

ptdth:300;"

ackground

d

d

estilo CSSse hace másque redefinier de esta fo

?�� �����

ir elrma,

www.depurando.com 311

Page 312: ASP .NET Framework 3.5

</s

</hea<body

<h3

<p>

<sp

</s

<p>

<bu

<p>

Ent<in

runat

<p>

Sel<se

<<<

</s

<p>

Sel<sp<in

runat<in

2<br><in

3</s

</bod</htm

CuanpropiSysteque mclaveconseHtml

<scri

v

}

</scr

width:backgrzoom:2

}

style>

ad>y>

3><font face

><font face

pan id "Span This is so

span>

><font face

utton id "Bu

><font face

ter some texnput id "Text "server"/>

><font face

lect an itemelect id "Se<option>Item<option>Item<option>Itemselect>

><font face

lect an optipan style "fnput id "Radt "server"/>nput id "Rad>nput id "Rad

span>

dy>ml>

do se analizaiedad Style (em.Web.UI.Hmuestra los ede "style�atecuentemenInputText.

ipt language

void Page Lo MyText.S Response

}

ript>

50;round color:00%

e "verdana">A

"verdana"><

n1" class "spome literal

"verdana"><

utton1" clas

"verdana"><

xt: <p>xt1" type "t>

"verdana"><

m: <p>elect1" clasm 1</option>m 2</option>m 3</option>

"verdana"><

on: <p>font: 16 pt vdio1" type ">Option 1<brdio2" type "

dio3" type "

a una páginadel tipo CssSHtmlControlestilos del cottibute". Porte, obtener

e "C#" runat

oad(Object style["width

e.Write(MyTe

red;

Applying Sty

h4>Styled Sp

panstyle" rutext inside

h4>Styled Bu

s "buttonsty

h4>Styled Te

ext" value "

h4>Styled Se

s "selectsty

h4>Styled Ra

verdana;fontradio" name>radio" name

radio" name

a ASP.NET, laStyleCollectis.HtmlControntrol comoejemplo, poel atributo d

"server" >

ender, Event"] "90px";xt.Style["wi

yles to HTML

pan</h4></fo

unat "servera styled sp

utton</h4></

yle" runat "

ext Input</h

"One, Two, T

elect Input<

yle" runat "

adio Buttons

t weight:300"Mode" chec

"Mode" clas

"Mode" clas

a informaciónon) dentro drol. Esta propgrupos de vaodemos usarde estilo "wid

tArgs E) {;idth"]);

L Controls</

ont><p>

r">pan control

/font><p>

"server">Cli

h4></font><p

Three" class

</h4></font>

"server">

s</h4></font

0">cked class "

ss "radiosty

ss "radiosty

n de estilo sede la clasepiedad es, esalores indexael siguientedth " (ancho)

/font></h3>

ick me!</but

p>

s "inputstyl

><p>

t><p>

"radiostyle"

yle" runat "

yle" runat "

e rellena den

sencialmenteados por cadcódigo para) de un contr

���� )?

tton>

e"

server"/>Op

server"/>Op

ntro de una

e, un dicciondenas, para cfijar y,rol de servid

?�� �����

tion

tion

ariocada

or

www.depurando.com 312

Page 313: ASP .NET Framework 3.5

<inpu

<%@ P

<html

<scri

v

"<br>

"<p>"

}

v

"<br>

}

</scr

<body

<fo

width

runat

OnSer

runat

color

ut type "tex

Page Languag

l>

ipt language

void Page Lo

Message.

Message.>"; Message.

";

Message.

IEnumera

while (k

Stri Mess Mess }

}

void Submit

Message.

MySpan.S MyText.S

Message.>"; Message.

}

ript>

y>

orm id "Form

<h3><font

<div styleh:1;border s

<span<p>

Select<selec

t "server"><opt<opt<opt

</sele<input

rverClick "S</div>

<p><font f

<span id "t "server"> This i</span>

<p><font f

<button idr:black;widt

xt" id "MyTe

ge "C#" %>

e "C#" runat

oad(Object S

InnerHtml +

InnerHtml +

InnerHtml +

InnerHtml +

ator keys M

keys.MoveNex

ng key (Sage.InnerHtmage.InnerHtm

Click(Objec

InnerHtml +

tyle["colortyle["width

InnerHtml +

InnerHtml +

m1" runat "s

face "verda

e "font: 8pttyle:solid;pid "Message

t a color foct id "Color

tion>red</option>green</tion>blue</opect>t id "Submitubmit Click

face "verdan

MySpan" sty

s some lite

face "verdan

d "MyButton"th:100" runa

xt" runat "s

"server">

rc, EventArg

"<h5>Acces

"The color

"The width

"MySelect

MySelect.Sty

t()) {

tring)keys.Cml + "<li>&ml + key +

t Src, Event

"<h5>Modif

"] ColorSe"] "600";

"The color

"The width

erver">

na">Programm

verdana;bacpadding:1,10" EnableView

r the span: Select" styl

tion>option>ption>

1" type "sub">

a"><h4>Style

le "font: 12

ral text ins

a"><h4>Style

style "fontt "server">C

server"/>

gs E ) {

ssing Styles

r of the spa

h of the tex

's style col

yle.Keys.Get

Current;&nbsp;&nbsp;" " + MySel

tArgs E ) {

fying Styles

elect.Value;

r of the spa

h of the tex

matically Ac

ckground col0,25,10">wState "fals

<p>le "font: 11

bmit" runat

ed Span</h4>

2pt verdana;

side a style

ed Button</h

t: 8pt verdaClick me!</b

s...</h5>";

an is: " + M

xtbox is: "

llection is:

tEnumerator(

;";lect.Style[k

{

s...</h5>";

;

an is: " + M

xtbox is: "

ccessing Sty

lor:cccccc;b

se" runat "s

1pt verdana;

"server" Va

></font><p>

; color:oran

ed span cont

h4></font><p

ana;backgroubutton>

MySpan.Style

+ MyText.St

<br><br>";

();

key] + "<br>

MySpan.Style

+ MyText.St

yles</font><

border color

server"/>

font weight

alue "Change

nge;font wei

trol

p>

und color:li

���� )?

e["color"] +

tyle["width"

>";

e["color"] +

tyle["width"

</h3>

r:black;bord

t:700;"

e Style"

ght:700"

ghtgreen;bo

?�� �����

] +

];

er

rder

www.depurando.com 313

Page 314: ASP .NET Framework 3.5

verdarunat

color

style

color

color

<

</bod</htm

ApliLos coañadtalesreprerepreSystepropoherra

El sigincluypropisubp

<p><font f

Enter some<input id

ana;backgrout "server"/>

<p><font f

Select an <select id

r:lightblue;<option><option><option>

</select>

<p><font f

Select an <span styl

<inpute "width:50;

<inputr:red;zoom:2

<inputr:red;zoom:2

</span>

</form>

dy>ml>

icando Esontroles Weiendo variascomo coloresentan un sesentan comem.Web.UI.Worcionan comamientas de

uiente ejemye un calendiedad que esropiedad Pro

face "verdan

e text: <p>"MyText" typ

und color:ye>

face "verdan

item: <p>d "MySelect"color:purpl

>Item 1</opt>Item 2</opt>Item 3</opt

face "verdan

option: <p>e "font: 16

t id "MyRadibackground

t id "MyRadi00%" runat

t id "MyRadi00%" runat

stilos a Coeb de Sevidorpropiedadede fondo, noubconjuntoo propiedadWebControlsmprobacióndesarrollo co

plo muesta udatio sin estils un tipo de copertyName�

a"><h4>Style

pe "text" vallow;border

a"><h4>Style

style "fonte;" runat "sion>ion>ion>

a"><h4>Style

pt verdana;o1" type "racolor:red;zoo2" type "ra"server"/>Opo3" type "ra"server"/>Op

ntroles dr proporcions fuertemenombre y tamde los compes llanas accs.WebControen tiempo domo Microso

un controlWlos aplicadosclase, por eje�SubProperty

ed Text Inpu

alue "One, Tstyle:dashe

ed Select In

t: 14pt verdserver">

ed Radio But

;font weightadio" name "oom:200%" ruadio" name "ption 2<br>adio" name "ption 3

e Servidoan un nivel a

nte tipadas pmaño de la fuortamientoscesibles direcol. La ventaje compilacióoft Visual Stu

WebCalendars para contraemplo Font,yName.

ut</h4></fon

Two, Three"ed;border co

nput</h4></f

dana;backgro

ttons</h4></

t:300">"Mode" checkunat "server"Mode" style

"Mode" style

oradicional deara los ajusteente, etc. Ess de estilo disctamente a ta de usar estón y finalizacudio .NET.

r con varios eastar). Obsernecesitamos

nt><p>

style "fontolor:red;wid

font><p>

ound

/font><p>

kedr"/>Option 1e "width:50;

e "width:50;

soporte paraes de estilosstas propiedasponibles entravés de la ctas propiedación de decla

estilos aplicarvad que al fis usar la sint

���� )?

t: 14ptdth:300px;"

<br>background

background

a estilos,más usadosades de estiloHTML y seclase baseades es quearaciones en

ados a él (seijar unataxis de

?�� �����

!

s,o

www.depurando.com 314

Page 315: ASP .NET Framework 3.5

<%@ P

<html<body

Page Languag

l>y>

ge "C#" %>

���� )??�� �����

"

www.depurando.com 315

Page 316: ASP .NET Framework 3.5

<fo

<

</bod</htm

El espencapTableaccesrepreWeekPodePrope

orm id "Form

<h3><font

<p><font f

<b>No Styl<p><ASP:Calen<p>

<b>Style:<<p><ASP:Calen

BackCForeCBordeBordeBordeHeighWidthFontFontFontCellSCellPShowG

/>

</form>

dy>ml>

pacio de nompsula los atrieItemStyle hso a propiedaesentación dkendDayStymos fijar proertyName�Su

m1" runat "s

face "verda

face "verdan

e:</b>

ndar ID "Cal

</b>

ndar ID "Cal

Color "BeigeColor "BrownerWidth "3"erStyle "SolerColor "Blaht "450"h "450"Size "12pt"Names "TahomUnderline "pacing 2

Padding 2GridLines tr

mbres Systemibutos de esteredan de eades de esteel control. Ple, TodayDayopiedades inubPropertyN

erver">

na">Applying

a"><h4>Style

endar1" runa

endar2" runa

""

id"ck"

ma,Arial"false"

ue

m.Web.UI.Wtilo comunessta clase base tipo para esor ejemplo,yStyle, Selecndividuales pName, como m

g Styles to

e Properties

at "server"

at "server"

WebControlss (las clases ase común). Vspecificar el�� da accesoctedDayStyleara estos esmuestra el s

Web Control

s</h4></font

/>

incluye unaadicionales dVarios controestilo de elea propiedade, OtherMontilos medianiguiente ejem

ls</font></h

t><p>

clase base Sde estilo, comoles Web dementos indivdes de accesonthDayStylete la sintaxismplo.

���� )?

h3>

tyle quemo TableStyservidor danviduales deo como: Dayy NextPrevSs de subprop

?�� �����

)

le yn

yStyle,Style.piedad

www.depurando.com 316

Page 317: ASP .NET Framework 3.5

<%@ P

<html<body

<fo

Page Languag

l>y>

orm id "Form

<h3><font

<p><font f

<ASP:Calen

BackCForeCBordeBordeBordeHeighWidthFontFontFontCellSCellPShowG

TitleTitleTitleTitle

ge "C#" %>

m1" runat "s

face "verda

face "verdan

ndar ID "Cal

Color "BeigeColor "BrownerWidth "3"erStyle "SolerColor "Blaht "450"h "450"Size "12pt"Names "TahomUnderline "pacing 2

Padding 2GridLines tr

eStyle BordeeStyle BordeeStyle BackCeStyle Heigh

erver">

na">Applying

a"><h4>Style

endar1" runa

""

id"ck"

ma,Arial"false"

ue

rColor "darkrWidth "3"olor "olivedt "50px"

g Styles to

e Sub Proper

at "server"

kolivegreen"

drab"

Web Control

rties</h4></

"

ls</font></h

/font><p>

���� )?

h3>

?�� �����

*

www.depurando.com 317

Page 318: ASP .NET Framework 3.5

<

</bod</htm

Una selem

<ASP:<

</ASP

<%@ P

<html<body

<fo

BackC

BackC

DayHeDayHeDayHeDayHeDayHe

DayStDaySt

Today

WeekEWeekEWeekE

SelecSelec

OtherOther

/>

</form>

dy>ml>

sintaxis ligerento hijo, an

Calendar ..<TitleStyle Back

P:Calendar>

Page Languag

l>y>

orm id "Form

<h3><font

<p><font f

<ASP:Calen

BackCForeCBordeBordeBordeHeighWidthFontFontFontCellSCellPShowG

>

<TitlColor "olive

<DayHColor "olive

<Week

<DayS

eaderStyle BeaderStyle BeaderStyle BeaderStyle FeaderStyle H

tyle Width "tyle Height

yDayStyle Bo

EndDayStyleEndDayStyle WEndDayStyle

ctedDayStylectedDayStyle

rMonthDayStyrMonthDaySty

amente difenidado dentr

. runat "seBorderColor

kColor "oliv

ge "C#" %>

m1" runat "s

face "verda

face "verdan

ndar id "MyC

Color "BeigeColor "BrownerWidth "3"erStyle "SolerColor "Blaht "450"h "450"Size "12pt"Names "TahomUnderline "pacing 2

Padding 2GridLines tr

eStyle Bordedrab" Heigh

HeaderStyleedrab" ForeC

kEndDayStyle

tyle Width

orderColor "orderWidth "ackColor "oloreColor "bleight "20px"

50px""50px"

rderWidth "3

BackColor "pWidth "50px"Height "50px

BorderColorBorderWidth

le Width "50le Height "5

rente permitro de las etiq

rver">"darkoliveg

edrab" Heigh

erver">

na">Applying

a"><h4>Style

alendar" run

""

id"ck"

ma,Arial"false"

ue

erColor "dart "50px" />

BorderColorolor "black"

BackColor "

"50px" Heigh

"darkolivegr"3"livedrab"lack""

3"

palegoldenro"x"

r "firebrickh "3"

0px"50px"

te declarar cquetas del co

green" Bordeht "50px" />

g Styles to

e Sub Proper

nat "server"

rkolivegreen

"darkoliveg" Height "20

"palegoldenr

ht "50px" />

reen"

od"

k"

cada propiedontrol Web d

erWidth "3">

Web Control

rties</h4></

"

n" BorderWid

green" Borde0px" />

rod" Width "

>

dad de Style ce servidor.

ls</font></h

/font><p>

dth "3"

erWidth "3"

"50px" Heigh

���� )?

como un

h3>

ht "50px" />

?�� �����

www.depurando.com 318

Page 319: ASP .NET Framework 3.5

<

</bod</htm

De lacontrperm

<%@ P

<html<head

<st.

</s

</hea<body

<fo

<Toda

<Sele

<Othe

</ASP:Cal

</form>

dy>ml>

misma formroles Web demite el acceso

Page Languag

l>d>

tyle>calstyle {

style>

ad>y>

orm id "Form

<h3><font

<p><font f

<ASP:Calen

BackCForeCBordeBordeBordeHeighWidthCellSCellPShowG

TitleTitleTitleTitle

DayHeDayHeDayHeDayHeDayHe

DayStDaySt

Today

WeekEWeekEWeekE

SelecSelec

OtherOther

ayDayStyle B

ectedDayStyl

erMonthDaySt

endar>

ma que con loe servidor meo a una prop

ge "C#" %>

font size:1

m1" runat "s

face "verda

face "verdan

ndar ID "Cal

Color "BeigeColor "BrownerWidth "3"erStyle "SolerColor "Blaht "450"h "450"pacing 2

Padding 2GridLines tr

eStyle BordeeStyle BordeeStyle BackCeStyle Heigh

eaderStyle BeaderStyle BeaderStyle BeaderStyle FeaderStyle H

tyle Width "tyle Height

yDayStyle Bo

EndDayStyleEndDayStyle WEndDayStyle

ctedDayStylectedDayStyle

rMonthDayStyrMonthDaySty

orderWidth "

e BorderColo

yle Width "5

os controlesediante unaiedad String

2pt; font fa

erver">

na">Applying

a"><h4>The C

endar1" CssC

""

id"ck"

ue

rColor "darkrWidth "3"olor "olivedt "50px"

orderColor "orderWidth "ackColor "oloreColor "bleight "20px"

50px""50px"

rderWidth "3

BackColor "pWidth "50px"Height "50px

BorderColorBorderWidth

le Width "50le Height "5

"3" />

or "firebric

50px" Height

HTML de sedefinición dllamada Css

amily:Tahoma

g Styles to

CssClass Pro

Class "calst

kolivegreen"

drab"

"darkolivegr"3"livedrab"lack""

3"

palegoldenro"x"

r "firebrickh "3"

0px"50px"

ck" BorderWi

t "50px" />

rvidor, podee clase CSS.sClass para e

a,Arial; }

Web Control

operty</h4><

tyle" runat

"

reen"

od"

k"

idth "3" />

mos aplicarLa clase basestablecer la

ls</font></h

</font><p>

"server"

���� )?

estilos aeWebContrclase estilo.

h3>

?�� �����

ol

www.depurando.com 319

Page 320: ASP .NET Framework 3.5

<

</bod</htm

Si sefuertcontren elde esusarla repes esen el

<%@ P

<html

<head

<st

.

</s

</hea

<body

<fo

weigh

/>

</form>

dy>ml>

establece unemente tiparol. Por defecHTML devuestilo y clase slas propiedapresentaciónpecialmentesiguiente eje

Page Languag

l>

d>

tyle>

beige { bac

style>

ad>

y>

orm id "Form

<h3><font

<p><font f

<table sty<tr>

<td><b<td><A

ht:700;"/></</tr><tr>

<td><b

n atributo enda del contrcto, los contelto al navegse pueden esdes fuertemn real del cone útil para losemplo.

ge "C#" %>

ckground col

m1" runat "s

face "verda

face "verdan

yle "font: 1

b>Login: </bASP:TextBoxtd>

b>Password:

n un control dol, el atributroles de servgador clientestablecer diremente tipadasntrol, tambiés controles d

or:beige }

erver">

na">Applying

a"><h4>Expan

0pt verdana;

></td>ID "TextBox1

</b></td>

de servidor qto y el valor svidor represee que los hayectamente es. Mientras qén puede serde entrada de

g Styles to

ndo CSS Styl

; background

1" runat "se

que no correse rellenan eentarán estoya pedido. Esen controlesque esto reqr una forma fe formulario

Web Control

les</h4></fo

d color:tan"

erver" class

esponda a unen el grupo Aos atributos ssto significa qWeb de servuiere algo deflexible de apestándares

ls</font></h

ont><p>

" cellspacin

s "beige" st

���� )?

na propiedadAttributes desin modificarque los atribvidor, en lugae comprensiplicar estiloscómo verem

h3>

ng 15>

tyle "font

?�� �����

dlrlosutosar deón de. Estomos

www.depurando.com 320

Page 321: ASP .NET Framework 3.5

class

<

</bod</htm

Los eel mé

<%@ P<%@ I

<html

<head

<st

.

</s

</hea

<scri

v

}

</scr

<body

<fo

weigh

<td><As "beige"/><

</tr><tr>

<td><b<td>

<ASP

</AS</td>

</tr><tr>

<td>&n<td><A

</tr></table>

</form>

dy>ml>

stilos de losétodo ApplyS

Page LanguagImport Names

l>

d>

tyle>

beige { bac

style>

ad>

ipt language

void Page Lo

System.W style.Bo style.Bo style.Bo

MyLogin. MyPasswo MySubmit

}

ript>

y>

orm id "Form

<h3><font

<p><font f

<table sty<tr>

<td><b<td><A

ht:700;"/></</tr><tr>

<td><b

ASP:TextBox</td>

b>Select a V

P:DropDownLi<ASP:ListIt<ASP:ListIt<ASP:ListItP:DropDownL

nbsp;</td>ASP:Button I

controles WStyle de la cl

ge "C#" %> pace "System

ckground col

e "C#" runat

oad(Object S

Web.UI.WebCoorderColor orderStyle orderWidth

ApplyStyleord.ApplyStyt.ApplyStyle

m1" runat "s

face "verda

face "verdan

yle "font: 1

b>Login: </bASP:TextBoxtd>

b>Password:

ID "TextBox2

iew: </b></t

st ID "DropDem>Default Dem>My Stock em>My Contacist>

D "Button1"

Web de servidlase baseWe

m.Drawing" %

or:beige }

"server">

rc, EventArg

ntrols.StyleColor.BlackBorderStyle1;

(style);le (style);(style);

erver">

na">Applying

a"><h4>Apply

0pt verdana;

></td>id "MyLogin"

</b></td>

2" TextMode

td>

DownList1" cDesktop</ASPPortfolio</

ct List</ASP

Text "Submi

dor se puedeebControl, có

%>

gs E ) {

e style nek;e.Dashed;

g Styles to

ying Styles

; background

" runat "ser

"Password"

class "beigeP:ListItem>/ASP:ListIteP:ListItem>

it" runat "s

en establecerómo vemos

ew System.We

Web Control

Programmati

d color:tan"

rver" class

runat "serv

e" runat "se

em>

server" clas

r mediante cen el siguien

eb.UI.WebCon

ls</font></h

ically</h4><

" cellspacin

"beige" sty

���� )?

ver"

erver">

s "beige"/>

código utilizante código

ntrols.Style

h3>

</font><p>

ng 15>

yle "font

?�� �����

</td>

ando

();

www.depurando.com 321

Page 322: ASP .NET Framework 3.5

class

class

<

</bod</htm

UsaEn lapropi

<td><As "beige"/><

</tr><tr>

<td><b<td>

<ASP

</AS</td>

</tr><tr>

<td>&n<td><A

s "beige"/><</tr>

</table>

</form>

dy>ml>

ar Temassección anteiedades de lo

ASP:TextBox</td>

b>Select a V

P:DropDownLi<ASP:ListIt<ASP:ListIt<ASP:ListItP:DropDownL

nbsp;</td>ASP:Button i</td>

para pererior vimos vos estilos en

id "MyPasswo

iew: </b></t

st id "MySelem>Default Dem>My Stock em>My Contacist>

d "MySubmit"

rsonalizavarias formaslos propios

ord" TextMod

td>

lect" classDesktop</ASPPortfolio</

ct List</ASP

" Text "Subm

ar un sitis de especificontroles. Po

de "Password

"beige" runP:ListItem>/ASP:ListIteP:ListItem>

mit" runat "

ocar estilos aor ejemplo, c

d" runat "se

nat "server"

em>

"server"

los controleconsideremo

���� )?

erver"

>

s fijando lasos la siguient

?�� �����

te

www.depurando.com 322

Page 323: ASP .NET Framework 3.5

págin

<%@ P<!DOC"http<html<head

na, qué tiene

Page LanguagCTYPE html Pp://www.w3.ol xmlns "httd id "Head1"

e varios ajust

ge "C#" %> PUBLIC " //Worg/TR/xhtmltp://www.w3.

runat "serv

tes del estilo

3C//DTD XHTM1/DTD/xhtml1org/1999/xhtver">

aplicados a

ML 1.0 Trans1 transitiontml">

los controle

sitional//ENnal.dtd">

s individuale

N"

���� )?

es de la págin

?�� �����

�na.

www.depurando.com 323

Page 324: ASP .NET Framework 3.5

<ti</hea<body

<fo<

ForeC

ForeC

ForeC

CellS

ID "C

Heigh

Size

DataS

Width

SortE

SortE

SortE

ID "S

FROM

<</f

</bod</htm

Ademcualede fodiseñpáginfuent

itle>Page wiad>y>orm id "form<div>

<h3> Page wit<asp:Label

Color "orang<asp:Label

Color "orang<asp:Label

Color "orang<br />

This is so<br /><asp:Calen

Spacing "1"Font Nam

Calendar1"NextPrev<Selecte<OtherMo<TodayDa<DayStyl<NextPre<DayHead

ht "8pt" /><TitleSt

"12pt"ForeCo

</asp:Cale<br /><asp:GridV

SourceID "SqForeColo

h "461px"><FooterS<Columns

<asp:BExpression "

<asp:BExpression "

<asp:BExpression "

<asp:B</Column<RowStyl<PagerSt<Selecte<HeaderS<EditRow<Alterna

</asp:Grid<asp:SqlDa

SqlDataSourcrunat "s

[authors]"></asp:SqlD

</div>form>dy>ml>

más de especes nos ofrecerma separadñar un sitio sinas o el códigte externa pa

th No Theme

m1" runat "s

th No Theme AID "Label1

ge" /><br />ID "Label2

ge" /><br />ID "Label3

ge" /><br />

ome example

ndar BackCol

mes "Verdana

vFormat "ShoedDayStyle BonthDayStyleayStyle Backe BackColor

evStyle FontderStyle Fon

tyle BackCol

olor "White"endar>

View AutoGenqlDataSourceor "#333333"

tyle BackCo>

BoundField Dau id" />

BoundField Dau lname" /

BoundField Dau fname" /

BoundField Dns>e BackColor

tyle BackColedRowStyle Btyle BackCo

wStyle BackCatingRowStyldView>ataSource Coce1"erver" Sele

>DataSource>

cificar estilosen una maneda a las páginin preocupargo de la aplicara aplicar aj

Applied</ti

erver">

Applied</h3>" runat "ser

" runat "ser

" runat "ser

text: The qu

or "White" B

" Font Size

rtMonth" runackColor "#3ForeColor "

Color "#9999"#CCCCCC" /Bold "True"

t Bold "True

or "#333399"

Height "12p

erateColumns1"GridLines "

lor "#1C5E55

ataField "au

ataField "au>ataField "au>ataField "st

"#E3EAEB" /or "#666666"ackColor "#Clor "#1C5E55olor "#7C6F5e BackColor

nnectionStri

ctCommand "S

s en controlera fácil de denas de nuestrte por el estcación. Tambjustes estilíst

itle>

>rver" Text "

rver" Text "

rver" Text "

uick brown f

BorderColor

"9pt" ForeC

nat "server"333399" Fore"#999999" />999" ForeCol/>" Font Sizee" Font Size

" BorderStyl

pt" />

s "False" Ce

"None" ID "G

5" Font Bold

u id" Header

u lname" Hea

u fname" Hea

tate" Header

/>" ForeColorC5BBAF" Font5" Font Bold57" />"White" />

ing "<%$ Con

SELECT [au i

es individualeefinir estilostra aplicacióntilo y aplicarlbién puedesticos a tu ap

"Hello 1" Fo

"Hello 2" Fo

"Hello 3" Fo

fox jumped o

"Black" Bor

Color "Black

" Width "330eColor "Whit>lor "White"

"8pt" ForeCe "8pt" Fore

le "Solid" F

ellPadding "

GridView1" r

d "True" For

rText "au id

aderText "au

aderText "au

rText "state

"White" Hort Bold "Trued "True" For

nnectionStri

id], [au lna

es, ASP.NET 2para contron. El beneficilo más tardeobtener temlicación. Otr

ont Bold "tr

ont Bold "tr

ont Bold "tr

over the laz

rderStyle "S

k" Height "2

0px">te" />

/>

Color "WhiteeColor "#333

Font Bold "T

"4" DataKeyN

runat "serve

reColor "Whi

d" ReadOnly

u lname"

u fname"

e" SortExpre

rizontalAlige" ForeColorreColor "Whi

ings:Pubs %>

ame], [au fn

2.0 introducles y páginaso de los Teme sin tener qumas personalo beneficio e

���� )?

rue"

rue"

rue"

y dog.<br /

olid"

50px"

e" />333"

True" Font

Names "au id

er"

te" />

"True"

ession "stat

gn "Center"r "#333333"te" />

>"

name], [stat

e Temas, loss de nuestromas es que pue actualizarizados de unes que los aj

?�� �����

!

>

"

e" />

/>/>

e]

ssitio,uedeslas

naustes

www.depurando.com 324

Page 325: ASP .NET Framework 3.5

de esindep

El sigde esinformen la

Them<%@ P<!DOC"http<html<head

<ti</hea<body

<fo<

DataS

SortE

SortE

SortE

ID "S

FROM

<</f

</bod</htm

Exam<asp:

<asp:FonNex<Se<Ot

stilo estan almpendiente de

uiente ejemstilo para el cmación de epágina en ti

me cs.aspxPage LanguagCTYPE html Pp://www.w3.ol xmlns "httd id "Head1"itle>Page wiad>y>orm id "form<div>

<h3> Page wit<asp:Label<asp:Label<asp:Label<br />

This is so<br /><asp:Calen<br /><asp:GridV

SourceID "SqDataKeyN<Columns

<asp:BExpression "

<asp:BExpression "

<asp:BExpression "

<asp:B</Column

</asp:Grid<asp:SqlDa

SqlDataSourcrunat "s

[authors]"></asp:SqlD

</div>form>dy>ml>

mpleSkin.skLabel Font

Calendar Bant Names "VextPrevFormatelectedDaySttherMonthDay

macenados ee la aplicació

plo muestracontrol. Obsestilo. El temaempo de eje

ge "C#" ThemPUBLIC " //Worg/TR/xhtmltp://www.w3.

runat "servth Example

m1" runat "s

th Example TID "Label1ID "Label2ID "Label3

ome example

ndar ID "Cal

View ID "GriqlDataSourceNames "au id>

BoundField Dau id" />

BoundField Dau lname" /

BoundField Dau fname" /

BoundField Dns>dView>ataSource Coce1"erver" Sele

>DataSource>

kinBold "true"

ackColor "Wherdana" Fontt "ShortMonttyle BackColyStyle ForeC

en una únicaón a la que se

la misma páervad que laa aplica autoecución.

e "ExampleTh3C//DTD XHTM1/DTD/xhtml1org/1999/xhtver">Theme Applie

erver">

heme Applied" runat "ser" runat "ser" runat "ser

text: The qu

endar1" runa

dView1" Auto1"" runat "ser

ataField "au

ataField "au>ataField "au>ataField "st

nnectionStri

ctCommand "S

ForeColor "

ite" BorderCSize "9pt"

h" Width "33or "#333399"olor "#99999

a ubicación ye le aplica el

ágina con unpágina en sí

omáticament

heme" %> ML 1.0 Trans1 transitiontml">

ed</title>

d</h3>rver" Text "rver" Text "rver" Text "

uick brown f

at "server"/

oGenerateCol

rver">

u id" Header

u lname" Hea

u fname" Hea

tate" Header

ing "<%$ Con

SELECT [au i

"orange" run

Color "BlackForeColor "

30px" runat" ForeColor99" />

pueden serTema.

tema aplicaí mismo no nte las propied

sitional//ENnal.dtd">

"Hello 1" />"Hello 2" />"Hello 3" />

fox jumped o

/>

lumns "False

rText "au id

aderText "au

aderText "au

rText "state

nnectionStri

id], [au lna

nat "server"

k" BorderSty"Black" Heig"server">"White" />

mantenidos

do para espenecesita contdades de est

N"

><br />><br />><br />

over the laz

e"

d" ReadOnly

u lname"

u fname"

e" SortExpre

ings:Pubs %>

ame], [au fn

" />

yle "Solid"ght "250px"

���� )?

s de forma

ecificar los atener ninguntilo a los con

y dog.<br /

"True"

ession "stat

>"

name], [stat

CellSpacing

?�� �����

"

justesnatroles

>

e" />

e]

"1"

www.depurando.com 325

Page 326: ASP .NET Framework 3.5

<To<Da<Ne<Da<Ti

F</asp

<asp:For<Fo<Ro<Pa<Se<He<Ed<Al

</asp

La caLos teconsiSkin,paraApp_tiene

ObsedefinconteLas pde laPor erunaten pápropipara

TemUn teglobadirectanterASP.N%WIN

odayDayStyleayStyle BackextPrevStyleayHeaderStylitleStyle BaForeColor "Wp:Calendar>

GridView CereColor "#33ooterStyle BowStyle BackagerStyle BaelectedRowSteaderStyle BditRowStylelternatingRop:GridView>

arpeta Appemas residenste en un sucon extensióficheros está_Themes conun sólo fich

rvad en el ejiciones de coener varias dropiedades dpropiedad lo

ejemplo, unat="server"/>áginas con eliedad se sobuna definició

as Globalesema puede real para todastorio App_Thriormente. LoNETClientFileNDIR%\Micr

e BackColorkColor "#CCCe Font Bolde Font Bold

ackColor "#3White" Heigh

ellPadding "3333" GridL

BackColor "#kColor "#E3EAackColor "#6tyle BackColBackColor "#BackColor "

owStyle Back

Themesn en la carpebdirectorio bón .skin. Uáticos, por ejn dos temas dero skin y un

jemplo previontrol, tal y cdefiniciones dde controlesocal de un codefinición dque se encul Tema aplicabreescribirá.ón de contro

s y de Aplicesidir en uns las aplicaciohemes bajoos temas gloes, bajo el dirosoft.NET

"#999999" FoCCC" />"True" Font"True" Font

33399" Bordet "12pt" />

4"ines "None"1C5E55" FontAEB" />66666" ForeCor "#C5BBAF"1C5E55" Font#7C6F57" />Color "White

eta App_Thebajo esta carUn tema puedjemplo imágdefinidos, llano CSS.

io que los cocomo ellas dde control, ps definidas enontrol del mde un controuentre en unado utilizaránObservad quol en un fiche

caciónnivel de apliones). Los teel directorioobales se colorectorio de iT\Framewor

oreColor "Wh

Size "8pt"t Size "8pt"erStyle "Sol

Width "461pt Bold "True

Color "White" Font Boldt Bold "True

e" />

mes, directarpeta que code contenergenes. La siguamados "Def

ontenidos dedeben aparecpor ejemplo un el tema sobismo tipo enl del tipo <asfichero skinn la fuente Vue es un erroero de skin.

cación o enmas de niveraíz de la apocan en el dnstalación drk\<versio

hite" />

ForeColor "" ForeColorlid" Font Bo

px" runat "se" ForeColor

e" Horizonta"True" Fore

e" ForeColor

amente bajoontiene un grtambién unuiente figurafault" y "Whi

un fichero scer en la páguna definicióbreescribenn la página ensp:Calendarcausará que

Verdana. Unor especificar

un nivel máql de aplicacióplicación, comirectorio "The ASP.NET, pon>\ASP.NE

"White" />"#333333" H

old "True" F

server">r "White" />

alAlign "CeneColor "#333r "White" />

el directoriorupo de unofichero CSS

a muestra elte", cada un

skin son simpgina. Un ficheón por cada tautomáticamn la que aplicFont�Name=e todos los cvalor locar pr un valor de

quina (accesón se encuenmo se ha deshemes", bajopor ejemploETClientFi

���� )?

Height "8pt"Font Size "1

>

nter" />333" />

>

o raíz. Un temo mas fichery/o subdirecdirectorioo de los cua

plementeero de skin ptipo de contrmente los vacamos el tem="Verdana"ontroles Calepara dichae ID de propi

ible de formntran en elscritoo una carpeta

iles\Theme

?�� �����

)/>

2pt"

marosctorio

les

puederol.loresma.

endar

edad

a

a

es.

www.depurando.com 326

Page 327: ASP .NET Framework 3.5

La ubInet

AsignSe puThem

carpeaplicaestilo

AsignTambespecen unun sttendrconti

<?xml

<conf<

<</con

DeshUn coel est

SkinPor dmismmismpodríen ot

Podela crepordeestabEn aufijada

bicación de lotpub\wwwro

nando un teuede asignarme="..." %

eta bajo el diado, pero eno a los contro

nando un tebién podemocificandolo ena página paring vacío (""remos que enuación).

l version "1

figuration x<system.web>

<pages the</system.webnfiguration>

habilitar Teontrol espectablecimient

ns identidefecto, la demo tipo en lasmo tipo tengaíamos queretra. Podemos

mos definireación de defemos estableblecer este musencia de laa). El siguient

os temas glooot\aspnet

ema a una pun tema a u

%> al nombrirectorio Then dicho temaoles de la pág

ema en conos definir el ten la secciónrticular pode"). Observadstablecer el

.0"?>

xmlns "http:>eme "Exampleb>>

emas para uífico puede so de la prop

ficados eefinición de us páginas dean aparienciaer que el texts hacer esto

diferentes efiniciones seecer diferentmismo SkinIDpropiedad Ste ejemplo m

bales para lot_client\s

páginauna página inre del Tema demes o App_pueden habgina.

nfigtema aplicad<pages th

emos establed que una matema en pág

//schemas.mi

Theme"/>

un controlser excluidoiedad Enable

en un Temun control enla aplicaciónas diferentesto de un contmediante sk

stilos para coeparadas deltes propiedaD en los contrSkinID, se apmuestra difer

os sition websystem_web

ndividual estde nivel glob_Themes). Unber varios fic

do para todasheme="..."

ecer el atribuaster page noginas de cont

icrosoft.com

de tener queeTheming a

man un ficheron. Sin embargs en distintastrol Label apkins identifica

ontroles delcontrol. En lades SkinID aroles de las plica el skin prentes skins

b de IIS esb\<version

ableciendo lbal o de aplicna página puheros skin p

s las páginas"/> de Web�uto Theme do puede tenetenido o en l

m/.NetConfig

e sobreescribfalse.

de skin se apgo, podemoss partes de laparezca en neados en un t

mismo tipolas definiciona nombres depáginas que tor defecto (upara los con

n>\Themes.

a directiva <cación (el nomuede tener sóara aplicar c

s de la aplica�config. Parade la directivaer un tema ala configurac

guration/v2.

bir sus propi

plica a todoss querer quea aplicación.egrita en unatema.

en un fichernes de los coe nuestra eletendrán dichuno sin la prntroles Label

���� )?

.

<%@ Page

mbre de laólo un temaonfiguracion

ciónquitar estea de la páginaplicado;ción (descrito

0">

edades med

s los controlee los controlePor ejemploa parte y en

o skin mediaontrolesección, y desho skin aplicaopiedad Skiny Calendar.

?�� �����

�*

nes de

temana a

o a

iante

es deles delo,italic

ante

spuésado.nID

www.depurando.com 327

Page 328: ASP .NET Framework 3.5

Obseestilo

Nam<%@ P<!DOC"http

<html<head

<ti</hea<body

<fo<<

rvad que a loos diferente a

medSkin cs.aPage LanguagCTYPE html Pp://www.w3.o

l xmlns "httd id "Head1"itle>Named Sad>y>orm id "form<div><h3>Named Sk

os controlesal skin por de

aspxge "C#" ThemPUBLIC " //Worg/TR/xhtml

tp://www.w3.runat "serv

kins</title

m1" runat "s

kins</h3>

de una págiefecto.

e "OrangeThe3C//DTD XHTM1/DTD/xhtml1

org/1999/xhtver">>

erver">

na con un Sk

eme2" %> ML 1.0 Trans1 transition

tml">

kinID estable

sitional//ENnal.dtd">

ecido se les a

N"

���� )?

aplica un gru

?�� �����

� po de

www.depurando.com 328

Page 329: ASP .NET Framework 3.5

<</f

</bod</htm

Labe

<asp:<asp:

Calen<asp:DayNaHeigh

<Se<Se<Ot<To<Ne<Da<Ti

/></asp

<asp:CellPForeC

<Se<Se<We<Ot<To<Ne<Da<Ti

</asp

Los skde loskinslas deskin e

/Web/App/MDeReBl

Alterque c

<asp:Label<asp:Label<asp:Label<br /><asp:Calen<br /><asp:Calen

</div>form>dy>ml>

el.skin

label runatlabel runat

ndar.skinCalendar ru

ameFormat "Fht "200px" SelectedDayStelectorStyletherMonthDayodayDayStyleextPrevStyleayHeaderStylitleStyle Ba

p:Calendar>

Calendar SkPadding "4"Color "BlackelectedDayStelectorStyleeekendDayStytherMonthDayodayDayStyleextPrevStyleayHeaderStylitleStyle Bap:Calendar>

kins identifics temas. Debidentificadoefiniciones den un Tema,

bSite1p_Themes

MyThemeefault.skined.skinlue.skin

nativamentecada skin con

ID "Label1ID "Label2ID "Label3

ndar ID "Cal

ndar ID "Cal

t "server" ft "server" S

unat "serverFirstLetter"howGridLine

tyle BackCole BackColoryStyle ForeCe BackColore Font Sizee BackColor

ackColor "#9

kinID "SimplDayNameForm

k" Height "1tyle BackCole BackColoryle BackColoyStyle ForeCe BackColore VerticalAle BackColor

ackColor "#9

cados se puebido a que uos en diferene controles ccada uno no

e podríamosntendría un c

" runat "ser" runat "ser" runat "ser

endar1" runa

endar2" Skin

ont bold "trkinID "Blue"

" BackColorFont Names

s "True" Widor "#CCCCFF""#FFCC66" />olor "#CC996"#FFCC66" Fo"9pt" ForeCo"#FFCC66" F

90000" Font

e" runat "seat "FirstLet80px" Widthor "#666666""#CCCCCC" />r "#FFFFCC"olor "#80808"#CCCCCC" Foign "Bottom""#CCCCCC" F

99999" Borde

eden organizan tema puedtes ficheros,con el mismoombrado seg

agrupar losconjunto de

rver" Text "rver" Text "rver" Text "

at "server"/

nID "Simple"

rue" forecol" font bold

"#FFFFCC" B"Verdana" F

dth "220px">" Font Bold>66" />oreColor "Wholor "#FFFFCFont Bold "TBold "True"

erver" BackCtter" Font N"200px">

" Font Bold>/>

80" />oreColor "Bl" />Font Bold "TerColor "Bla

ar de diferende contener v, de forma quo SkinID. Porgún el valor d

ficheros de cdefiniciones

"Hello 1" />"Hello 2" Sk"Hello 3" />

/>

" runat "ser

lor "orange""true" fore

BorderColorFont Size "8>"True" />

hite" />CC" />True" Height" Font Size

Color "WhiteNames "Verda

"True" Fore

lack" />

True" Font Sack" Font Bo

ntes formas dvarios ficherue cada unor ejemplo, pode SkinID:

control segús de skin para

><br />kinID "Blue"><br />

rver"/>

" />ecolor "blue

"#FFCC66" B8pt" ForeCol

t "1px" />"9pt" ForeC

e" BorderColana" Font Si

eColor "Whit

Size "7pt" /old "True" /

dentro de loros de skin dede estos fichodemor tene

n el tipo de ca un control

���� )?

/><br />

e" />

BorderWidthor "#663399

Color "#FFFF

or "#999999ze "8pt"

te" />

>>

s ficheros deebemos diviheros contener tres ficher

control, de fparticular:

?�� �����

��

"1px""

CC"

"

e skindir losngaros de

orma

www.depurando.com 329

Page 330: ASP .NET Framework 3.5

/Web/App/MGCaLa

Podeejem

/Web/App/MHoDaFo

La poflexibskinsde sk

EstiUn Tedespuaplicadesarsitio.en lade ap

Por ocompdefinTemaservidTemapropidefin

bSite1p_Themes

MyThemeridView.skinalendar.skinabel.skin

mos inclusoplo:

bSite1p_Themes

MyThemeomePage.skataReports.sorums.skin

osibilidad debilidad de orgcon otros o

kin de un Tem

ilos del laema está desués de que eación no tienrrolladores dCuando se adefinición dplicación.

otro lado, esportamientoir los estilosas para estedor. Cuandoa estableceniedades puedición del Tem

dividir estos

inskin

tener variosganización. Acopiar las dema.

ado del sstinado a serel sitio ya estne porque sede aplicaciónaplica un Temel Tema sob

algo comúnde servidorde control ypropósito, alo aplicamoel valor porden establecma.

s ficheros de

s ficheros deAdemás nosefiniciones d

ervidor ur aplicado a uté hospedadoer la misma qn y diseñadorma a una aplreescriben lo

entre los depor separady de marcadoplicando el Ts de esta fordefecto paracerse tambié

skin basánd

skins en unpermite comde un tema a

utilizanduna aplicacióo en un servque la desarrres del web sicación, las pos valores de

sarrolladoredo. Un ejempo en un ficheTema como urma, las propa los controlén en la págin

donos en las

mismo direcmpartir fácilmotro sin ten

do Temasón después didor. La persrolló. Por ejesite trabajanpropiedadese los controle

es factorizar iplo de esto esero separadouna especiepiedades de ees de la aplicna de contro

áreas de nue

ctorio Thememente las defer que edita

sde haberla crsona que aplemplo, es comdo en diferede estilo ques de destino

informacións la utilizacióo. También pde hoja de eestilo en la dcación, perool para sobre

���� )?

estro sitio, p

e nos da estafiniciones der otros fiche

reado, inclusica el tema amún tenerentes aspectoe se encuento en las pági

estilística yón de CSS paodemos utiliestilos del laddefinición deestas

eescribir la

?�� �����

��

or

aeeros

soa la

os deltrannas

elraizardo del

www.depurando.com 330

Page 331: ASP .NET Framework 3.5

EstiCuansecciómismcon spropisobre

Them<%@ P<!DOC"http

<html<head

<ti</hea<body

<fo<<

<</f

</bod</htm

Labe<asp:

Una datribual noTemaTemaForeC

los Declado aplicamoón <pages/>

mo nombre dsu propiedadiedad ForeCoe la propieda

meOverridePage LanguagCTYPE html Pp://www.w3.o

l xmlns "httd id "Head1"itle>Theme Oad>y>orm id "form<div><h3>Properti

<asp:Label<asp:Label&lt; Not<br /><asp:Label

</div>form>dy>ml>

el.skinlabel runat

definición deuto StyleShembre del Tema pueden sera del ejemploColor definid

ratiovs deos un tema es> de configure los controld ForeColor folor a naranjad local del c

e cs.aspxge "VB" ThemPUBLIC " //Worg/TR/xhtml

tp://www.w3.runat "serv

Overrides Pa

m1" runat "s

es in the PID "Label1ID "Label2

tice that th

ID "Label3

t "server" f

e Tema se pueetTheme dema. Cuandor sobreescrito anterior apda en la págin

el lado destableciendoación, las prles destino dijada a azul.ja. Observadcontrol, y tod

e "OrangeThe3C//DTD XHTM1/DTD/xhtml1

org/1999/xhtver">ge Propertie

erver">

age are Over" runat "ser" runat "seris Label is

" runat "ser

ont bold "tr

uede aplicare la directivase aplica meas por los coplicado comona gana fren

el servidoo el atributoopiedades dde la página.En el tema a

d al ejecutar ldos los Label

eme" %> ML 1.0 Trans1 transition

tml">

es</title>

rridden By Trver" Text "rver" Text "orange (fro

rver" Text "

rue" forecol

como un est@Page o deediante un Stontroles de lao un StyleShete la definici

rTheme de lae skins del teEl siguienteaplicado, el sla página ques se represe

sitional//ENnal.dtd">

Theme</h3>"Hello 1" />"Hello 2" Foom Theme) in

"Hello 3" />

lor "orange"

tilo del lado de la sección <tyleSheetThea Página. El seetTheme. Oión del Tema

a directiva @ema sobreesejemplo muskin de "Labee la definicióntan naranja

N"

><br />oreColor "blnstead of bl

><br />

" />

de servidor e<pages/> deeme, las prosiguiente ejeObservad quea, de forma q

���� )?

@Page o de lascriben las deuestra un "Lael" define laón del Temaas.

ue" />ue (from Pa

estableciendla configuracpiedades demplo mueste la propiedaque ahora el

?�� �����

��

aelbel"

gana

ge)

do elciónlra elad

www.depurando.com 331

Page 332: ASP .NET Framework 3.5

contr

PrioUn Staplicamantquereaplicacontr

Las p

Las p

Las pde co

El sig

Them<%@ P<!DOC"http

<html<head

<ti</hea<body

<fo<<

Itali

overr

rol "Label" se

oridad detyleSheetTheación, comotener el comer aplicar Teamos tanto uroles se aplic

ropiedades S

ropiedades d

ropiedades dontrol como

uiente ejem

mesAndStyPage LanguagCTYPE html Pp://www.w3.o

l xmlns "httd id "Head1"itle>Precedead>y>orm id "form<div><h3>Preceden

<asp:Label<asp:Label

ic "false" /&lt; Pag

rides everyw<br />

e representa

Tema y Seme se supomedio paraportamientomas a una apun Tema comcan en el sigu

StyleSheetTh

del Control e

de Tema se aStyleSheetTh

plo muestra

lesheetThege "C#" ThemPUBLIC " //Worg/TR/xhtml

tp://www.w3.runat "serv

ence: Theme

m1" runat "s

nce: Theme OvID "Label1ID "Label2

>ge overrides where

azul.

StyleSheetne que estáfactorizar nuo de la aplicaplicación a lamo un StyleSuiente orden

heme se apli

en la página

aplican en úlheme)

el orden de

emes.aspxe "OrangeThe3C//DTD XHTM1/DTD/xhtml1

org/1999/xhtver">Overrides Pa

erver">

verrides Pag" runat "ser" runat "ser

Font Italic

tPagehecho para suestra información separaa que ya hemheetThemen:

can primero

se aplican (s

ltimo lugar (

prioridad de

eme" StyleShML 1.0 Trans1 transition

tml">

age Override

ge Overridesrver" Text "rver" Text "

c property o

ser aplicadomación de esdo del aspecmos aplicadoa un aplicaci

o

obreescribe

sobreescribie

escrito arriba

heetTheme "Gsitional//ENnal.dtd">

es StyleShee

s StyleSheet"Hello 1" />"Hello 2" Fo

of StyleShee

durante el dstilo en las pácto de la aplicun StyleSheión, las prop

n StyleSheet

endo tanto l

a.

GreenTheme"N"

etTheme</tit

tTheme</h3>><br />oreColor "bl

etTheme, but

���� )?

desarrollo deáginas y asícación. PodeeetTheme. Siiedades de l

tTheme)

as propiedad

%>

tle>

ue" Font

t Theme Fore

?�� �����

��

e la

emos

os

des

Color

www.depurando.com 332

Page 333: ASP .NET Framework 3.5

<</f

</bod</htm

ConCómode coen unañad

PropLas dpropipropiAñadcontrdatosningúespecacudi

UtiliUna Hsubdiapliqdefin.css

a loselemde la

Style<%@ P<!DOC"http<scri

</scr<html<head

<ti

<asp:Label</div>form>dy>ml>

ntenidoso se ha mostontroles conna aplicaciónir a un ficher

piedadesefiniciones diedades queiedades queiendo una prol por si miss no son temún control. Tcifique lo conid a la docum

izando HoHoja de Estilirectorio deluemos el temido. Podemos. Un Tema pficheros CSSento <headpágina.

esheet.aspxPage LanguagCTYPE html Pp://www.w3.oipt runat "s

ript>l xmlns "httd id "Head1"itle>CSS Sty

ID "Label3

de un Tetrado en las slos valores dn. Esta seccióro de skin o d

Tematizade controlesestán marcapodrían serropiedad qusmo puede smatizables. Poodas las prontrario. Paramentación de

ojas de Esos en CascadTema. La homa, siempreos nombrar epuede contenS (mediante u/>), cualquie

xge "C#" ThemPUBLIC " //Worg/TR/xhtmlerver">

tp://www.w3.runat "serv

ylesheet in

" runat "ser

ema y Skisecciones ande las propieón discute dede Tema.

ablesen un ficheradas como Ttematizadase no es temaer excluido dor defecto, lapiedades sona comprobare referencia

stiloda (CSS) puedoja de estilosque la páginel fichero CSSner múltiplesuna etiquetaer fichero CS

e "MyTheme"3C//DTD XHTM1/DTD/xhtml1

org/1999/xhtver">a Theme</tit

rver" Text "

innteriores, undades que aetalles adicio

ro de skin sóematizabless mediante Tatizable a unde un Tema,a ID de la pron tematizablsi cierta prodel Framew

de ser añadis CSS se aplicna tenga un cS de cualquies ficheros CSa <link reSS del Tema s

%>ML 1.0 Trans1 transition

tml">

tle>

"Hello 3" />

fichero de Splicaremos aonales sobre

lo pueden co. Cada controThemeableAtn fichero de spor ejemploopiedad no ses por defec

opiedad es teork .NET.

do a un Temcará a todascontrol <heaer forma sieSS. Cuando lal="stylesh

se aplicara d

sitional//ENnal.dtd">

><br />

Skin contienea los controlequé es conte

ontener valool define unttribute en lskin produceo los controlese puede temcto a no ser qematizable en

ma colocándolas páginas aad runat="

mpre que tea página contheet" href

espues de la

N"

���� )?

e las definicioes del mismoenido válido

ores paraconjunto dea propiedade un error. Ues de fuentematizar paraque un contrn un control

olo bajo ela las que"server"/>

nga la extentiene referenf="..."/>

as hojas de e

?�� �����

��

oneso tipopara

e.nde

rol,

>

nsiónnciasen elstilo

www.depurando.com 333

Page 334: ASP .NET Framework 3.5

</hea<body

<fo<

<</f

</bod</htm

Stylebody{

bff

}

Labe<asp:

Asig

<%@ P<!DOC"http<scri

Pro

PEnd

</scr<html<head

<ti</hea<body

<fo<

<</f

</bod</htm

ad>y>orm id "form<div>

<h2> CSS Styl<asp:Label<asp:Label<asp:Label

</div>form>dy>ml>

eSheet.css

background cfont family:font size:sm

el.skinlabel runat

gnando un

Page LanguagCTYPE html Pp://www.w3.oipt runat "s

otected Sub

Page.Themed Sub

ript>l xmlns "httd id "Head1"itle>Assigniad>y>orm id "form<div>

<h2>Assign<a href "p<a href "p

</div>form>dy>ml>

m1" runat "s

esheet in a ID "Label1ID "Label2ID "Label3

color: lightbVerdana;

mall;

t "server" f

n Temam

ge="VB" %>PUBLIC " //Worg/TR/xhtmlerver">

Page PreIni

Server.Htm

tp://www.w3. runat "servng a Theme

m1" runat "s

ning a Theme programmaticprogrammatic

erver">

Theme</h2>" runat "ser" runat "ser" runat "ser

blue;

ont bold "tr

mediante C

3C//DTD XHTM1/DTD/xhtml1

t()

lEncode(Requ

org/1999/xhtver">in Code</tit

erver">

in Code</h2vb.aspx?Thevb.aspx?The

rver" Text "rver" Text "rver" Text "

rue" forecol

Código

ML 1.0 Trans1 transition

uest.QuerySt

tml">

tle>

2>eme ThemeA">eme ThemeB">

"Hello 1" />"Hello 2" />"Hello 3" />

lor "purple"

sitional//ENnal.dtd">

tring("Theme

>Theme A</a>>Theme B</a>

><br />><br />><br />

" />

N"

e"))

>>

���� )??�� �����

�!

www.depurando.com 334

Page 335: ASP .NET Framework 3.5

AApliicaccio

��

Mnecon

���

����

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

MCsn .N

� )?�

����

CTS:WebNET

3

��

:bT

5

www.depurando.com 335

Page 336: ASP .NET Framework 3.5

��

Los eque spermmost

Los e

Los sidinámaparipersoTradidesdeel sernaveg

ASP.Ncrear

IntrEl Co

��� �

lementos wese ajusten a smiten al usuarrarlo.

lementos we

itios Web momicas y persoencia del coonalizar el cocionalmentee la creaciónrvidor, hastagación.

NET 2.0 inclur páginas con

roducciónnjunto de Co

LosWebPpersonaliservidor o

LasWebPpágina. LaWebPartWebPart

� ���

eb permitensus necesidario escoger q

eb nos perm

odernos reqonalizables.ntenido de laontenido dee, construir en de un códigescribir un s

uye un nuevon diseño mod

n a los Coontroles Elem

Part son conizados con eo control de

PartZone proas WebPartZy para añad.

�����

a los usuarioades y preferqué contenid

miten proporc

uieren frecuLos Usuariosas páginas dla página paresos sitios hago seguro, unscript del lad

o paquete dedular y dinám

ontrolesmentos Web

troles ASP.Nl Conjunto dusuario pue

oporcionan uZone son conir IU comune

os cambiar larencias. Mucdo quieren q

cionar esa fu

entemente Is de esos sitioe acuerdo ara mostrar laa requerido dna infraestrudo del cliente

e Elementosmico y con co

Elementincluye los s

NET de servide Controlesede comporta

un modo dentroles contees, consisten

a configurachos proveedue se muest

unción arrast

IUs (Interfacos pueden psus preferena informacióde gran cantiuctura de pere para ofrece

Web que haontenido per

tos Websiguientes co

dor que puedElementos Warse como u

organizar paenedores quentes como un

ión de partedores de infore y en qué c

trando “parte

es de Usuariersonalizar encias individun más relevaidad de códigrsonalizacióner una rica ex

acen que searsonalizado.

ontroles:

den ser usadWeb. Cualquin WebPart.

artes dentroe proporcionn Menú Verb

���� )?��

s del sitio paormacióncolumna deb

es” de la pág

o) que seanel diseño y lauales yante.go complejon comprensibxperiencia de

a muy sencill

os yier control d

de regionesnan capas pab y borde a c

�������

ara

ben

gina

a

o,ble ene

lo

e

en laara losada

www.depurando.com 336

Page 337: ASP .NET Framework 3.5

La Zode uscontela res

Un elmienelem

La infpersoelempuedlos elestánespec

Los etodosclaselos edque a

WebContrelem

<asp:

El controcoordinade Contro

CatalogPaelementoinclusión

CatalogZo

Connectiocualquier

EditorParmodificacde usuari

EditorZon

ona es un consuario adicioener múltiplesponsable de

lemento Wetras que unento Web en

fraestructuraonalizado deentos disponen añadir eleementos qundar proporccifican así en

lementos wes los controleabstracta deditores y catáa su vez se he

bPartMarol no visualentos Web.

WebPartMana

lWebPartMla comunicaoles Element

art Es la clasos presentandinámicae n

one Contene

onsZone Conr par de elem

rt Clase baseciones en losio para perm

ne Contened

ntenedor denales a todoes zonas y cae reproducir

b define el celemento edn concreto.

a de los elemelementos pnibles la propementos dine el usuariocionada por en el catálogo

eb son en últes de elemenenominada Pálogos de eleereda de uno

nagerque adminisSólo un Web

ager ID "Web

Managermanación entre latos Web deb

e base paran a los usuarin la página.

edor en el niv

ntenedor enmentos Web

e para todoss elementosmitir a los usu

dor de nivel d

elementos yos los elemenada una de elos elemento

contenido a mditor permite

mentos Webpara mostrarporciona unnámicamenteha eliminadoel sistema. Lode la página

tima instancntos que habPart. Asimismementos weo de los cont

stra los mismbPartManage

PartManager1

neja el estadoas partes y labe tener un c

los controlesos una lista

vel de página

el nivel de pque se encu

los controlesweb. Un eleuarios establ

de página pa

y proporcionntos que conellas puede coos de interfa

mostrar a trae a los usuar

permiten a lrlos en una pcontrol Catae. El catalogoo de la páginos elementoa.

ia controlesbilitan contemo, EditorPab. Todas lastroles de ser

mos elementoer por formu

1" runat "se

o de personaas zonas. Cadcontrol WebP

s de elementde elemento

a para contro

página para lentran en la

s de editor qmento editoecer propied

ra controles

a elementostiene. Una pontener unoaz de usuario

avés de las veios editar la

os usuariospágina y espealogPart. Deo también acna actuandoos eliminados

de servidor.nido utilizadrt y CatalogPclases de elevidor ASP.NE

os en una páulario.

erver"></asp

alización de lda página quPartManage

tos de catáloos Web dispo

oles Catalog

as conexionepágina.

que permitenor presenta sdades.

EditorPart

s y funcionalpágina ASP.No o más elemo.

entanas de lestructura y

seleccionar uecificar su poeste modo, lctúa como unsobre la intes se pueden

WebPart esdos en ASP.NPArt son las cementos se hET nativos: P

ágina habilita

p:WebPartMan

���� )?��

las páginas yue usa el paqr.

ogo. Estosonibles para

Part

es definidas

n realizarsu propia inte

idad de interNET puedementos. La zo

a página,los ajustes d

un conjuntoosición. La lislos usuariosn almacén paerfaz de usuarestablecer s

s la clase basET. Deriva dclases basesheredan de PPanel.

ada para

nager>

�������

�yuete

su

entre

erfaz

rfaz

na es

de un

sta de

araariosi se

e dee unaparaPart,

www.depurando.com 337

Page 338: ASP .NET Framework 3.5

Regiscamby las

El mode ed

Tambpropielem

ZonCadacontrde unpropibarra

EditoCatal

Crea<%@ Pa

<%@ Re<%@ Re

<!DOCT"http

<html<head

<t</head<body>

<f<d

</</

stra el modobio efectuadozonas se rep

odo de presedición no se m

bién permiteiedades y elentos web.

nas de Eletipo de elemroles WebPana coleccióniedades de ea de título) y

orZone se utiogZone se u

ar Páginaage Language=

egister src="Negister src="

TYPE html PUBL://www.w3.org

xmlns="http:runat="servetitle></title>d>>form id="formdiv>

<asp:WebPa</asp:WebPa<asp:WebPa

ID="WebPadding<Empty<PartSt<TitleB<MenuLa<MenuPo

Fon<MenuVe

Fo<PartT

Fo<ZoneTe

<u<u

</ZoneT<MenuVe

Bo<PartCh

Fo<Heade<MenuLa

</asp:Web/div>/form>

de presentao en el modopresentan de

entación pormuestran. Po

e a los usuaricomportami

ementosmento requiert genéricosdenominadaestilo, comoMenuVerbS

liza para contiliza para m

as con el"C#" AutoEven

News.ascx" taFavorites.asc

LIC " //W3C///TR/xhtml1/DT

//www.w3.org/r">>

1" runat="ser

rtManager ID=artManager>rtZone runat=bPartZone1" Bg="6" Width="ZoneTextStyletyle Font SizBarVerbStyleabelHoverStylopupStyle Bacnt Names="VererbStyle BordreColor="WhititleStyle BacreColor="Whitemplate>c2:Favoritesc1:News ID="NTemplate>erbHoverStylerderStyle="SohromeStyle BareColor="#333rStyle Font SabelStyle For

PartZone>

ación de la páo de presente distinta form

defecto es eodemos acce

os mover eleiento de los

ere su propio. Aloja todoa WebParts.PartStyle (eltyle (Elemen

ntener contromostrar el cat

ementostWireup="true

gname="News"x" tagname="F

DTD XHTML 1.0D/xhtml1 tran

1999/xhtml">

ver">

"WebPartManag

"server" HeadorderColor="#358px">Font Size="0e="0.8em" ForFont Size="0.e ForeColor="kColor="#507Cdana" Font SiderColor="#507e" />kColor="#507Ce" />

ID="FavoritesNews1" runat="

BackColor="#lid" BorderWickColor="#EFF333" />ize="0.7em" FeColor="White

ágina y notifación. Segúnma.

el Normal, loeder a la lista

ementos a zocontroles y a

o objeto de zel contenidoEL WebPartestilo del contos de menú

oles de editotalogo de ele

s Webe" CodeFile="W

tagprefix="ucFavorites" tag

0 Transitionalnsitional.dtd"

ger1" runat="s

derText="Esta#CCCCCC" Font

0.8em" />reColor="#33336em" Font Und"#D1DDF1" />CD1" BorderColize="0.6em" />7CD1" BorderSt

CD1" Font Bold

s1" runat="ser"server" />

#EFF3FB" Bordeidth="1px" ForF3FB" BorderCo

ForeColor="#CCe" />

ica a las zonan el modo de

que implicaa de zonas a

onas diferenactiva evento

zona. WebPao de elementtZone nos peontenido), Paú)

or para confiementos Web

WebPart1.aspx

c1" %> gprefix="uc2"

l//EN"">

server">

es la zona #1Names="Verdan

333" />derline="False

lor="#CCCCCC">tyle="Solid" B

d="True" Font

rver" />

erColor="#CCCCreColor="#3333olor="#D1DDF1"

CCCCC" Horizon

as y elemente presentació

que las zonatravés de la

tes , editar laos del ciclo d

artZone es eltos Web y losermite definiartTitleStyle

gurar elemeb disponible

.cs" Inherits=

%>

1"na" Height="3

e" ForeColor=

BorderWidth=

BorderWidth="

Size="0.8em"

CCC"333" />" Font Names=

ntalAlign="Cen

���� )?��

tos cualquierón los eleme

as de catalogcolección Zo

a apariencia,de vida de los

contenedors registra a tir algunas(el estilo de

ntos. Ys.

="WebPart1" %

39px"

"White" />

"1px"

1px"

"Verdana"

nter" />

�������

�rentos

go yones.

, lass

r pararavés

la

>

www.depurando.com 338

Page 339: ASP .NET Framework 3.5

</body</html

EL foreproWebmost

La eti

El con

La fDos f

y>l>

rmulario conoducción de tcon muchosrar un título

iqueta <Zone

ntenido de c

función dformas de de

Creaciónimplemen

Uno de u

ntiene un contodos los eles estilos y uny un borde a

eTemplate>

ada element

de los conefinir elemen

de un contronte alguna d

n control de

ntrol WebPaementos secpar de elemalrededor de

incluye todo

to Web se m

ntroles dentos Web:

ol de servidode las interfa

e usuario

artManager qundarios. EL

mentos. La zoel contenido

os los elemen

muestra a trav

e usuario

or personalizces necesari

que controlaformulario t

ona de eleme.

ntos web def

vés de un co

o

zado heredadas.

la ejecucióntambién conentos Web se

finidos para

ontrol de usu

do de WebPA

���� )?��

n y lantiene una zoe configura p

la zona.

uario (ascx)

Art y que

�������

onapara

www.depurando.com 339

Page 340: ASP .NET Framework 3.5

CroLos V

El “cr

ClasImplepropiusuardiferecontr

ElemPodeun co

A un

Los velem

EditParaDispl

WebP

ModoBrow

Catal

Conn

Desin

Edit

ma, VerbVerbos son la

roma” indica

se WebPaementa las iniedades comrio cuando trencia entre eroles de usua

mentos Wmos utilizarontrol de ser

elemento w

erbos identifento web pu

tar y Listcambiar el mayMOde del

PartManage

owse

log

nect

ng

bos y Menas opciones q

la estructur

artnterfaces: IWmunes de la inrabaja con eescribir elemario.

Web comcontroles invidor en el s

eb podemos

fican accioneuede habilita

tar elememodo de presadministrad

r1.DisplayM

núsque aparecen

ra del titulo y

WebPart, Iwenterfaz de uslementos W

mentos Web a

o controdividuales paegmento <Z

s aplicar estil

es que los usarlos o desha

entos Wesentación tedor de eleme

ode=mode;

n en la lista d

y del borde q

ebActionablesuario utilizaeb. Estas inta través de la

les de seara crear dooneTemplat

los y propied

suarios puedabilitarlos.

ebnemos que aentos Web.

DescLos econteusuadispoTodocon lañaddispoPermWebautoestéPermdentdiferSe melempara

desplegable

que rodea a u

e e IWebEditaadas para meerfaces repra clase base

rvidorcumentos we> de una zo

dades visuale

en ejecutar

asignar un n

ipciónelementos wenido; no serio adicionaonible ningunos los elemena página se mir nuevos eleoniblesmite al usuarexistentes pmáticamentepublicando e

mite al usuariro de la mismentes en la puestran a losentos de edque los usua

(Minimizar,

un elemento

able. Estas inejorar la expeesentan la pWebPart o a

eb. Es suficieona de eleme

es.

en los eleme

uevo valor a

eb presentamuestra niny no se encuna funcionalntos de catálmuestran a lementos we

o conectarsepara poder coe en uno cuael otro.o desplazarma zona o a tpágina.s usuarios toición asociadarios modifiq

���� )?��

Cerrar, etc)

o.

nterfaces deferiencia delprincipala través de

ente con coloento Web.

entos Web, c

la propieda

n su propionguna interfauentraidad adicionogo asociados usuariosb de catálog

e a elementoonsumiralquier dato

elementos Wtravés de zo

odos losdos a la páginquen los

�������

finen

ocar

cada

d

az de

alosparagos

os

que

Webnas

na

www.depurando.com 340

Page 341: ASP .NET Framework 3.5

Cuanalred

Los mzona

Crea<%@ C

<scriW

v{

}

p{

}

</scr

<asp:AO

CamUtilizWebP

Al pa

CreaEl conapare

EditoAppe

do se activaedor utilizan

modos Edit, Cde editor o u

ar un conControl Lang

ipt runat "sWebPartManag

void Page Lo{

managerif (!IsP

{

fore {

} }

}

public void{

string s

WebPartDif (mode

man}

ript>

DropDownLisAutoPostBackOnSelectedIn

mbiar el damos una taPartZone.

sar a modo d

ar una zontrol a utilizaece en la pos

orearanceEdito

el modo Desndo arrastrar

Catalog y Conuna zona de

ntrol de uguage "C#" C

erver">ger manager

oad(object s

r WebPartMPostBack)

each (WebPar

if (mode.Is Support

SelectedInd

electedMode

DisplayMode me ! null)nager.Displa

t ID "Suppok "true"ndexChanged

diseño deabla e incorp

diseño, vemo

ona de Edar es EditoZosición exacta

orPart

sign permiter y colocar.

nnect se encconexiones

usuario plassName "Mo

;

ender, Event

anager.GetCu

tDisplayMode

Enabled( manedModes.Item

exChanged(ob

Supported

mode mana

yMode mode

rtedModes" r

"SelectedInd

e las zonaoramos en 2

os como pod

ditorone. La zonaa definida pa

atrib

e a los usuari

uentran disprespectivam

para conmodeSwitcher"

tArgs e)

urrentWebPar

e mode in m

nager))ms.Add(mode.

bject sender

dModes.Selec

ager.Support

e;

runat "serve

dexChanged"

as2 columnas 2

demos move

de Editor sóra ella en la

DescNosanch

utos de elem

os finales m

ponibles sólomente.

mutar m" %>

rtManager(Pa

manager.Supp

.Name);

r, EventArgs

ctedValue;

tedDisplayMo

er"

/>

2 WebPartZo

er los webpar

ólo se muestrpágina.

ripciónpermite editura, el titulo

mentos web i

over los elem

o si la página

odos

age);

portedDispla

s e)

odes[selecte

one con 2 ele

rt.

ra en modo d

ar ajustes viso, la dirección

���� )?��

individuales.

mentos web

contiene un

ayModes)

edMode];

ementos en c

de edición y

suales comon del texto y

�������

!.

na

cada

o lael

www.depurando.com 341

Page 342: ASP .NET Framework 3.5

Beha

Layou

Prope

CreaPerm

EditoDecla

ImpoPage

ConLos co

El mopuntoconsude ele

ElemLas codeclalas ad

EsquVamoWebP

El eleun emID deexpo

viorEditorPa

utEditorPart

ertyGridEdit

ar zona dmite al usuari

orarativeCatalo

orCatalogParCatalogPart

nexión deontroles de u

odelo de cono de conexióumidor. Las cementos We

mentos Webonexiones searativamentedministra el u

uema prinos a aplicar ePArt.

emento provmpleado selee un determirtará el ID de

art

t

torPart

de cataloo añadir elem

ogPart

rt

e Elemenusuarios We

nexión consisón. Una coneconexiones deb.

b que se puee definen dee en el cuerpusuario a tra

ncipal/deel modelo de

eedor se deneccionado. Unado empleael empleado

gomentos en ti

tos Webeb se pueden

ste en 2 entidexión conectadisponibles e

eden conecdos formas:

po del adminavés de la zo

etallese conexión a

nomina EmpUn simple forado y obteneseleccionad

tipo dAjustelemEstiloelemPropdel edefinmarc[Web

iempo de eje

DescPrespartiperoPermListahabe

n comunicar

dades que ina 2 puntos, uen la página

ctar: estáticas y distrador de ena de conex

un par de el

ployeesWebPrmulario deeer sus datosdo a través d

de bordetes de compoento admiteo de marco yentoiedades perslemento wenida en una ccada con losbBrowsable]

ecución. Agre

ripciónenta lista decipan en el dque se pued

mite importarde elemento

er cerrado

entre sí.

nteractúan enuno del contse administr

dinamicas. Lelementos wiones.

ementos We

PArt y muestentrada permpersonales.el contrato d

ortamiento,e la edición yy zona a la qu

sonalizadas db. Es una proclase derivadatributos [Pe

egamos un C

elementos wdiseño inicialden añadirr un elementos que el usu

ntre sí: una crol del proveran a través d

as estáticasweb. Las cone

eb personaliz

tra alguna infmite a los usuAsimismo, ede comunica

���� )?��

como si ely la minimizaue pertenece

del componeopiedad púbda de WebPAersonalizable

CatalogZone

web que nol de la página

to webuario puede

conexión y ueedor y otrodel administ

se listanexiones dinám

zados de la c

formación souarios escribel elemento Wción

�������

"ción.e el

enteblicaArte] y

a

ndelrador

micas

clase

obreir elWeb

www.depurando.com 342

Page 343: ASP .NET Framework 3.5

El comelempedid

El vín

ElemCuancontr

publi{

/i

}

El comde W

Parasusce

[Pers

Indicacontrun eltabla

[Web

Indicaedito

EL sigfunci[Conninterf

[Conn

mponente coento Web qudos emitidos

nculo termina

mentoWebdo se crea urato de comu

ic interface

// Use this int Employee

mponente EmWebPart, que

que se mueseptible de ex

[Personal [WebBrow

public i {

getset

}

onalizable]

a que la proprol se utilizaemento webs a través de

bBrowsable]

a que la propor.

guiente pasoón que devunectionProvifaz IEmploye

nectionProvipublic I

{ retu

}

onsumidor eue implemens por dicho e

a creando un

proveedorn elementounicación pa

e IEmployeeI

property to eID { get; s

mployessWeimplementa

stre el EMploxploración y p

lizable(truewsable(true)nt Employee

{ return em{ empID v

piedad tieneen una zonab. De forma pe aspnetdb

piedad se pu

o conlleva la culeve una insider] Esta funeeInfo.

der("EmployEmployeeInf

urn this;

es el OrdersWnte el contrampleado en

na relación p

Web proveera el punto d

nfo

get the empet; }

ebPArt de ejea la interfaz d

oyeeID en elpersonalizac

e)]]ID

mpID; } value; }

e que conservde elementpredetermin

uede modific

creación destancia de lanción crea el

eeIDProvidero GetEmploye

WebPart, queato de comunun año dete

principal/det

edor, lo primde conexión.

ployeed ID c

emplo es undel contrato

editor de prción.

var su valor eo web o dennada, los dato

ar a través d

un punto declase actuall punto de co

r", "EmployeeeInfo()

e enlaza el IDnicación daderminado.

alles entre lo

ero que defi. Se define co

currently de

control ASP:

ropiedades, d

en el almacéntro de un coos de person

de la interfaz

conexión dey marcarla conexión para

eeIDProvider

D del empleao y muestra

os elemento

ne un desarromo una inte

efined in th

.NET person

debemos ma

én de datos sontrol compunalización flu

de usuario d

e proveedor.con el atributa los datos b

r")]

���� )?��

ado a cualquitodos los

s web implic

rollador es eerfaz:

he control

alizado deriv

arcarlo como

subyacente suesto envueluyen en una

del elemento

. Debe defintoasándose en

�������

)ier

cados.

el

vado

o

si elto ende las

o

ir la

n la

www.depurando.com 343

Page 344: ASP .NET Framework 3.5

TendProviel pu

ElemApartcreac

[Conn

Un puASP.Nmétoen la

Cód<Stat

ProviConsu

</Sta

Una cprimeProvideno

remos en cuderName o Cnto de conex

mento web cte de generación de un pu

nectionConsupublic v

{ if (

{

} else

{

} }

unto de coneNET en correodo marcadointerfaz esp

igo de maticConnectio

iderConnectiumerConnecti

aticConnecti

conexión estero actua coder. EL seguminado Emp

uenta que elConsumerNaxión es para

consumidoar su propia iunto de cone

umer("Employvoid GetEmpl

empInfo !

empID empFindEmploye

e

throw new N

exión consumespondecia co con el atribecificada.

arcadoons><asp:WebParonPointID "onPointID "

</asp:WebPaons>

tablecida entmo proveedndo adoptaployeeIDCon

nombre delame de la etun proveedo

rnterfaz de uexión de con

eeIDConsumeroyeeInfo(IEm

null)

pInfo.EmployeInfo();

otSupportedE

midor se creon un métoduto se acept

tConnectionEmployeeIDPrEmployeeIDCo

rtConnection

tre el elemenor a través del papel de csumer

punto de coiqueta <asp:or o para un

suario, el elesumidor par

r", "EmployemployeeInfo

yeeID;

Exception("N

a automáticado marcadota como retr

ID "Conn1"rovider" Cononsumer">

n>

nt Web con ude un puntoconsumidor

nexión debeWebPart�Coconsumidor

emento webra la interfaz

eeIDConsumerempInfo)

No connectio

amente en tcon el atribuollamada a i

ProviderIDnsumerID "or

un ID de empde conexióna través de u

e coincidir coonnection>, dr.

b sólo tiene uespecificada

r")]

on data foun

iempo de ejeuto [Connectnvocar cuan

"emp"rd"

p y un elemede nombreun punto de

���� )?��

on la propieddependiendo

un deber: laa.

nd.");

ecución detionConsumedo todo cam

ent Web ordEmployeeIDconexión

�������

*dado de si

er]. Elmbia

. ElD�

www.depurando.com 344

Page 345: ASP .NET Framework 3.5

AApliicac

Q

&

C

e

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

cio

���

Q����

����

Mnecon

��:

�:�

MCsn .N

*? �

���

��

CTS:WebNET

3

:bT

5

www.depurando.com 345

Page 346: ASP .NET Framework 3.5

Q�����:���� & C

���

C����

�� *? � Q

:���

Q�����:��

�� & C�����:���

www.depurando.com 346

Page 347: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

www.depurando.com 347

Page 348: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

www.depurando.com 348

Page 349: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

www.depurando.com 349

Page 350: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

www.depurando.com 350

Page 351: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

!

www.depurando.com 351

Page 352: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

"

www.depurando.com 352

Page 353: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

)

www.depurando.com 353

Page 354: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

*

www.depurando.com 354

Page 355: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

www.depurando.com 355

Page 356: ASP .NET Framework 3.5

����� *? � QQ�����:���� & C�����:���

www.depurando.com 356

Page 357: ASP .NET Framework 3.5

Tes

1. YoG

A. Ap

D. Ap

2. Wha

3. Ho

D. In

t

ou need to crGerman. Whi

pp LocalRes

B. App Loc

C. App Loc

pp LocalRes

hat must youapply.)

A. Define th

B. Define th

C. Override

D. Override

ow can you d

A. In Visual

B. In Visual

C. In Visual

n Visual Stud

reate a Web pich of the fol

sources/Page

calResources/

calResources/

sources/Page

u do to enabl

he Page.Cultu

he Page.UICu

the Page.Ini

the Page.Re

define a contr

l Studio, defi

Studio, defi

Studio, edit

dio, edit the (E

page that is allowing resou

e.aspx.resx.d

/Page.aspx.r

/Page.aspx.d

e.aspx.en.res

le users to ch

ure property

ulture proper

itializeCultur

eadStringRes

rol property

ine the DataV

ne the DataS

the Text pro

(Expressions)

���

available in burce files sho

de

resx

de.resx

sx

hoose their o

.

rty.

re method.

source metho

using a glob

ValueField p

SourceID pro

operty.

) property.

�� *? � Q

both the defaould you cre

wn language

od.

bal resource a

property.

operty.

Q�����:��

ault languageate? (Choose

e preferences

at design tim

�� & C��

e of English ae all that app

s? (Choose a

me?

���:���

and in ply.)

all that

www.depurando.com 357

Page 358: ASP .NET Framework 3.5

4. Yothou add a globhat global re

A. Resource

B. Resources

C. Resources

D. Resource

bal resource source progr

es.Resource.L

s.Resource(“

s(“Login”)

es.Login

with the namrammatically

Login

“Login”)

���

me Login byy?

�� *? � Q

y using Visua

Q�����:��

al Studio. Ho

�� & C��

ow can you a

���:���

�access

www.depurando.com 358

Page 359: ASP .NET Framework 3.5

AApliicac

��

'

&

'

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

cio

���

���

����

Mnecon

���

�:�

MCsn .N

���

��

CTS:WebNET

3

:bT

5

www.depurando.com 359

Page 360: ASP .NET Framework 3.5

'�

El papmedi

��

TipoASP.NsoliciEstosdirect

<add

AutEs elcrede

Una e

<aut

��

AutSe mformenvío

Una vuna cservidauten

����

pel fundameante los sigu

Autentica

Autorizacsolicitado

os de ArcNET proporctudes de cies tipos de arctorio de con

path "*.asc

tenticacióproceso de aenciales, o al

estrada típic

thenticati

None: No

Windowsdefecto

Passport.programasitios web

Forms: Lacredencia

tenticacióuestra un foulario no neco de formula

vez que el clicookie, al cliedor, en cadanticado. Si se

�����

ental de la seuientes méto

ación: Verific

ción: Determo

chivos reiona automártos tipos dechivos se idefiguración de

cx" verb "*"

ónasegurar quelgún tipo de

a para activa

ion mode="

o se realiza a

s. Se usará au

. Servicios deadores de sitb

as solicitudesales del usua

ón basadrmulario decesariamentrio, al código

iente está auente. A contipetición pos

e hace una so

� & '

eguridad es rodos:

car que el cli

minar si el clie

estringidoáticamente ue archivo (contifican en eel entorno y

type "Syste

e el cliente eidentificació

ar la autentic

"Windows"

utenticación

utenticación

e autenticacitios web, pro

s sin autenticario y las env

da en forminicio de seste autentica ao de la aplica

utenticado, einuación, sesterior, lo quolicitud sin u

��

'����

restringir el a

ente es realm

ente tiene pe

osun nivel básicmo los archiel archivo mase asignan a

em.Web.HttpF

s quien diceón.

cación sería:

/>

n. Permite el

Windows, ju

ión centralizaoporcionand

car se redirigvía a la aplica

mulariossión al usuarial usuario, pación que rea

el servidor depasa esta coue indica al suna cookie de

��� � '�

�:��

acceso a part

mente quien

ermiso para

co de seguridvos de confiachine.configa la clase Htt

ForbiddenHan

ser. La aute

acceso anón

unto con IIS.

ado que ofreo un solo ini

gen a una páación para se

io para recogero envía lasaliza la auten

evuelve un pookie de auteervidor quee autenticac

�������

tes del sitio W

n dice que es

acceder al re

dad bloqueaguración y dg del servidotpForbiddenH

ndler" valid

nticación se

nimo

Es el compo

ece Microsofcio de sesión

ágina web quer autenticad

ger las credes credencialenticación.

pequeño fragenticación, deste clienteión válida, se

� & '��

Web. Esto se

ecurso que h

ndo lasde código fuer web en elHandler

date "True"/

realiza usan

ortamiento p

ft a losn para varios

ue reúne lasdos.

enciales. Estees, mediante

gmento de del cliente alha sidoe redirigirá

��:���

e hace

ha

ente).

>

do

por

s

ee un

atos,

www.depurando.com 360

Page 361: ASP .NET Framework 3.5

automcrede

ConEl tipconfig

La etivalida

<auth

path

AtribName

login

Prote

Time

Path

RegUna vautor

El astutilice

El sigIncluycualqde se

máticamenteenciales y se

figuracióo de seguridguración: <a

iqueta <authar el usuario

hentication <forms n"/"/> </authenti

butoe

Url

ection

out

las de autvez establecirización.

terisco (*) esen la aplicac

no de interroyendo esta rquier usuarioeguridad.

e al usuario aautenticará

n de webdad utilizadoauthenticatio

hentication>.

mode "Formsname "Prueba

cation>

torizaciónida la autent

s un carácterión, incluso

ogación (?) eregla en el aro anónimo. T

al formularion.

.configen ASP.NET

on>, <author

define el mo

">" loginUrl "

nticación de fo

r comodín quaquellos no

es un carácterchivo de weTodo usuario

��

o de inicio de

se define enization>, <id

odo de auten

"login.aspx"

DescEl noautenaplicadebela apLa páredircookdefecTipoparaNumcookque svida30La ruaplicapredelos exy minrutajunto

ormularios, t

ue permite eautenticado

er comodín qeb.config inddebe autent

��� � '�

e sesión, en e

n web.configentity>.

ntificación de

" protection

ripciónmbre de la cnticación. Siaciones sobrería darse a clicación un nágina de iniciige al usuariie de autentcto es defaude encriptacel cookie deero de minuie cuando rese haya pasade la cookie.

ta de los cooación. Se reeterminadoxploradoresnúsculas y unpodría impeo a la solicitu

tendremos q

xplícitaments.

que incluye ticamos que sticarse y cad

�������

el que se rec

, a través de

e ASP.NET ut

n "All" time

cookie HTTPse ejecutanre el mismo scada cookie dnombre únicoio de sesión,o si no se enicación válidlt.aspxción y validace seguridad.to antes deecibe la soliciado la mitad. El valor pre

okies emitidocomienda e(\), dado qudistinguen en error en ladir que se end

que establece

te que todos

odos los ususe deniega eda solicitud re

� & '��

cogerán las

e tres seccion

tilizado para

eout "30"

utilizada parvariasservidor webde seguridadodonde se

ncuentra unada. EL valor p

ción utilizada

que expire laitud, siemprdel tiempo dedeterminad

os por lavalore la mayoríaentre mayúscescritura denviase la coo

er las reglas

s los usuarios

uarios anónimel acceso aequiere la co

��:���

nes de

ra la

b,d de

apor

a

aedeo es

deculase laokie

de

s

mos.

ookie

www.depurando.com 361

Page 362: ASP .NET Framework 3.5

<auth

</aut

Cuanheredarchivbúsqsolici

<auth

</aut

Cambusuar

<auth

</aut

Recoencono an

ConUn didirectSimpañadasegu

<con

<con

ConPode

<loca<

< </l

horization> <deny user

thorization>

do se evalúadados de cuavo machine.ueda. Así, entud actual y

horization> <allow use <deny user

thorization>

biando el ordrio anónimo

horization> <deny user <allow use

thorization>

rdar que si sntrará con lanónimos.

trol de aciseño comúntorio separalemente dejimos un archurado. Este a

nfiguratio<system

<

<

<system

nfiguratio

trol de acmos restring

ation path "<system.web> <authoriza <deny us </authoriz

</system.weblocation>

rs "?"/>>

an las reglas,alquier archiconfig. Tan pn el caso siguno se evalua

ers "*"/>rs "?"/>>

den de estasy se permiti

rs "?"/>ers "*"/>>

e omite la sea regla <allow

cceso a dirn de una aplido. Con archamos las opchivo web.conarchivo simp

on>m.web>authoriza <den/authoriz

m.web>

on>

cceso a argir archivos e

segura.aspx>ation>ers "?"/>ation>

b>

ASP.NET recvo .config depronto comouiente, deterará la segund

dos líneas, srá el acceso

egunda líneaw users=”*”>

rectorioscación es cohivos de confciones <authnfig que defilemente deb

ation>ny users="ation>

rchivos esespecíficos a

">

��

corre la listael directorioo se encuentrminará queda línea.

sin embargo,al resto de l

a, ASP.NET bu> en el archiv

locar los arcfiguración AShorization> pne opcionesbe denegar e

?"/>

specíficosñadiendo et

��� � '�

de arriba abpadre, termra una reglase aplica la r

, se denegaros usuarios

uscará el direvo machine.c

hivos que reSP.NET estapredeterminamás restrict

el acceso a lo

iquetas <loc

�������

bajo y contininando con laplicable, seregla <allow

á el acceso a

ectorio padrconfig para t

equieren auteaproximacióadas en el ditivas en el dios usuarios a

ation> al arc

� & '��

úa con los valos valores de detiene lausers=”*”> a

a cualquier

e y por últimtodos los usu

enticación enón es fácil.rectorio padrectorionónimos

chivo web.co

��:���

aloresel

a la

mo seuarios

n un

dre y

onfig.

www.depurando.com 362

Page 363: ASP .NET Framework 3.5

ConSe puusuar

<loca<

< </l

La pUna vde iny dec

En elque p

MétoForm

Form

Auth

Redir

SignO

SetAu

GetR

GetA

trol de acueden identifrio separado

ation path "<system.web> <authoriza <deny us <deny us <deny us </authoriz

</system.weblocation>

página devez definidoicio de sesiócide si se deb

espacio de nproporciona

odomsCookieNam

msCookiePath

enticate()

rectFromLog

Out()

uthCookie()

edirectUrl()

AuthCookie()

cceso paraficar específior por comas

segura.aspx>ation>ers "pepe,jers "juan"/ers "?"/>ation>

b>

inicio deel modo den real, que ebe autenticar

nombres Sysmétodos co

me

h

ginPage()

a usuarioicamente un.

">

ose"/>>

sesiónautenticacióes una páginar el usuario.

stem.Web.Sempartidos p

��

s específin nombre de

ón y las reglaa .aspx norm

ecurity dispoara administ

DescPropnommediPropdirecautenCompcontrpuedIniciaASP.Nrespuque sTermaplicaencrIniciaASP.Nformel mérediriniciaPropiniciaSetAusuacódigusuapáginCrea

��� � '�

icosusuario o un

s de autorizamal que solici

nemos de latrar el proces

ripcióniedad de sólbre de la cooiante formuiedad de sólctorio definidnticación meprueba un noraseña contrde introducira la sesión deNET creandouesta y redirsolicitó iniciamina la sesiónación ASP.NEptada existea la sesión deNET creandoulario de autétodo Redireige al usuarialmenteorciona la Ualmente. Se puthCookie()rio en una apgo la decisiónrio a la páginna predetermla cookie de

�������

na lista de no

ación, se debta la informa

clase Formsso.

o lectura queokie de autenarioso lectura quedo para el coediante formombre de usra una lista den el archivel usuario eno la cookie, aigiendo al usalmente.n del usuarioET eliminandenteel usuario eno y adjuntandtenticación.ectFromLogino a la página

RL de la págipodría utilizapara iniciarplicación y ton de si se dena solicitadaminada más ae autenticació

� & '��

ombres de

be crear la páación del usu

sAuthenticat

e proporcionnticación

e proporcionookie de lamulariossuario y unade cuentas quo web.confign una aplicacdjuntándolasuario a la pá

o en unado la cookie

n una aplicacdo la cookieAl contrarionPage, noa que solicitó

ina solicitadaar conla sesión deomar medianbe redirigir ao utilizar unadecuadaón pero no la

��:���

áginauario

tion

na el

na el

ue segióna laágina

ióndelque

ó

a

ntealna

a

www.depurando.com 363

Page 364: ASP .NET Framework 3.5

Hash

prote{

}

ListPara<form

<auth

</aut

Protprotec {

algori }

RoleEl obj

PropiNameIsAut

Auth

IsInR

PasswordFro

ected void B{

if (TxtP {

Form }

}

a de usuaañadir una cms> y añadir

hentication <forms nam <credent <user <user </creden </forms>

thentication

tección dected void Butt

string algoif (SHA1.Ch

{ algorit } if (MD5.Che

{ algorit } TxtEncriptaitmo);

es Personjeto User tie

iedadethenticated

enticationTy

ole()

omStoringIn

Button1 Clic

Pass.Text.To

msAuthentica

ario en arccuenta de ustanta subeti

mode "Formsme "Prueba"tials passwoname "pepe"name "juan"

ntials>

n>

e las contton1 Click(ob

oritmo="SHA1"hecked)

tmo = "SHA1";

ecked)

tmo = "MD5";

ado.Text = Fo

nalizadosene las siguie

ype

nConfigFile()

k(object sen

String()

tion.Redirec

chivo de cuario, se inseiquetas <use

">loginUrl "lordFormat "Clpassword "ppassword "j

traseñas dject sender,

;

rmsAuthentica

entes propie

��

adjunpersoañadEncralgorpropuna cuna b

nder, EventA

"secret")

ctFromLoginP

configuraerta una suber> como sea

ogin.aspx" plear">pepe"/>juan"/>

de usuarioEventArgs e)

ation.HashPass

edades

DescNomTruecompcódigpáginusuapropUna cautenPerm

��� � '�

nta a la respuonalización airla manualmpta una caderitmo especiforciona un mcontraseña ebase de dato

Args e)

Page(TxtNomb

aciónbetiqueta <cran necesarias

protection "

o median

swordForStorin

ripciónbre del usuasi el usuarioprobar esta pgo si se necena de inicio drio no ha iniciedades (comcadena quenticación utimite evaluar s

�������

uesta. Se pueadicional demente a la reena de textoficado. Este vmétodo seguencriptada enos

bre.Text, fa

redentials> as a la etiquet

"All" timeou

nte encrip

ngInConfigFile

ario que ha ino se ha autenpropiedad ysita redirigirde sesión. Obciado la sesiómo Name) esrepresenta elizada (Formsi un usuario

� & '��

ede realizarla cookie yespuestao utilizando evaloruro de almacn un archivo

alse);

a la etiquetata <credenti

ut "30" path

tación

e(TxtTexto.Te

niciado la sesnticado. Se pdecidir medel usuario abserve que són, el resto dstará vacío.el tipo dems,Basic)o es miembro

��:���

�una

el

enaro

als>

"/">

xt,

siónuedeiantelai elde

o de

www.depurando.com 364

Page 365: ASP .NET Framework 3.5

Desguna c

AutCon lde peinicio

<allow

Aut

Para1

2

3

De focontrcasillausuar

Paradel cldeshaLogin

TengaLoginconfigsolici

if (Mem{// Use

// In t// det// is cr

Forms

}

raciadamentcuenta de un

tenticacióa autenticacermitirles el ao de sesión.

w users=”Do

tenticació

a crear una1. Inicie Visu

2. Utilice elllamado L

3. Agregue

orma predeteraseña, y la ca de verificario la almace

impedir queliente, de forabilitar estan como false

a en cuentan, éste validagurado, creatada origina

mbership.Validate

er has supplied va

he following metermines whetherreated.

sAuthentication.R

te, con la autn usuario con

ónWindoción Windowacceso. Exist

ominio\nomb

ón con Ba

aplicaciónual Studio .N

Explorador dLogin.aspx.

un control Lo

erminada, escasilla de verción, se creaena en el disc

e un usuario mrma generalcaracterístic.

que cuandoa automáticaa un vale de almente. Ejec

eUser(username,

alid credentials

thod call, the secor a persistent aut

RedirectFromLogrememberMeIs

tenticación dn un rol med

owsws se confía eten varias op

bre”/>

ase de Da

Web con pNET y cree un

de solucione

ogin a Login.

ste control mrificación Reca una cookieco duro.

malintencionno debe creca, establezca

el usuario hmente el usuautenticaciócuta código s

, password))

ond Boolean parathentication cook

inPage(usernameChecked);

��

un gr

de formularioiante el arch

en que IIS fuepciones difer

atos Sql

ágina de inn sitio Web n

es para agreg

.aspx.

muestra los ccordármelode autentica

nado robe alar cookies da la propieda

ace clic en lauario llamanón de formulasimilar al del

ameterkie

e,

��� � '�

rupo.

os no podemhivo web.con

erza que lo uentes para t

nicio de sesinuevo de ASP

gar al sitio un

ampos de nola próxima vación consta

guna cookiee autenticacad DisplayRe

a opción de indo al proveearios y rediriejemplo sigu

�������

mos asociar dnfig.

usuarios iniciransmitir la i

iónP.NET .

n formulario

ombre de usvez. Si el usunte y el expl

e de autenticción constantememberMe

nicio de sesiedor de pertige al usuariouiente.

� & '��

declarativam

en la sesióninformación

Web nuevo

suario yario activa eorador del

ación del eqtes. Parae del control

ión en el conenencia al gro a la página

��:���

!

ente

antesdel

sta

uipo

ntrolrupo

www.depurando.com 365

Page 366: ASP .NET Framework 3.5

4

PasoEn esform

Para

Si est<formconfigpredeMach

<form

d

re

c

e

<cre

</for

<autho<den

4. Agreguenuevos p

o 2. Configuste paso se coularios.

configurar la

Utilice el

Localice e

Agregue<authentsiguiente

<authent

<forms

name

timeo

</authen

tablece el atrms>, para lagurar sólo loeterminada dhine.config.c

ms name=".A

efaultUrl="d

equireSSL="f

ookieless="U

nableCrossA

edentials pas

rms>

Agreguearchivo Wsu sitio W

orization>y users="?" />

un control Cuedan regist

ración de laonfigura la a

a aplicación

Explorador d

el elemento

el siguiente etication> y. ae manera.

tication mod

="SqlAuthCo

out="10" />

ntication>

ributomodeconfiguracióos atributos qde la autentiomments.

ASPXAUTH" l

default.aspx"

false" sliding

UseDevicePr

AppRedirects

sswordForma

el siguiente eWeb.config. EWeb.

reateUserWtrarse en el s

a aplicaciónaplicación AS

Web para la

de solucione

<authentica

elemento <fa continuació

e="Forms">

ookie"

e del elementón de <formsque necesiteicación de fo

oginUrl="log

" protection=

gExpiration="

ofile" domai

s="false">

at="SHA1" />

elemento <aEsto permite

��

Wizard debajositio y crear c

nWeb paraSP.NET para q

a autenticac

es para agreg

ation> y cam

forms> comoón, establezc

to <authentis> se utilizane sobrescribirormularios ta

gin.aspx"

="All" timeou

"true"

n="

>

authorizatione que todos l

��� � '�

o del controlcuentas nuev

a la autentique utilice la

ión de formu

gar un archiv

bie el atribut

o secundarioca los atribut

ication>, perlos valores pr. Aquí se mual como los d

ut="30" path

n> en el elemos usuarios a

�������

Login para qvas.

cación de fa autenticaci

ularios

vo Web.confi

tomode a "F

del elementtos name y t

ro omite el epredeterminuestra la condefine el arch

h="/"

mento <authautenticados

� & '��

que los usua

formulariosón de

ig al proyect

Forms".

toimeout de la

elementonados. Debenfiguraciónhivo

hentication>s tengan acc

��:���

"rios

s

o.

a

deleso a

www.depurando.com 366

Page 367: ASP .NET Framework 3.5

<allow</authLa coEl sigdenerediriel nodel ar

PasoEn esrealiz

Crear

El prouna bescribse pumenú

Para

Utilicsistem

aspne

�S esp

�E esp

w users="*" />horization>nfiguraciónno "?" indicagar a los usuigen a la págmbre de la prchivo Mach

o 3. Configuste paso se cozación de las

Crear una

Conceder

Configura

r una base d

oveedor de pbase de datobiendo Aspnuede utilizarú Sitio Web d

crear la base

ce Aspnet_rema de Visual

et_regsql �S

pecifica el se

pecifica que

anterior sóloa usuarios nouarios no autgina de iniciopágina de inicine.config.co

ración de Aonfigura el pacciones sig

a base de da

r acceso a la

ar los parám

e datos del a

pertenenciaos de SQL Seret_regsql.exen modo Aside Visual Stu

e de datos d

egsql.exe parl Studio 2005

(local) �E �A

ervidor, que e

se utilice la a

o permite teno autenticadtenticados, too de sesión. Ecio de sesiónomments es

ASP.NET paproveedor deguientes:

atos del alma

a base de dat

metros de pe

almacén de

a grupo de Srver. El almacxe en la líneaistente o la hudio .NET 200

del almacén d

ra crear la ba5, ejecute el

m

es (local) en

autenticació

��

ner acceso ados, mientrasodas las solicEl atributo lon. La configuLogin.aspx.

ara la pertene pertenenci

acén de usua

tos a la cuen

rtenencia a g

usuario

SQL Server alcén de usuara de comandherramienta05.

de usuario

ase de datoscomando sig

este ejempl

ón de Window

��� � '�

la aplicacións que "*" indcitudes queoginUrl del elración prede

nenciaa a grupo de

ario.

nta de la apli

grupo de AS

lmacena inforio de SQL Seos. Como altASP.NET We

de pertenenguiente.

o.

ws para cone

�������

n a los usuardica todos losrealizan estolemento <foeterminada d

e SQL Server

icación Web

SP.NET.

ormación deerver se pueternativa, Aseb Site Confi

ncia a grupo.

ectarse a SQ

� & '��

rios autenticas usuarios. Aos usuarios srms> determde este atrib

mediante la

.

los usuariosde crearspnet_regsqlguration del

En el símbo

QL Server.

��:���

)ados.Aleminauto

en

.exe

olo del

www.depurando.com 367

Page 368: ASP .NET Framework 3.5

�A mautencarac

Para

Resu

Si la b

Si no

Conc

La cuejecuWindde re

Para

1

2

3

Estossiguie

�� Cre

sp_gr

�� Gra

USE a

especifica qnticación simcterística de

ver una lista

ltados esper

base de dato

Aspnetdb

Aspnetdb

existen, las t

aspnet_A

aspnet_M

aspnet_S

aspnet_U

eder acceso

enta de procuta la aplicacdows Server 2ed para ejecu

conceder ac

1. Cree un i

2. Concedade base d

3. Agregue

s pasos se puente secuenc

eate a SQL Se

rantlogin 'NT

ant the login

aspnetdb

ue se agregumple con un apertenencia

completa d

rados

os Aspnetdb

b.mdf

b_log.LDF

tablas siguie

Applications

Membership

SchemaVersio

Users

a la base de

ceso de la apión en Servic2003, de forutar las aplica

cceso a la ba

nicio de sesi

el acceso dede datos.

el usuario a

ueden realizacia de coman

erver login fo

T AUTHORITY

access to th

ue sólo la caralmacén de ua un grupo

e los comand

no existe, se

entes se crea

ons

e datos a la c

plicación Wecios de Microma predeteraciones Web

se de datos

ón de SQL Se

e inicio de se

la función de

ar con el Admndos en el An

or the Netwo

Y\Network S

he membersh

��

racterística dusuario de SQ

dos, ejecute

e crean dos a

n en la base

cuenta de la

b requiere eosoft Internerminada se ub.

erver para N

sión a la bas

e base de da

ministrador cnalizador de

ork Service a

ervice'

hip database

��� � '�

de pertenencQL Server, só

Aspnet_reg

archivos de b

de datos As

aplicación W

el acceso a laet Informatioutiliza la cuen

T AUTHORIT

se de datos A

tos aspnet_

corporativo oconsultas SQ

ccount

e

�������

cia a grupo. Pólo se requie

gsql /?.

base de dato

pnetdb:

Web

base de daton Server (IISnta NT AUTH

TY\Servicio d

Aspnetdb cre

Membership

o se puede eQL

� & '��

Para realizarere la

s:

tos AspnetdbS) 6.0 enHORITY\Servi

e red.

eando un usu

p_FullAccess

jecutar la

��:���

*r una

b. Si

icio

uario

s.

www.depurando.com 368

Page 369: ASP .NET Framework 3.5

GO

sp_gr

�� Add

USE a

GO

sp_ad

Confi

En es

Para

1

<

<

En esatribuanter

2

<

rantdbaccess

d user to dat

aspnetdb

ddrolememb

igurar los pa

ste paso se e

configurar la

1. En el archapunte a

connectionStri

<add name="M

connectionS

/connectionStr

ste caso, el nuto connectiriormente.

2. Agreguecomo seimpide qu

membership de

<providers>

<clear/>

<add name="M

connection

application

type="Syste

V

</providers>

s 'NT AUTHO

tabase role

ber 'aspnet_M

arámetros de

specifica la c

a configurac

hivo Web.cola base de d

ngs>

MyLocalSQLServ

String="Initial C

rings>

ombre que uionString co

un elementomuestra en eue se cargue

efaultProvider=

MySqlMember

nStringName="M

nName="MyApp

em.Web.Securi

Version=2.0.0.0

ORITY\Netwo

Membership

e pertenenci

configuració

ción de perte

nfig, agreguedatos de pert

ver"

atalog=aspnetd

utilizará paramo la base d

o <membersel ejemplo sie el proveedo

="MySqlMembe

shipProvider"

MyLocalSQLSer

pName"

ity.SqlMembers

, Culture=neutr

��

ork Service',

p_FullAccess

ia a grupo de

n del sitio W

enencia a gru

e una cadenatenencia a gr

db;data source=

a esta conexde datos de p

hip> despuéiguiente. Obor predeterm

ershipProvider"

rver"

shipProvider, S

ral, PublicKeyTo

��� � '�

'Network Se

', 'Network S

e ASP.NET

Web.

upo

a de conexiórupo.

=localhost;Integ

ión es MyLocpertenencia

és del elemenserve el usominado y nun

" >

ystem.Web,

oken=b03f5f7f1

�������

rvice'

Service'

ón similar a la

grated Security

calSQLServeal grupo que

nto <authoridel elementnca se utilice

11d50a3a" />

� & '��

a siguiente q

y=SSPI;" />

r. Establezcae creó

ization> tal yto <clear/>.e.

��:���

que

a el

yEsto

www.depurando.com 369

Page 370: ASP .NET Framework 3.5

<

Asegú("MyEstabaplicade pe

Nota

DebedefinpropiexpoproveMemdefau

PasoEn es

Adici

AgregEsta pcódigpara

protec{Respo

FormForm

RespoRespoRespo

RespoRespoRespoRespoRespo}

Crea1

2

/membership>

úrese de queLocalSQLSerblezca tambiéación. Los deertenencia a

e definir el atición del proiedad que senen una proeedores distimbershipProvultProvider.

o 4. Comproste paso se p

ón de un co

gue el códigopágina sólo dgo muestra lalos usuarios

cted void Page_

onse.Write("He

msIdentity id = (FmsAuthenticatio

onse.Write("<ponse.Write("<bonse.Write("<b

ticket.Expironse.Write("<bonse.Write("<bonse.Write("<bonse.Write("<bonse.Write("<b

ación de un. Vaya a la

La configu

obtener ac

2. Cree un us

proveedor

� L

>

e establece erver") que esén el atributetalles de usugrupo.

tributo defauoveedor. Lose utiliza de fopiedadMemintos de los pvider de los c

obación de lprueba la aut

ntrolador de

o siguiente adebe mostraa informacióautenticado

_Load(object se

ello, " + Server.

FormsIdentity)UonTicket ticket =

p/>TicketNamebr/>Cookie Pathbr/>Ticket Expirration.ToString(br/>Expired: " +br/>Persistent:br/>IssueDate: "br/>UserData: "br/>Version: " +

usuario nupágina Defau

uración anterio

cceso a ningu

suario nuevo

r de pertenenc

La contraseña

el atributo copecificó anteo applicatiouario se orga

ultProvider dcontroles Lo

orma predetembershipProvpredetermincontroles Log

la autenticatenticación d

e eventos Pa

al controladoarse a los usuón obtenida dos.

ender, EventArg

HtmlEncode(Us

User.Identity;= id.Ticket;

: " + ticket.Namh: " + ticket.Cooration: " +());+ ticket.Expired" + ticket.IsPers" + ticket.IssueD" + ticket.UserD+ ticket.Version

uevolt.aspx de la a

or del element

na de las pág

con una contr

cia a grupo de

debe tener un

��

onnectionStreriormente enName comanizan por no

del elementoogin utilizanerminada. Sivider que penados. Aunqugin, es acons

ación de fode formulario

age_Load

or de eventosuarios autentdel vale de a

gs e)

ser.Identity.Na

me );okiePath);

.ToString());sistent.ToStringDate.ToString()Data);.ToString());

aplicación.

to <authoriz

inas de la apl

raseña segura

e SQL para la

na longitud de

��� � '�

ringName coen la seccióno un valor úombre de ap

o <memberseste atributoin embargo,ermite utilizaue es posiblesejable defin

rmulariosos.

s Page_Loadticados. Parautenticación

me));

g()););

zation> impid

icación y le re

a. Las reglas p

contraseña so

e al menos sie

�������

omo el mismn connectionnico que repplicación en l

hip> para quo para deterestos controar con los cone definir la prnir el atributo

d de la páginaa demostrarn de formula

de a los usuar

edirige a la pá

predeterminad

on las siguient

ete caracteres

� & '��

mo nombrenStrings.presente lala base de da

ue apunte aminar laoles tambiénntrolesropiedado

a Default.aspque es así, erios que se e

ios no autenti

gina Login.as

das que aplica

tes:

s.

��:���

atos

la

px.elemite

icados

px.

a el

www.depurando.com 370

Page 371: ASP .NET Framework 3.5

3

CreaAhora

Arrasdel coLoginel tex

Adembasánpuedconte

A cocuandal usu

MemLa clausuarelectobjetWeb.práct

La cla

� L

3. Inicie sesi

redirigir a

de autenti

ar la Pága podemos a

stramos un Lontrol LoginSnText y Logouxto del estad

más usamos undonos en sien ver usandenido de la p

ntinuación, edo se muestuario por su

mbershipase Memberrio y adminisrónico. La clato de crear u. El control Ltico para vali

aseMember

Crear nue

Almacenadireccionun almac

Autenticaa los usuacompleto

La contraseña

ón con su cue

la página Def

cación de form

gina de Biañadir la pág

LoginStatus aStatus, por eutText. Tambdo de sesión

un LoginViewi el usuario hdo la etiquetplantilla que

establecemore esta plantnombre.

pship se utilizstrar la confiase Membern sistema coogin encapsudar a los usu

rship proporc

evos usuario

ar la informanes de correocén de datos

ar a los usuaarios o puedo que requie

debe contene

enta de usuari

fault.aspx que

mularios.

ienvenidgina que dará

a la página Biejemplo, parabién podemoiniciada

w. Aquí podeha iniciado lata inteligentese mostrará

os LoggedInTtilla, podemo

a en aplicaciguración delrship se puedompleto paraula la clase Muarios.

ciona los me

os.

ación de susco electrónicoalternativo.

rios que visite utilizar el cre poco o nin

��

er al menos un

io nueva. Si to

e solicitó inicia

daá la Bienveni

ienvenido.asa cambiar elos desplegar

emos introdusesión o noe: Anonymoudependerá d

Template. Coos utilizar el

iones ASP.NEl usuario comde utilizar soa autenticarMembership

edios para:

cripción (nomo y datos com

tan su sitio. Mcontrol Loginngún código

��� � '�

n carácter alfa

odo se realiza

almente y deb

da al usuario

spx. Podemotexto del vínr la ventana d

ucir texto y c. Este controusTemplate yde si el usua

omo el usuarcontrol Login

ET para validmo contraseñola o con la cla los usuariopara propor

mbres de usumpatibles) en

Mediante prn para crear.

�������

anumérico.

correctamen

berían aparece

o.

os establecernculo con lasde vista para

controles queol tiene dos vy LoggedInTerio ha iniciad

io habrá inicnName para

dar las credenñas y direcciolase FormsAos de una aprcionar un m

uario, contran Microsoft S

rogramaciónun sistema d

� & '��

te, se le debe

er detalles del

las propiedas propiedadea ver el vincu

e se mostrarvistas, que seemplate. Eldo la sesión o

ciado la sesiódar la bienv

nciales delones de corruthenticatiolicación o sit

mecanismo

aseñas,SQL Server o

puede autede autenticac

��:���

�ería

vale

adesesulo y

ráne

o no.

ónvenida

reon contio

en

nticarción

www.depurando.com 371

Page 372: ASP .NET Framework 3.5

p

{

N

a

}

Administrestablecque requpeticioneque la ha

ublic void L

if (Membe

FormsAu

NotPublicChe

else

Msg.Tex

gain.";

Nombre

CreateUs

DeleteUs

Equals

FindUser

FindUser

Generate

GetAllUs

GetHashC

GetNumb

rar contrasecimiento, etciera una prees de restableyan olvidado

Login OnClic

rship.Valida

uthenticatio

ckBox.Checke

t "Login f

ser

ser

rsByEmail

rsByName

ePassword

ers

Code

berOfUsersO

ñas que incluc. Opcionalmgunta y unaecimiento oo.

ck(object se

ateUser(User

on.RedirectF

ed);

failed. Plea

Desc

Sobredatos

Sobre

Sobreson i

Sobresuscrcontique d

Sobresuscrnom

Geneespe

Sobreusua

Actúahered

Online Obtie

��

uyen su creaente puederespuesta drecuperació

ender, Event

rnameTextbox

FromLoginPag

ase check yo

ripción

ecargado. Ags.

ecargado. El

ecargado. Deguales. (Se h

ecargado. Oritos donde liene la direccdebe coincid

ecargado. Oritos donde ebre de usuar

era una contcificada.

ecargado. Orios en la ba

a como funcda de Object

ene el núme

��� � '�

ación, cambioconfigurar lae contraseñan de la contr

tArgs args)

x.Text, Pass

ge(UsernameT

our user nam

grega un nue

imina a un u

etermina si dhereda de Ob

btiene una ca dirección dción de corredir.

btiene una cel nombre derio especifica

raseña aleat

btiene una cse de datos.

ción hash part).

ro de usuari

�������

o, recuperaca suscripcióna para autenraseña para

wordTextbox

extbox.Text

me and passwo

evo usuario a

usuario de la

dos instanciabject).

colección dede correo eleeo electrónic

colección dee usuario coado que deb

toria de la lon

colección de

ra un tipo co

os que actua

� & '��

ción yn a ASP.NET pnticar lasaquellos usu

.Text))

,

ord and try

al origen de

base de dat

as de Object

usuariosectrónicoco especifica

usuariosntiene ele coincidir.

ngitud

todos los

oncreto. (Se

almente tien

��:���

�para

uarios

os.

ada

en

www.depurando.com 372

Page 373: ASP .NET Framework 3.5

RoleAdmiaplica

La adaplicausuaraplicanombtenerprivil

Los udiscuPodríusuar

GetType

GetUser

GetUserN

Referenc

ToString

UpdateU

ValidateU

esinistra la susación ASP.NE

dministraciónación basándrios a las funación Web bbres de usuar funciones cegios diferen

suarios puedsión, algunoía definir cadrio con amba

NameByEma

ceEquals

User

User

cripción delET. Esta clase

n de funcionedose en grupnciones permasándose enario, o ademácomo Adminntes a cada f

den pertenecos usuarios pda función deas funciones

acces

Obtiede O

Sobredatos

ail Obtieelectelect

Detela m

DevuObje

Actuacorre

Comprop

usuario a fue no se pued

es de ASP.NEpos de usuarmite controlan funciones,ás de ellos. Pistradores, Efunción.

cer a más deodrían tenerel sitio de fotendría los d

��

so a una apli

ene el objetobject).

ecargado. Os para el usu

ene un nombtrónico coinctrónico espec

rmina si lassma instanc

uelve una claect actual. (Se

aliza la baseespondiente

prueba queorcionados s

nciones parade heredar.

ET le permiteios, que se dr el acceso aen lugar de ePor ejemplo,Empleados, D

e una funciónr a la vez lasrma que tendos conjunto

��� � '�

icación.

o Type de la

btiene la infouario suscrito

bre de usuarcide con la dicificada.

instancias deia. (Se hered

se String quee hereda de

de datos coal usuario es

el nombre dson válidos.

a el control d

e administradenominan fua partes o carespecificar uuna aplicaciDirectores, et

n. Por ejempfunciones Mga privilegioos de privileg

�������

instancia act

ormación deo.

rio cuya direcirección de c

e Object espda de Object)

e representaObject).

n la informaspecificado.

e usuario y l

de autorizaci

r la autorizacunciones. Laracterísticasuna autorizacón de empletc., donde se

plo, si su sitioMiembros y Mos diferentes,gios.

� & '��

tual. (Se her

el origen de

cción de corrcorreo

ecificadas so).

a la clase

ción

a contraseña

ón en una

ción para suasignación ddiferentes dción basada eeados podríae especifican

o es un foro dModeradores, por lo que

��:���

eda

reo

on

a

dede suenan

des.un

www.depurando.com 373

Page 374: ASP .NET Framework 3.5

PararoleM

habilitar la aManager de l

Nombre

AddUsers

AddUsers

AddUserT

AddUserT

CreateRo

DeleteCo

DeleteRo

Equals

FindUser

GetAllRol

GetHashC

GetRoles

GetType

GetUsers

IsUserInR

Referenc

RemoveU

RemoveU

RemoveU

RemoveU

RoleExist

ToString

administracióa sección sy

sToRole

sToRoles

ToRole

ToRoles

ole

ookie

ole

sInRole

les

Code

sForUser

sInRole

Role

eEquals

UserFromRole

UserFromRole

UsersFromRo

UsersFromRo

ts

ón de funciostem.web de

Descrip

Agrega

Agregaespecific

Agrega

Agrega

Agrega

Eliminafunción

Sobreca

Sobrecaiguales.

Obtieneespecific

Obtiene

Actúa code Obje

Sobrecaincluido

ObtieneObject).

Obtieneespecific

Sobrecaincluido

Determimisma

e Quita el

es Quita el

le Quita lo

les Quita loespecific

Obtieneespecific

Devuelvactual. (

��

nes para su ael archivo W

pción

los usuarios

los usuarios cadas.

el usuario es

el usuario es

una función

la cookie don

argado. Quita

argado. Deter(Se hereda

una lista decada que con

una lista de

omo función ct).

argado. Obtieun usuario.

el objeto Ty.

una lista decada.

argado. Obtieen la función

ina si las instnstancia. (Se

usuario espe

usuario espe

s usuarios es

s nombres dcadas.

un valor quecado ya exist

ve una clase S(Se hereda d

��� � '�

aplicación ASWeb.config de

especificados

especificados

pecificado a

pecificado a

nueva al orig

nde se almac

a una función

rmina si dos de Object).

los nombresntienen un no

todas las fun

hash para un

ene una lista

pe de la insta

usuarios incl

ene un valor qn especificada

tancias de Obe hereda de O

ecificado de

ecificado de

specificados d

e usuario esp

e indica si el te en el orige

String que ree Object

�������

SP.NET, utilice su aplicació

s a la función

s a las funcio

la función es

las funciones

gen de datos.

cenan los nom

del origen d

instancias de

de usuario dombre de usu

nciones de la

n tipo concret

de las funcio

ancia actual.

luidos en la f

que indica sia.

bject especifObject).

a función esp

as funciones

de la función

pecificados de

nombre de fuen de datos d

epresenta la c

� & '��

ce el elemenón

n especificada

nes

pecificada.

s especificad

mbres de

e datos.

e Object son

de una funcióuario buscado

aplicación.

to. (Se hered

nes en que e

(Se hereda d

función

un usuario e

ficadas son la

pecificada.

especificada

especificada

e las funcione

unción e la función.

clase Object

��:���

�nto

a.

as.

óno.

da

está

de

stá

a

s.

.

es

www.depurando.com 374

Page 375: ASP .NET Framework 3.5

��

Los siespecuna fdicho

Un pelos usfichedel pen lade laharía

Aunqtambinform(Anonjuntaincluiauten

AntesaccesASP.Nen otRolesprovecaracvienepersocarac

AdemadmiProfiProfi

��,���

itios web necíficos de unforma de defos datos.

erfil de usuasuarios del sro de configuerfil desde laconfiguraciópágina. Podmos para cu

que la utilizacbién permitemación de unymous Idens para permidos en estenticados com

s del inicio dsible para seNET guarda atras funcionas" (Role Maneedor. Los prcterística dee con un provonalizados ycterística per

más de la pronistración deleManager (leManager i

Burcar inperfiles d

Determinperíodo d

cesitan frecuusuario quefinir datos es

rio es un conitio. El perfiluración (maca página, utilón y genera aemos accedeualquier otra

ción más comalmacenar isuarios anónntification). Litir el uso detutorial mue

mo con usuar

el ciclo de vir usado porautomáticamalidades, comnager), la cararoveedores alas clases y lveedor paraconfigurarlorfil seguirán f

opiedad Profe perfiles (ta(administradncluyen:

formación ede usuarios a

nar el númerde tiempo.

uentementee se aplicaránspecíficos de

njunto de prode usuario schine.configlizaremos laautomáticamer a las propclase.

mún del Profnformaciónnimos depenLas funcionae la propiedaestran el usorios anónimo

ida de la págla página. Demente el Perfmo "Pertenenacterística Pabstraen el aógica de negMicrosoft™

os para trabafuncionando

file, la caractanto para usuor de perfile

stadística soanónimos.

o de perfiles

��

un métodon a todo el sie usuario de f

opiedades qse define meo web.confipropiedad Pmente una clpiedades del

file es almacde usuariosnde de la caralidades de Pad Profile paro de la caractos.

gina, ASP.NETe forma simifil en los almncia a un gruerfil ha sidoalmacén de dgocio de dichSQL Server.jar con la cao igual con nu

erística Profuarios autentes). Tareas co

obre todos lo

s que no se h

��� � '�

convenienteitio. La caracforma fácil, a

ue definen laediante una sg). Para haceProfile. ASP.Nase accesibleProfile de la

enar datos danónimos. Eacterística "Ierfil y Identifra usuarios aterística Prof

T se aseguralar, al final d

macenes de dupo" (Membdiseñada codatos físico cha característPodemos crracterística Puestros prov

file proporcioticados comomunes que

os perfiles de

han modifica

�������

e para almacecterística deasí como def

a informaciósencilla sintaer referenciaNET lee el ese desde la prmisma form

de usuarios aEl almacenamIdentificacióficación Anóanónimos. Lofile tanto con

que el Perfiel ciclo de viatos. De la mership) o "Adn un modelocorrespondietica. La caracear nuestrosPerfil. Las páveedores per

ona soporteo anónimos)haremos co

e usuarios au

do en un det

� & '��

enar los datoPerfil proporfinir y almace

ón a almacenaxis XML en ua a la informaquema definropiedad Proma que lo

utenticadosmiento de lan Anónima"nima trabajaos ejemplosn usuarios

l se encuentida de páginamisma formadministradoro basado enente a unacterística Pers proveedoreáginas que usrsonalizados.

para la) con eln el

tenticados y

terminado

��:���

!

osrcionaenar

nar deunaciónnidoofile

,

an

raa,a quer de

rfilessan la.

y

www.depurando.com 375

Page 376: ASP .NET Framework 3.5

GuaLa foresa inde pede Da

Aspn

ConASP.Nde peutilizapropoteneminteradebeweb.

<prof

EstonombString

Eliminar pmodificac

ardar informa más sennformación eersistencia qatos.

et_regsql.ex

figurar laNET ha disocerfil) del provar el proveedorcionados (mos un sisteactuar con emosinformaConfig:

file enabled <propert <add n <add n <add n <add n </proper </profile>

hace que la Abre, apellidog. Sin embar

perfiles indivción de estos

rmación dncilla de persesté disponibue va mucho

xe es un com

a gestión dciado la API dveedor de dador predeterSqlServer) oma de gestiól perfil en elr al sistema

d "true" defties>name "Nombrename "Apelliname "Telefoname "fechaNrties>>

API de perfils,teléfono ygo, podemo

viduales o grs.

de Personsonalizaciónble siempre qo más allá de

ando que pe

de los Perde perfil (cómatos subyacerminado (Sqlincluso escrón de relacioresto del códe los datos

aultProvider

"/>dos"/>no"/>acimiento" t

cree espaciofecha de nacs definir un t

��

upos de perf

nalizaciónes guardar ique el usuarel estado de

ermite instal

rfilesmo interactuente (cómo slServerExpreribir nuestroones con el cdigo. Para agque querem

r "AspNetSql

type "System

o para almaccimiento. Eltipo.

��� � '�

files basándo

nnformación srio inicie unala sesión. Pa

ar una base

ar mediantese almacenaness) o uno depropio provliente) sin cagregar datosmos almacen

lProfileProv

m.DateTime"/

cenar cuatrotipo de alma

�������

onos en la fe

sobre el usuasesión. Estora ello utiliza

de datos de

e programacin los datos).e los otros prveedor (por eambiar la fors al perfil delar. Esto lo ha

vider">

/>

fragmentosacenamiento

� & '��

echa de últim

ario y hacero necesita unaremos una

Sql Server

ón con los dEsto nos peroveedoresejemplo, sirma deusuario, antacemos en e

de informaco por defecto

��:���

"ma

quen tipoBase

atosrmite

tesel

ción:o es

www.depurando.com 376

Page 377: ASP .NET Framework 3.5

AApliicaccio

��

A

e

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mnecon

���

��

MCsn .N

� ��

����

CTS:WebNET

3

:bT

5

www.depurando.com 377

Page 378: ASP .NET Framework 3.5

��

SimUsare

ForUn fo

Tene

<%@ PInher<%@ RAssem

<html<body

<

<</bod</htm

usingusingusingusingusingusingusing

publi{

p{

}}

���

muladoremos un sim

http://de

mularioormulario mó

mos que reg

Page Languagrits " DefauRegister Tagmbly "System

l xmlns "htty><mobile:Form

<a href<br /><a href<br /><a href<br /><a href<br /><mobile:

</mobile:Fordy>ml>

g System; g System.Colg System.Ling System.Webg System.Webg System.Webg System.Web

ic partial c

protected vo{

MobileCa elNavega

}

� A��

mulador de te

eveloper.ope

móvilóvil hereda d

gistrar una lib

ge "C#" Autoult" %> gPrefix "mobm.Web.Mobile

tp://www.w3.

m id "Form1""CalendarTe

"LabelTest.

"ObjectList

"AdRotatorT

Label Runatrm>

lections.Genq;b;b.UI;b.UI.WebContb.Mobile;

class Defau

oid Page Loa

apabilities mador.Text m

����

eléfono móvi

enwave.com

de System.W

brería de con

EventWireup

ile" Namespa" %>

org/1999/xht

runat "servst.aspx">Cal

aspx">LabelT

Test.aspx">O

est.aspx">Ad

"server" Fo

neric;

rols;

lt : System

d(object sen

mobCaps (MmobCaps.Pref

��

il

Web.UI.Mob

ntroles

"true" Code

ace "System.

tml" >

ver">lendarTest.a

Test.aspx</a

ObjectListTe

dRotatorTest

ont Bold "Tr

.Web.UI.Mobi

nder, EventA

MobileCapabiferredRender

bileContro

eFile "Defau

.Web.UI.Mobi

aspx</a>

a>

est.aspx</a>

t.aspx</a>

rue" ID "elN

ileControls.

Args e)

ilities)RequringType;

ols.Mobile

ult.aspx.cs"

ileControls"

>

Navegador" /

MobilePage

uest.Browser

��� �� A

ePage

>

r;

A������

www.depurando.com 378

Page 379: ASP .NET Framework 3.5

La clade fu

Los codispoemulemuldispocomodesplinterf

Dent<Chocon lael ordconstreemdel d

ase MobileCanciones sob

ontroles de Aositivos móviadores que sador permitositivos de hao lo harían lolazaría un usfaz y utilizar

ro de un elemoice>, cada uas funcionesden en que atrucción de D

mplazar propiispositivo pa

apabilities Prre dispositiv

ASP.NET Moiles. Los fabrsimulan el fue ver las págardware de los usuarios. Esuario por suuna plantilla

mento <Devno de los cuas del dispositaparece y la pDeviceSpecifedades; porara el contro

roporciona uos cliente y p

obile permiteicantes de launcionamienginas Web deos fabricanteEs posible, positio Web e

a DeviceSpec

iceSpecific>ales contieneivo de destinprimera opcfic/Choice seejemplo, sel Image.

un solo origepara realizar

en desarrollaa mayoría deto del hardwe ASP.NET Mes, así comoor ejemplo, qn un dispositcific para ese

se especificae atributos qno. En tiempión correctautiliza parapuede utiliz

n para obtenr consultas en

r aplicacionee dispositivosware y de losMobile tal y coprobar la inque despuéstivo determie dispositivo.

a normalmenque especificpo de ejecucimente evaluespecificar lzar para indic

ner acceso an funciones

es para una gs móviles pros exploradoreomo se veríaterfaz del sits de comprobnado, decida.

nte uno o vacan cómo seón, cada opcuada es la quos conjuntoscar las imáge

��� �� A

la informacide dispositiv

gran variedaoporcionanes. El softwaan en lostio Web tal ybar cómo sea modificar l

rios elementevalúa la opción se evalúe se utiliza. Ls de plantillaenes específi

A������

iónvo.

d de

re

y

a

tosciónúa enLaas ycas

www.depurando.com 379

Page 380: ASP .NET Framework 3.5

DeviEspecbasadutilizaconte

<devic

</devi

ConLos coconteenvíointerrlos fo

Con<%@ P%><%@ RAssem

<!DOC"http

<html<head

<</hea<body

<

<</bod</htm

Un paFormpropicomo

ConReprecaracActioURL.

Una pnaveg

iceFiltercifica un dispdo en el agenar un filtro denido o plant

ceFilters>

<ficeFilters>

ntroles deontroles ASPenedores deo de datos, mrelacionadosormularios, s

trol PanePage Languag

Register Tagmbly "System

CTYPE html Pp://www.w3.o

l xmlns "httd runat "ser<title></titad>y><mobile:Form

<mobile:<mob

</mobile<mobile:

<mob</mobile

</mobile:Fordy>ml>

anel puede cm o StyleSheeiedades de eo el estilo de

trol Formesenta el concterísticas deon por defectUn formular

página puedgador. El for

positivo o clante de usuarde dispositivotillas que cam

<filter name<filter namefilter name="

el ContenP.NET incluyeotros contro

mientras ques. Varios panin embargo,

elge "C#" Auto

gPrefix "mobm.Web.Mobile

PUBLIC " //Worg/TR/xhtml

tp://www.w3.rver">tle>

m ID "Form1"Panel Runat

bile:Label re:Panel>Panel Runat

bile:Label Re:Panel>rm>

contener cuaet. Los controestilo de los clos controle

mntenedor máe este controto es una cadrio desencad

e contener vmulario activ

ase de disposrio o explorao para reempmbian el dise

="IsIE" compa="IsMobile" cisHTML32" com

nedoren un par deoles. El contrPanel repre

neles puedenno pueden

EventWireup

ile" Namespa" %>

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

Runat "serv"server" Fo

unat "server

"server" Baunat "server

alquier controles de panecontroles indes hijos están

ás externo deol tienen propdena vacía, lodena eventos

varios formuvo actual pu

sitivo en un sdor. Un progplazar propieeño y la apar

are="Browser"compare="IsMobmpare="Preferr

e controles: Prol Form se dsenta un simn anidarse e ianidarse.

"true" Code

ace "System.

ML 1.0 Trans1 transition

tml">

ver">ont Bold "Trr">Programac

ackColor "yer">Gerardo S

rol de movilidel no tienen rdividuales qun controlado

e controles dpiedades deo que causas cuando se a

larios, pero sede fijarse y

sistema Mobgramador deedades del coriencia.

argument="IE"bileDevice" arredRenderingTy

Panel y Formdiferencia demple grupo eincluirse en l

eFile "Panel

.Web.UI.Mobi

sitional//ENnal.dtd">

rue" Alignmeción en ASP.

ellow">Sanz</mobile

dad ASP.NETrepresentacióuehay en su is por el adap

dentro de unl estilo actioun envío deactivan y se d

sólo se dibujrecuperarse

bileCapabilitie páginas o aontrol o defi

" /> rgument="true"ype" argument=

m que funcione Panel en qustático de colos formulari

l.aspx.cs" I

ileControls"

N"

ent "Right">NET 2.0</mo

e:Label>

T diferente dón visual y sóinterior. Tantptador del di

na página den y method.datos de dadesactivan.

a uno cada ve mediante la

��� �� A

ies ASP.NETplicaciones pnir bloques d

" /> ="html32" />

nan comoue soporta eontrolesios, mientras

nherits "Pa

>obile:Label>

e MobilePagólo alberganto la disposicispositivo.

movilidad. LEn particulatos a la mism

vez en ela propiedad

A������

puedede

l

s que

nel"

ge,n lasción

Lasar,ma

www.depurando.com 380

Page 381: ASP .NET Framework 3.5

Activusand

<%@ P<%@ RAssem

<!DOC"http

<html<head

<</hea<body

<

Form<<<

Form<<

</bod</htm

ParaNavig

ConLos coe iterEl conelemEl conlista.Por úbase

El coDibujestátelem

En mselecestá popcioelemque ela pro

<%@ P<%@ RAssem

eForm. Cuando el control

Page LanguagRegister Tagmbly "System

CTYPE html Pp://www.w3.o

l xmlns "httd runat "ser<title></titad>y><mobile:Form

<mobile:<mobile:

</mobile:Lin</mobile:For<mobile:Form

<mobile:<mobile:

</mobile:Lin</mobile:Fordy>ml>

hacer que ungateUrl el ID

ntroles deontroles Listrativos de ASntrol List se pentos.ntrol Selectio

último, debemde datos de

ontrol Lisja una secueico o interacento es texto

odo interactcionarse y qpresente, elones estáticaentos en hipel clic se inteopiedad Data

Page LanguagRegister Tagmbly "System

ndo varios fol Link.

ge "C#" AutogPrefix "mobm.Web.Mobile

PUBLIC " //Worg/TR/xhtml

tp://www.w3.rver">tle>

m ID "Form1"Label ID "LLink ID "Li

nk>rm>m ID "Form2"Label ID "LLink ID "Li

nk>rm>

n control Lindel formula

e Listadot, ObjectLIst ySP.NET.parece a Rep

onList es útil

mos usar el cforma tabul

stncia de elemctivo. En modo plano.

tivo, todos loue generan ucontrol funca. Cuando sepervínculos. Erpreta comoaValueField y

ge "C#" AutogPrefix "mobm.Web.Mobile

ormularios es

EventWireupile" Namespa" %>

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

Runat "servabel1" Runatnk1" Runat "

Runat "servabel2" Runatnk2" Runat "

nk apunte a urio prefijado

oy SelectionLi

peater y a Da

si necesita q

control Objear.

mentos en undo estático, e

os elementosun evento. Sciona de formfija a true, laEn este casoo un salto a uy el texto de

EventWireupile" Namespa" %>

stén activos

"true" Codeace "System.

ML 1.0 Trans1 transition

tml">

ver">t "server">P"server" Nav

ver">t "server">S"server" Nav

un formularioo con el simb

ist son parte

ataList y mue

que el usuar

ctList si nece

n dispositivo.el control ge

s se dibujan cSi un gestor dma interactiva propiedad, ningún eveuna nueva URhipervínculo

"true" Codeace "System.

en la misma

eFile "Form..Web.UI.Mobi

sitional//ENnal.dtd">

Primer Form<vigateUrl "#

Segundo FormvigateUrl "#

o interno, poolo #

s demovilida

estra una list

io elija entre

esitamos mo

. EL control penera una list

como elemede eventos pva, sino, trabItemsAsLinknto ItemCOmRL. Prodremo DataTextFi

eFile "List..Web.UI.Mobi

página, pue

aspx.cs" InileControls"

N"

</mobile:Lab#Form2">Sigu

m</mobile:La#Form1">Ante

onemos en la

ad de los con

ta estática lim

e varios elem

ostrar la infor

puede trabajta estática en

entos que puara el eventoaja como unks transformammand se dos indicar esield

aspx.cs" InileControls"

��� �� A

ede conmuta

nherits "For

bel>uiente

abel>erior

a propiedad

ntroles de list

mitada de

mentos de un

rmación de u

jar en modon la que cada

edeno ItemCommna lista dea la lista deesencadenarsta URL med

nherits "Lis

A������

�rlos

m" %>

tado

a

una

a

mand

rá, yaiante

t" %>

www.depurando.com 381

Page 382: ASP .NET Framework 3.5

<html<body

<

<<

<</bod</htm

usingusingusingusingusingusingusingusingusingusingusingusingpubli{

p{

}}

Un coDataSespecEstosAl deelem

<%@ PInher<%@ RAssem

<!DOC"http

<html<head

<</hea<body

<

DataVOnIte

<<

[auth

l xmlns "htty><mobile:Form

<b>Where<mobile:

<ite<ite<ite<ite<ite

</mobile</mobile:For<mobile:Form

<mobile:</mobile:Fordy>ml>

g System; g System.Colg System.Comg System.Datg System.Drag System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Webic partial c

protected vo{

string m e.ListI

Info.Tex ActiveFo

}

ontrol List puSource. El cocificada: unas valores se ffinir un gestentos como

Page Languagrits "ListBdRegister Tagmbly "System

CTYPE html Pp://www.w3.o

l xmlns "httd runat "ser<title></titad>y>

<mobile:Form<mobile:

ValueField "emDataBind "</mobile:For<asp:sqldata

ConnectiSelectCo

hors]"></asp

tp://www.w3.

m id "Form1"e do you wanList runat

em Text "Romem Text "Newem Text "Lonem Text "Parem Text "Syde:List>rm>m runat "servLabel runat

rm>

lections;mponentModelta;awing;b;b.Mobile;b.SessionStab.UI;b.UI.MobileCb.UI.WebContb.UI.HtmlConclass List :

oid List Cli

msg Stringtem.Text, e

xt msg; orm Result

uede estar limontrol List pua para la propfijan mediantor para Itemla combinac

ge "C#" Autod" %> gPrefix "mobm.Web.Mobile

PUBLIC " //Worg/TR/xhtml

tp://www.w3.rver">tle>

m ID "Form1"List DataSau id" RunaOnItemDataB

rm>asource id "onString "<

ommand "SELEp:sqldatasou

org/1999/xht

runat "servt to go toda"server" ide" Value "€1York" Value

don" Value "is" Value "€ney" Value "

ver" id "Res"server" id

;

te;

ontrols;rols;trols;System.Web

ck(object so

.Format("Goi

.ListItem.Va

sForm;

mitado por uuede vincularpiedad Text dte las propie

mDataBind, seción de más c

EventWireup

ile" Namespa" %>

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

Runat "servource "<%# St "server" Iind"></mobil

SqlDataSourc%$ ConnectioCT [au lnamerce>

tml" >

ver">ay?</b>"Cities" On

10" />e "$500" />"€200" />€350" />"$1200" />

sultsForm">d "Info"/>

.UI.MobileCo

ource, ListC

ing to {0} falue);

una fuente drse sólo conde la lista dedades DataTe puede tamcampos de o

"true" Code

ace "System.

ML 1.0 Trans1 transition

tml">

ver">SqlDataSourcID "lista"le:List>

ce1" runat "onStrings:pue], [au id],

nItemCommand

ontrols.Mobi

CommandEvent

for {1}.",

e datos sólodos columnae elementosTextField y Dmbién fijar el torigen.

eFile "ListB

.Web.UI.Mobi

sitional//ENnal.dtd">

ce1 %>" Data

"server"ubsConnectio, [au fname]

d "List Clic

ilePage

tArgs e)

mediante laas de la fueny otra de proataValueFieltexto de una

Bd.aspx.cs"

ileControls"

N"

aTextField "

onString %>" FROM

��� �� A

ck" >

a propiedadte de datosopiedad Valuld del controa lista de

au fname"

A������

ue.ol List.

www.depurando.com 382

Page 383: ASP .NET Framework 3.5

</bod</htm

usingusingusingusingusingusing

publi{

p{

}p{

"au f}

}

El OEs lapuedorden

La prmenúla quehace

La visespeccerraAutoGa dib

<%@ PInher<%@ RAssem

<html<body

<

Style

<

Conne

FROM

</bod</htm

dy>ml>

g System; g System.Colg System.Webg System.Webg System.Webg System.Web

ic partial c

protected vo{

if (!IsP}protected vo{

// e.Listfname"), Dat}

Objeto Objparte de moe tener dos vnación de m

opiedad Labú rápido. Cade todos los cque pueda p

sta de detallecificados meda, cuyo texGenerateFieujar en realid

Page Languagrits "ObjectRegister Tagmbly "System

l xmlns "htty><mobile:Form

<mobile:eReference "

Data<Dev

</De</mobile

</mobile:For<asp:sql

ectionStringselectco

[Customers]

dy>ml>

lections.Geb;b.UI;b.UI.WebContb.UI.MobileC

class ListBd

oid Page Loa

PostBack) Da

oid OnItemDa

tItem.Text taBinder.Eva

jectListovilidad del cvistas: la deenú hecha co

elField les peda elementocampos de lapulsarse está

e puede includiante el usoxto se fija conld dentro dedad.

ge "C#" AutotListTest" %gPrefix "mobm.Web.Mobile

tp://www.w3.

m id "Form1"ObjectListsubcommand"

aSource "<%#viceSpecific<Choice Fil</Choice>

eviceSpecifie:ObjectListrm>datasource

gs:Connectioommand "SELE"></asp:sql

neric;

rols;ontrols;

: System.We

d(object sen

taBind();

taBind(Objec

String.Forml(e.DataItem

ontrol DataGlista y la de don los valore

ermite elegirmostrado se

a fila de datoá determinad

uir una barrao de la etiqun la propiedae las etiqueta

EventWireup>ile" Namespa" %>

org/1999/xht

runat "servID "ObjectLi

SqlDataSour>ter "IsIE">

c>>

id "SqlDataSnString %>"CT [Customerdatasource>

eb.UI.Mobile

nder, EventA

ct sender, L

mat("{0} $m, "au id"))

Grid del servdetalles. En les de un únic

r qué campoe puede seleos quedan moda por el disp

a de herramieta <commaad BackCommas <fields> le

"true" Code

ace "System.

tml" >

ver">ist1" Runat

rce1 %>" Lab

Source1" run

rID], [Compa

eControls.Mo

Args e)

ListDataBind

${1}", DataB);

idor de ASP.la vista de lisco campo.

o límite se pueccionar y geostrados. Lapositivo.

ientas con toand> junto comandText. Pe permite dec

eFile "Objec

.Web.UI.Mobi

"server" Co

belStyle Sty

nat "server"

anyName], [C

obilePage

dEventArgs e

Binder.Eval(

NET. En concsta, el contro

uede usar paenera una visforma en qu

odos los comon su corresPor último, lacidir qué cam

ctListTest.a

ileControls"

ommandStyle

yleReference

" connection

ContactName]

��� �� A

e)

e.DataItem,

creto, Objecol muestra u

ra promociosta de detalleue el elemen

mandospondientea propiedadmpos límite s

aspx.cs"

e "title">

nstring "<%$

, [ContactT

A������

!

tListna

onar ele ento se

se van

itle]

www.depurando.com 383

Page 384: ASP .NET Framework 3.5

usingusingusingusingusingusingusingusingusingusingusingusing

publi{

p{

}}

El CPropolista dseleclado dWebSelec

El conbotónmúltisopotiposselec

ConLa clanavegpued

Los comoviHyperepre

ConGeneintrodpued

Este cejecumism

g System; g System.Colg System.Comg System.Datg System.Drag System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Web

ic partial c

protected vo{

if (!IsP}

ontrol Selorciona unade selección,cionar uno odel servidorcuando la prctedIndexCha

ntrol Selection de seleccióiple. Puede ertan todos ede lista de cción, cuadro

ntroles dease TextContgación y de een utilizarse

ontroles Linklidad Label eerLink de ASPesenta un bo

trol TextBera un cuadroduce el usuae tener más

control tambuta el gestorma página.

lections;mponentModelta;awing;b;b.Mobile;b.SessionStab.UI;b.UI.MobileCb.UI.WebContb.UI.HtmlCon

class Object

oid Page Loa

PostBack) Da

lectionLisselección UI, muestra uno más elemese genera auropiedad Auanged se gen

onList puedeón, botón deelegir entre estos tipos decomprobacióo de lista y de

e Textotrol es una clentrada. Tode mediante p

k, TextBox, yes similar al dP.NET. Otrosotón de coma

Boxo de texto deario. El controque una líne

bién tiene soespecificado

;

te;

ontrols;rols;trols;

ListTest : S

d(object sen

taBind();

stpara una lis

na lista de elentos. CuandoutomáticametoPostBack snera para el c

e dibujarse dcomprobaciellos mediane selección. Tón y de selece lista desple

lase abstractdos los contrrogramación

y Label son ejde ASP.NET ycontroles deando y el con

e una sola línol puede traea o ser un a

oporte para eo si el texto c

System.Web.U

nder, EventA

ta de elemeementos queo un elemenente, como ose fija con elcambio de se

e cinto tiposión, cuadrote la propiedTípicamente,ción múltipleegable se dib

ta a partir deoles basadosn para dibuja

jemplos de ey el control de texto son entrol PhoneC

nea y guardabajar en moatributo de só

el evento delcambia entre

UI.MobileCon

Args e)

ntos. AL iguae pueden pento queda seocurre en cievalor true. Eelección.

s distintos: lisde lista y cuadad SelectTy, un teléfonoe, de forma qbujan con un

e la cual heres en texto tiear la salida de

este tipo de cde movilidadel control CoCall.

a en la propiedo de contraólo lectura.

l lado del cliee dos envíos

ntrols.Mobil

al que la listarmitir a los uleccionado,ertos controlEl evento

sta desplegaadro de listaype. No todoso móvil reconque los tiposa lista de ele

edan ciertosenen la prope un control

controles. ElLink se paremmand, cuy

edad Text elaseña o num

ente OnTextCde datos suc

��� �� A

ePage

a desplegableusuariosningún evenles de listado

able (por defa con opcións los dispositnocerá sólos de cuadro dección.

controles deiedad Text, y.

control deece mucho aya lógica

texto queérico, pero n

Changed, qucesivos en la

A������

"

eo la

to delo

ecto),

tivoslosde

ey

l

no

ue

www.depurando.com 384

Page 385: ASP .NET Framework 3.5

<mobi

ConContiPuedpermpara

Cualqservidgestoun arcontr

<%@ PInher<%@ RAssem

<html<body

<

<

<

<</bod</htm

usingusingusingusingusingusingusingusingusingusingusingusing

publi{

p{

}}

La prform

ile:TextBox</mobile

trol Commiene la mayoe ser dibujad

mite elegir enmostrar com

quier pulsacidor de dos foor del eventorgumento. Curol tiene que

Page Languagrits "TextBoRegister Tagmbly "System

l xmlns "htty><mobile:Form Search f

<mobile:<mobile:

</mobile:For

<mobile:Form<mobile:

</mobile:Fordy>ml>

g System; g System.Colg System.Comg System.Datg System.Drag System.Webg System.Webg System.Webg System.Webg System.Webg System.Webg System.Web

ic partial c

protected vo{

string m msg St theResul

ActiveFo}

opiedad Actulario activo

ID "TextBoxe:TextBox>

mandoría de las cado como untre Button o

mo elemento

ón en este cormas distinto ItemCommuando se pue realizar una

ge "C#" Autoox" %> gPrefix "mobm.Web.Mobile

tp://www.w3.

m ID "Form1"for:TextBox runCommand ID

rm>

m runat "servLabel runat

rm>

lections;mponentModelta;awing;b;b.Mobile;b.SessionStab.UI;b.UI.MobileCb.UI.WebContb.UI.HtmlCon

class TextBo

oid OnSearch

msg "Resultring.Formatts.Text m

orm Result

iveForm delo actualment

1" Runat "se

racterísticasbotón de eno Link. Si el foo seleccionab

ontrol provotas: con el geand, puede tlsa el controa validación s

EventWireup

ile" Namespa" %>

org/1999/xht

runat "serv

at "server""Command1" r

ver" id "Res"server" id

;

te;

ontrols;rols;trols;

x : System.W

(object send

ts for '{0}(msg, theSubsg;

sForm;

objeto Formte.

erver" OnTex

s del controlnvío o como uormato elegible. La image

oca un envíoestor del evetambién darl, la propiedsobre el rest

"true" Code

ace "System.

tml" >

ver">

id "theSubjrunat "serve

sultsForm">d "theResult

Web.UI.Mobil

der, EventAr

'";bject.Text);

mmodifica u

xtChanged "A

Button de Aun hipervíncdo es Link, pen se fija med

de datos. Puento ItemCor al control uad lógica Cauo de control

eFile "TextB

.Web.UI.Mobi

ject" />er" Text "GO

ts" />

leControls.M

rgs e)

;

obtiene med

Alert">

SP.NET y deulo. La proppodemos elediante la pro

uede configummand o con nombre yusesValidatioes del formu

Box.aspx.cs"

ileControls"

O" OnClick "

MobilePage

diante progr

��� �� A

LinkButton.iedad Formagir una imagopiedad Imag

urar el códigoon OnClick. Copcionalmenon calcula siulario.

OnSearch" /

amación el

A������

)

atgengeUrl.

o delCon elnteel

>

www.depurando.com 385

Page 386: ASP .NET Framework 3.5

PhoEste cParaintera

La pren divalortextocontrhiperteléfo

<%@ P%><%@ RAssem

<html<body

<

<</bod</htm

DibLas aespecconodibujdispose repcontr

EnteEl entapropnecesun cogene<Dev

El eleelecc

otoCallcontrol es sódispositivosactivo que h

opiedad Altespositivos side Text y el

o plano a merol genera unrvínculo queono se dibuja

Page Languag

Register Tagmbly "System

l xmlns "htty><mobile:Form Phone nu

<mobile:AlteAltePhonText

<mobile:AltePhonText

</mobile:Fordy>ml>

ujo Adapplicaciones dcíficos o a cacidas de losado del contositivo. El dibpresenta conroles.

endiendotorno de ejepiado para esita un códigonjunto de firarlo para caviceSpecific>

emento <Devciones repres

ólo de salidaque permiteace una llam

ernateForman capacidadeotro que tennos que se hn hipervíncuapunta a dica.

ge "C#" Auto

gPrefix "mobm.Web.Mobile

tp://www.w3.

m id "Form1"umbers found PhoneCall I

ernateFormaternateURL "hneNumber "11t "ACME CorpPhoneCall I

ernateFormatneNumber "11t "Home" />rm>

ptativode movilidadategorías dedispositivos,trol sea másbujado adaptn una etique

los filtrocución de ASl dibujado engo diferenteltros de dispada filtro. Expy <Choice>.

viceSpecific>sentan pares

y se usa paren hacer llammada cuando

at puede seres telefónicanga el valor dhaya especifilo que apuntcha URL. Si la

EventWireup

ile" Namespa" %>

org/1999/xht

runat "servfor Joe:<br

D "PhoneCall"{0} at {1

ttp://www.ac1 222 0000"" />D "PhoneCall"{0} at {1

1 333 0000"

d pueden adadispositivos., puede variao menos vistativo se realta <DeviceSp

s de dispoSP.NET abstrn una gran vpara el mismpositivo paraprese un filtr

> es un contes hechos a pa

a representamadas, el conse le selecc

cualquier caas. Puede acede PhoneNucado la propta a dicha URa propiedad

"true" Code

ace "System.

tml" >

ver">r />l1" runat "s}"cme.com"

l2" runat "s}"

aptar la apar. Debido a quar el estilo detoso para asliza usando fpecific> dent

ositivosrae el códigoariedad de dmo control bala aplicaciónro de dispos

enedor que gartir de carac

ar un númerontrol se compiona.

adena y se useptar dos pamber. El texpiedad AlternRL. En este caText no está

eFile "Phone

.Web.UI.Mobi

server"

server"

riencia de losue están base los controlesí acomodarlofiltros de disptro del posic

o .aspx y genedispositivos.asado en varn y especificaitivo usando

guarda un núcterísticas de

o de teléfonoporta como u

sa para reprerámetros, unto alternativnateURL. Enaso, el contrdefinida, el

e.aspx.cs" I

ileControls"

s controles aados en capaes al igual quo a las caracpositivos. Unionamiento

era el lenguaSin embargorios dispositiar entonces elos element

úmero de elee dispositivo

��� �� A

o al que llamun elemento

esentar el cono que tengavo se dibuja ceste caso, elrol genera unnúmero de

nherits "Ph

dispositivosacidadesue hacer queterísticas deno de estos frelativo de lo

aje de marcao, cuandovos, debe deel código patos

ecciones. Lass y valores

A������

*mar.o

ontrola elcomo

n

one"

s

e ellfiltrosos

ado

efinirra

www.depurando.com 386

Page 387: ASP .NET Framework 3.5

correopciósiguie

<devi

</dev

El eleatribuargumdibuj

<%@ PInher

<%@ RAssem<html<body<mobi

<

<</mob</bod</htm

SesiMuchpor la

<se

PagParacontrpágin

espondientesón si el filtroente listado

iceFilters><filter n<filter n

<filter nviceFilters>

ement <filteruto comparement es el vaar encursiva

Page Languagrits "LabelT

Register Tagmbly "Systeml xmlns "htty>ile:Form ID<mobile:Labe

<DeviceS<Cho<Cho

</Device</mobile:Labbile:Form>dy>ml>

ioneshos dispositiva tanto sería

essionState c

ginaciónpaginar se proles como Lna en la prop

s. Los filtros destá verificamuestra var

name "IsIE"name "IsMobiname "isHTML>

r> tiene un ne define la caalor que tienen dispositiv

ge "C#" AutoTest" %>

gPrefix "mobm.Web.Mobiletp://www.w3.

"Form1" Runel ID "Labelpecific>

oice Filteroice FiltereSpecific>bel>

vos móvilesuna buena p

ookieless="tr

pone a true laList, ObjectLIspiedad Items

de dispositivdo, esto es,ios filtros qu

compare "Brile" compareL32" compare

ombre que sapacidad delne que coincivos WML 1.1

EventWireup

ile" Namespa" %> org/1999/xht

at "server">1" Runat "se

"IsMobile" F"IsIE" Font

tienen problpráctica:

rue" />

a propiedadst, TextViewPerPage

vos se definesi el atributoe están defi

rowser" argum"IsMobileD"PreferredR

se usa para vdispositivo qdir. Por ejem1 y como text

"true" Code

ace "System.

tml">

>erver">

Font ItalicName "Arial

lemas con la

del formular, permiten e

en en el archio del dispositnidos en el a

ment "IE" />evice" argumRenderingTyp

vincularlo coque quiere pmplo, si teneto normal en

eFile "Label

.Web.UI.Mobi

"True" />l Black" Fon

s cookies, o

rio Paginate.especificar el

ivo web.conftivo y el valoarchivo web.

>ment "true"pe" argument

n el elementprobar. La prmos una etiqn el resto de

lTest.aspx.c

ileControls"

nt Size "Lar

simplement

A continuacnúmero de

��� �� A

fig. Se elije uor coinciden.config.

/>t "html32" /

t <choice>. Eopiedadqueta parasitios:

cs"

rge" />

e no las adm

ción, diferenItems por ca

A������

unaEl

/>

El

miten

tesada

www.depurando.com 387

Page 388: ASP .NET Framework 3.5

AApliicaccio

��

��

J�

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mnecon

���

��-R

�����

MCsn .N

��

RS

���

CTS:WebNET

3

:bT

5

www.depurando.com 388

Page 389: ASP .NET Framework 3.5

��

CacEl cacrespusalidacache

Parao valinivelsalidapeticcacheo POS

La caestá epagina losejecupolíti

DireEl sigdirectrespuse gelo qu

<%@ P<%@ O<html<scri

v{

}

</s<body

<

<

</bod</htm

La sigu

���

cheado decheado de sauestas metiea está habilitea a menos q

hacer que seidación y visiOutputCacha, se crea uniones GET oeada caducaST cacheado

ché de salidaen el caché dna caduca a l60 minutos.uta y la páginca de caduci

ectiva de cuiente ejemtiva@Outpuuesta. Para vneró la respe indica que

Page LanguagOutputCachel>ipt runat "s

void Page Lo{ TimeMsg.

}

script>y><h3>

<font fa<p>

<i>Last<asp:Lab

dy>ml>

uiente directiva

� ���

e la págialida es una pndo en la catado por defeque se espec

ea posible caibilidad públhe o la directa entrada deHEAD poste. La caché deos.

a respeta lasde salida y haos 60 minutoSi se recibe

na puede seridad � una pá

caché deplo demuestutCache. Estver el cacheauesta. Entonse está sirvi

ge "C#" %> Duration "6

erver">

oad(Object s

Text Date

ace "Verdana

generated obel ID "TimeM

a activa el caché

�-R

na de sapotente técnché el conteecto, pero ecifique esa re

achear una reica de su cactiva de alto ne caché de saeriores se sirve salida tamb

s políticas dea sido marcaos de haberotra peticióncacheada deágina es válid

salidatra una forme ejemplo sido de salidances refrescaendo la segu

0" VaryByPar

ender, Event

Time.Now.ToS

">Using the

n:</i>Msg" runat "

é de salida en la

alidanica que increnido general resultado despuesta com

espuesta, deché. Podemonivel@Outpualida en la prven desde labién permite

e caducidad yado con unasido cacheadn después dee nuevo. Seda durante c

a simple demplementeen acción, c

ad la página yunda respues

ram "none" %

tArgs e)

String("G");

Output Cach

"server" />

a respuesta:

rementa la redo por páginde una respumo cacheable

ebe tener unos hacer estoutCache. Cuarimera peticicaché de sa

e variaciones

y validación dpolítica de cda, se quita ae ese intervallama caducicierto tiempo

cachear respmuestra la hcargad la págy observad qsta desde el

%>

;

he</font></h

���� ��

espuesta denas dinámicaesta determe.

a política válo o bien usanando se habiión GET a lalida hasta qus de pares no

de las páginaaducidad qua la página dalo, el códigoidad absoluto.

puestas de sahora a la quegina y observque la hora ncaché de sal

h3>

���-RS J

las peticioneas. El cacheadinada no se

lida de caducndo la API deilita el cachépágina. Todaue la peticiónombre/valor

as. Si una págue indica quedel caché deo de la páginaa a este tipo

alida mediane se generó lava la hora a lano ha cambialida.

�������

es ydo de

cidade bajoé deas lasnGET

ginae lasalidaa seo de

nte laaa queado,

www.depurando.com 389

Page 390: ASP .NET Framework 3.5

<%@

Esta dningúndesdeexplíci

Por suejempmostra

<%@ P<%@ O

<scri

v{

}</scr

<html<body

<

Conne

[city

<</bod</htm

CamEn esformacambla dir

<%@

Por cpartebase

Obsegeneque setiqu

<%@ Pa

OutputCache D

irectiva indica sn parámetro GEla caché. Despita y se vuelve a

puesto, en el eplo demuestra laando los resulta

Page LanguagOutputCache

ipt runat "s

void Page Lo{ TimeMsg.

}ript>

l>y><form id "Fo

<h3><fon

<asp:SqlectionString

Seley], [state],

<asp:Gri<p>

<i>L<asp

</form>dy>ml>

mbiar medste ejemplo ma selectiva abien los pareectiva Outpu

OutputCach

ada estado ee de la cadende datos y m

rva que la prra una nuevase vuelva a ineta muestra

age Language=

Duration="60" V

sencillamente qET o POST. Lasués de 60 segua cachear la pág

ejemplo anterioa misma técnicados en una tab

ge "c#" %> Duration "6

erver">

oad(Object S

Text Date

orm1" runat

nt face "VerDataSource

gs:Pubs %>"ectCommand " [zip], [codView ID "G

Last generatp:Label ID "

diante parmodificamosutores en vas nombre/vautCache.

he Duration=

en el conjuntna de consultmuestra sólo

rimera vez qa etiqueta dentroducir unaa la fecha y h

"C#" %>

VaryByParam="

que la página depeticiones quendos, se quita agina.

or se ahorra mua de cacheadobla.

0" VaryByPar

rc, EventArg

Time.Now.ToS

"server">

dana">UsingID "SqlDataS

SELECT [au intract] FROMridView1" ru

ed on:</i>TimeMsg" run

rámetross ligeramentearios estadosalor de la cad

="60" VaryBy

to de datos,ta. Entoncesaquellos aut

ue hacemose fecha en laa búsquedaora a la que

"none"%>

ebe cachearsese reciban miea la página de l

y poco trabajode salida, pero

ram "none" %

gs E)

String("G");

the Output Source1" run

id], [au lnaM [authors]"unat "server

nat "server"

e la aplicaciós. El ejemplodena de cons

yParam="sta

hay un víncula aplicacióntores que pe

clic en el vína parte inferipor ese estase cacheó la

durante 60 segentras la páginaa caché; se ma

mediante el cao realizando una

%>

;

Cache</fontnat "server"

ame], [au fn" />r" DataSourc

" /></p>

ón para permmuestra el csulta usando

te" %>

ulo que pasan construye lertenezcan a

nculo de un eor de la págido en el espa petición ori

���� ��

gundos y que laesté en la cachneja la siguient

acheado de salida llamada a una

t></h3>" Connection

name], [phon

ceID "sqldat

mitir al usuarcacheado deo el atributo

el estado dela consulta al estado sele

estado deterina. A partiracio de un miginal.

���-RS J

página no varihé serán responte petición de fo

da. El siguientea base de datos

nString "<%$

ne], [addres

tasource1" /

io que busque peticiones qVaryByParam

eseado comopropiada a leccionado.

rminado sede ahí, cadaminuto, la

�������

ará porndidasorma

es y

s],

>

ue dequem de

oa

vez

www.depurando.com 390

Page 391: ASP .NET Framework 3.5

<%@ Ou

<scrip

vo {

} </scri

<html><body>

<f

Connec

[state

</</body</html

NotiEn elhabíacachésolam

SustEn ASpequfrecucachecacheconte

En elméto

utputCache Du

pt runat="serv

oid Page Load

TimeMsg.Tex

ipt>

>>form id="Form

<h3><font

<b>Authors<table cel

border<tr>

<td

<td

<td

<td

<td

<td

<td

<td

</tr></table><p></p><asp:SqlDat

ctionStrings:SelectC

e], [zip], [co<Select

<a</Sele

</asp:SqlDa<asp:GridV<p>

<i>Last<asp:La

</p>/form>y>l>

ificación dejemplo antan cambiadoé de entradamente se lim

titución PSP.NET 1.0, laeña región dencia a no ueados con caeado de salidenido dinám

siguiente ejeodo estático

ration="60" V

ver">

(Object Src,

xt = DateTime

1" runat="ser

face="Verdanaby State:</blspacing="0"color: black

d><a href="ou

d><a href="ou

d><a href="ou

d><a href="ou

d><a href="ou

d><a href="ou

d><a href="ou

d><a href="ou

taSource ID="Pubs %>"Command="SELEontract] FROMtParameters>sp:QueryStrinctParameters>ataSource>iew ID="GridV

t generated oabel ID="Time

de Cacheterior los dato en la base da dependa depiará cuando

Post�Cachéas páginas qdinámica, cosar cacheadaché de fragmda, permitienico en cada s

emplo, la páque devuelv

VaryByParam="s

EventArgs E)

.Now.ToString

ver">

">Using the O>cellpadding="k; border colo

tputcache3 cs

tputcache3 cs

tputcache3 cs

tputcache3 cs

tputcache3 cs

tputcache3 cs

tputcache3 cs

tputcache3 cs

SqlDataSource

CT [au id], [M [authors] wh

gParameter Na

View1" runat="

n:</i>Msg" runat="s

Sqltos se cacheade datos. La ie la base de do los datos e

éue eran estámo el nombro o a dividirmentos. ASPndo que las psolicitud.

gina con salive la fecha ac

state" %>

g("G");

Output Cache</

"3" rules="allor: black; wid

s.aspx?state=C

s.aspx?state=I

s.aspx?state=K

s.aspx?state=M

s.aspx?state=M

s.aspx?state=O

s.aspx?state=T

s.aspx?state=U

e1" runat="ser

[au lname], [ahere state=@st

ame="state" Qu

"server" DataS

server" />

aban durantinvalidacióndatos, de talen la base de

áticas en su mre de usuariola página en.NET 2.0 perpáginas de sa

ida cacheadactual median

/font></h3>

l" style="backdth: 700px; bo

CA">CA</a></td

IN">IN</a></td

KS">KS</a></td

MD">MD</a></td

MI">MI</a></td

OR">OR</a></td

TN">TN</a></td

UT">UT</a></td

rver" Connecti

au fname], [phtate">

ueryStringFiel

SourceID="sqld

e 60 segundde caché SQmanera quedatos hayan

mayor parteo o la hora amúltiples co

rmite que estalida cachea

a inserta unante la API Res

���� ��

kground colororder collapse

d>

d>

d>

d>

d>

d>

d>

d>

ionString="<%

hone], [addre

ld="state" De

datasource1"

os, sin imporQL te permitee el caché den cambiado.

pero que coctual, eran foontroles de utas páginas sdas puedan

a llamada dinsponse.Write

���-RS J

: #AAAADD;e: collapse;"

$

ss], [city],

faultValue="C

/>

rtar si los dae hacer que le entrada

ntenían unaorzadas conusuariose aprovecheinsertar nue

námica a uneSubstitution

�������

>

A" />

tosa

en delevo

n.

www.depurando.com 391

Page 392: ASP .NET Framework 3.5

Esta lcaché

<%@ P<%@ O

<scristati{

r}</scr

<html<head

<</hea<body

<<<

page.<T<<R

HttpR<<<<

</bod</htm

El sigasp:S

<%@ P<%@ O

<scris{

}</scr

<html<head

<</hea<body

<

cache

Metho

<</bod</htm

llamada dináé de respues

Page LanguagOutputCache

ipt runat "sic string Ge

return DateT

ript>

l>d id "Head1"<title>Postad>y><form id "fo<div><b>This page</b>

<br /><br />Time: <% Da<br /><br /><b>Real Time: <ResponseSubs</b></div></div></form>dy>ml>

uiente ejemSubstitution p

Page LanguagOutputCache

ipt runat "sstatic strin{

return D}ript>

l>d id "Head1"<title>Postad>y><form id "fo

<h4> This

ed page.</h4<p>

Time <%

</p><p>

<b>R

odName "GetC</b>

</p></form>dy>ml>

ámica se ejecsta que se sir

ge "C#" %> Duration "6

erver">etCurrentDat

Time.Now.ToS

runat "servCache Subst

orm1" runat

e uses post

>ateTime.Now.>

<% Response.WtitutionCal

plo realiza lapara insertar

ge "C#" %> Duration "6

erver">ng GetCurren

DateTime.Now

runat "servCache Subst

orm1" runat

page uses p>

e:DateTime.Now

Real Time: <asp:Substi

CurrentDate">

cuta en cadarve desde el

0" VaryByPar

e(HttpContex

tring();

ver">itution</tit

"server">

cache substi

ToString() %

WriteSubstitlback(GetCur

a misma accir el contenid

0" VaryByPar

tDate(HttpCo

.ToString();

ver">itution</tit

"server">

post cache s

w.ToString()

tution ID "S/>

a solicitud, ycaché de sal

ram "none"

xt context)

tle>

itution to i

%>

tution(newrrentDate));

ón que el ando dinámico.

ram "none" %

ontext conte

;

tle>

substitution

) %>

Substitution

el resultadoida.

" %>

insert a dyn

; %>

nterior, pero

%>

ext)

n to insert

n1" runat "s

���� ��

se inserta en

namic value

usa un cont

a dynamic v

server"

���-RS J

n la cadena d

into a cach

rol

value into a

�������

�de

ed

www.depurando.com 392

Page 393: ASP .NET Framework 3.5

UsanAqueel cacSystedirect

RespoRespo

Podecaducla pro

RespoRespoRespo

CacAdemsimplnombcontrde lasegunusuarla sigduran"Sele

<%@

El atrde usde cainstan

http:/http:/

ndo el APellas aplicacioché pueden uem.Web.Httptivas de pági

onse.Cache.Sonse.Cache.S

mos convertcidad se vueopiedad Slidi

onse.Cache.Sonse.Cache.Sonse.Cache.S

heado pomás de poderle de cacheabre de cacherol de usuarique hemosndos) que derio, así comouiente directnte 120 seguctedID" o los

@ OutputCac

ributo VaryBsuario ordenaché de salidncias de con

//localhost/m//localhost/m

PI de cachones que necusar la funciopCachePolicina de ejemp

SetExpires(DSetCacheab

tirla en una plva a estableingExpiratio

SetExpires(DSetCacheabSetSlidingEx

or fragmer cachear la sr la salida deeado por frago, y marcarlahablado en lebe estar caco cualquier otiva le dice aundos, y ques parámetro

che Duration

yParam es ear a ASP.NETa en el servidtenido del co

mypage.aspxmypage.aspx

écesiten másonalidad proy. El siguientplos anterior

DateTime.Nolity(HttpCac

política de caecer cada vezn como en e

DateTime.Nolity(HttpCacpiration(true

entos desalida de unae regiones degmentos. Podas para que sla sección ancheado en elotra condicióa ASP.NET qucambie el cas de envío d

n="120" Vary

extremadameT para que ador. Por ejemontrol de usu

x?categoryidx?categoryid

control sobroporcionadate ejemplo mres:

w.AddSeconheability.Pub

aducidad desz que se hacel siguiente e

w.AddSeconheability.Pube);

páginaa página ente contenidodemos delimsean cacheanterior. Estal servidor el cn opcional pue meta en laaché usandoel formulario

yByParam="C

ente potentelmacene enmplo, las siguuario del eje

d=foo&selectd=foo&select

re los encabepor la clase

muestra el có

nds(60));blic);

slizante, hace una peticióejemplo.

nds(60));blic);

era, ASP.NETde página, a

mitar áreas ddas usando ldirectiva espcontenido deor la cual dea caché de sao las cadenaso.

CategoryID;S

e y permite acaché múltipuientes URLsemplo anterio

tedid=0tedid=1

���� ��

ezados HTTP

ódigo equiva

iendo que laón a la págin

T te proporcla que se lee nuestra pála directiva@pecifica la due salida del cebiera cambialida al contrs de búsqued

SelectedID"%

a los creadorples instancias distinguenor.

���-RS J

relacionado

lente a las

a hora dea, establecie

iona una forha dado elágina median@OutputCacuración (encontrol dear. Por ejemrol de usuarida "Category

%>

res de controas de una reentre distint

�������

�os con

endo

ma

nte unche

plo,ioyID" y

olesgióntas

www.depurando.com 393

Page 394: ASP .NET Framework 3.5

Por loconteAdematribucacheVaryBusuar

<%@

Tenetantocontrlos redesplmenú

<%@<%@

<htm<bo<ta<t<

<<

<<

<<t</t</bo</htm

El sigsopo

<%@<%@

o tanto, la lóenido diferenmás de permuto VaryByCeados basánByControl cario. Por ejem

OutputCach

d en cuentao de VaryByProl de usuariesultados delegable. El siú de una pág

Page LanguRegister Tag

ml>dy>able>tr><td><Acme:Men</td><td><h1>Hola, la</td><td><Acme:Men</td>tr>table>ody>ml>

uiente ejemrte para cach

Control LanOutputCach

ógica dentronte (que se citir el atributControl. Miendose en pareambia el fragmplo:

he Duration=

que, como cParam comoo contiene ul control de uguiente códigina mediant

age="C#" %>gPrefix="Acm

nu Category=

a hora actua

nu Category=

plo demuesthé.

nguage="C#"he Duration=

de un controcachea por seto VaryByPantras que eles nombre�vgmento cach

="120" VaryB

con las páginde VaryByC

un control deusuario depeigo de ejempte un control

>me" TagNam

="MenuIzqui

al es: <%=Dat

="MenuDere

tra la implem

ClassName=="120" VaryB

ol de usuarioeparado) deram, el cachatributo Varvalor enviadoeado en bas

ByParam="Ca

nas con cachéControl incluse lista despleendiendo deplo muestral de usuario

me="Menu" S

ierdo" runat

teTime.Now%

echo" runat=

mentación de

="AcmeMenByParam="no

o puede genependiendo dheado por fraryByParam cos mediantese a controle

ategoryID;Se

é de salida, sso si no se usegable llamadl valor selecccómo meterdeclarativo.

Src="Menu.a

=server/>

%> </h1>

=server/>

el control de

u" %>one" %>

���� ��

erar dinámicde los argumagmentos tamambia los rePOST o GET,s dentro del

electedID"%>

se requiere esa ninguno ddo Categoríacionado denr en caché do

scx" %>

usuario "Ac

���-RS J

amenteentos que rembién permesultados, el atributocontrol de

>

el uso explícitde los dos. Sia podríamostro de la listaos sección de

me:Menu" c

�������

!eciba.ite un

toelvariarae

con

www.depurando.com 394

Page 395: ASP .NET Framework 3.5

<scrip

pub

voi

A

MM

}

</scr

<asp:

Teneusuarcontrpasadencap

El sigde unlas prla ho60 se

<%@ P<%@ R

<html

<scriv{

}</s

<body<form

<

<<<<<

</bod</htm

Data<%@ C<%@ O

pt runat=ser

blic String Ca

id Page_Load

AdoConnecti

MyMenu.DatMyMenu.Dat

ipt>

:datagrid id=

d en cuentario durante urol de usuarido los 120 sepsulado limp

uiente ejemn control queropiedades dra se actualizegundos.

Page LanguagRegister Tag

l>

ipt runat "svoid Page Lo{ TimeMsg.

}script>

y>m id "Form1"<h3>

<font fa<Acme:DataCo<br><i>Page last<asp:Label I</form>dy>ml>

actrl cs.ascxControl LangOutputCache

ver>

ategory;

d(Object sen

ion conn = n

taSource = ctaBind();

="MyMenu"

que este ejeun periodo do de tipo meegundos o popiamente de

plo demueste recupera ddinámicas deza con cada

ge "C#" %> gPrefix "Acm

erver">oad(Object S

Text Date

runat serv

ace "Verdanaontrol ID "D

t generated D "TimeMsg"

xguage "C#" %Duration "6

nder, EventAr

ew AdoConn

onn.Execute

runat=serve

emplo mete ede 120 segunenú en caso dorque la memntro del cont

tra un cacheatos desde ue la página parefresco, mie

e" TagName "

rc, EventArg

Time.Now.ToS

er>

">Fragment CataControl1"

on:</i>runat "serv

>0" VaryByPar

rgs e) {

nection("My

e("select * fr

r/>

en la caché dndos. Toda lade producirsmoria en el strol de usua

ado de fragmuna base deadre. Se pueentras que e

"DataControl

gs E)

String("G");

Caching</fon" runat "ser

ver" />

ram "none" %

DSN");

om menu wh

de salida la ra lógica necese un fallo enservidor se hrio.

mentos simpdatos SQL Sede ver que lael control de

l" Src "data

;

nt></h3>rver" />

%>

���� ��

here categor

espuesta desaria para ren la caché (sea quedado c

le. El ejemplerver, mienta página es dusuario sólo

actrl cs.asc

���-RS J

ry=" + Catego

cada controecrear cadaea porque hacorta) se ha

lo cachea la sras que mandinámica poro se actualiza

cx" %>

�������

"

ory );

ol de

an

salidantienerquea cada

www.depurando.com 395

Page 396: ASP .NET Framework 3.5

<scriv{

}</s

<asp:Conne

S[stat<asp:<p>

<<

CacASP.NalmacASP.Ncachereinic

La caprogrvolca

Cach

La reccompejem

myVaif(myDis

}

UsanEl sigdatosCuanprimerefre

<%@ P<%@ I

ipt runat "svoid Page Lo{ TimeMsg.

}script>

SqlDataSourectionStringSelectCommante], [zip], GridView ID

<i>Control l<asp:Label I

heando lNET disponecenar y recuNET es privade es equivalecia, la cache

ché proporcramadores fáar un elemen

he["myKey"]

cuperación dprobarse la eplo siguiente

alue = CacheyValue != nulsplayData(my

ndo los dauiente ejems y guarda endo ejecutéisera petición,scar la págin

Page LanguagImport Names

erver">oad(Object S

Text Date

rce ID "SqlDgs:Pubs %>"nd "SELECT [[contract]

D "GridView1

ast generatD "TimeMsg"

los datosde un motoperar cualquda para cadaente a la durase vuelve a c

iona una inteácilmente ponto en la cach

= myValue;

de datos delexistencia dee:

["mykey"];l ) {yValue);

atos de laplo muestran caché el res el ejemplo,, indica que lna, se apunta

ge "C#" %> pace "System

rc, EventArg

Time.Now.ToS

ataSource1"

au id], [auFROM [author" runat "ser

ed on:</i>runat "serv

de la págr de caché couier tipo de oa aplicación yación de la acrear.

erface con uoner objetoshe es como a

cache es mul objeto en c

a cachéotro uso sensultado, quéobservad elos datos hana que se ha u

m.Data" %>

gs E)

String("G");

runat "serv

lname], [aurs]" />rver" DataSo

ver" /></p>

ginaompleto queobjeto a travy almacena laplicación; es

n Diccionarien la cachéañadir un ele

uy simple. Hacache antes d

ncillo de la caé se seguirá umensaje enn sido recupeusado la copi

;

ver" Connect

u fname], [p

ourceID "sql

e puede ser uvés de las petos objetos esto significa q

o simple quey recuperarlemento a un

ay que tenerde recuperar

aché. Ejecutusando durala parte infeerados de laa de la caché

���� ��

tionString "

phone], [add

ldatasource1

usado por laticiones HTTn memoria.que cuando

e permite a llos. En el casdiccionario:

r en cuenta qrlo, como se

a una consunte la vida derior de la pábase de daté.

���-RS J

<%$

dress], [cit

" />

s páginas paTP. La caché dLa duraciónuna aplicaci

osso más simpl

que debe demuestra en

lta a la basee la aplicacióágina. Con laos. Después

�������

)

y],

radede laón se

e,

el

deón.

de

www.depurando.com 396

Page 397: ASP .NET Framework 3.5

<%@ I

<html

<scriv{

SqlCo

myCon

}</s

<body<

<</bod</htm

Inva

InvaEste m2005

1

Import Names

l>

ipt runat "svoid Page Lo{

DataView

// try t// if it

Source

if (Sour {

SqlConnection(Co

SqlDnnection);

Data myCo

Sour Cach

Cach }

else { Cach }

MyGrid.D MyGrid.D

}script>

y><form id "Fo

<h3><fon

<asp:Gri</asp:Gr<p>

<i>

</p></form>dy>ml>

alidación

alidaciónmecanismo upara detect

1. Se configOutputCaASP.NETun contro

Para la pá

pace "System

erver">oad(Object S

w Source;

to retrieve t's not ther

(DataView)

rce null)

Connection monfigurationMDataAdapter m

aSet ds newommand.Fill(

rce new Dahe["MyDataSe

heMsg.Text

heMsg.Text

DataSource DataBind();

orm1" method

nt face "VerdView ID "M

ridView>

<asp:Label

n de la Ca

Caché bausa el mecanar cambios e

ura una notiache, utilizanque se va a uol DataSourc

ágina:

m.Data.SqlCl

rc, EventArg

item from cae, add it

Cache["MyDat

yConnectionManager.ConnmyCommand

w DataSet();ds, "Authors

taView(ds.Tat"] Source

"Dataset cr

"Dataset re

Source;

"GET" runat

dana">CachinyGrid" runat

ID "CacheMsg

aché

sada en Nnismo de noten el resultad

ificación basando la cadenutilizar una dce

lient" %>

gs E)

ache

taSet"];

newnectionStrinnew SqlData

;s");

ables["Authoe;

reated expli

etrieved fro

t "server">

ng Data</font "server">

g" runat "se

Notificaciotificación dedo de las con

ada en depea Commanddependencia

ngs["Pubs"].aAdapter("se

ors"]);

icitly";

om cache";

nt></h3>

erver" /></i

ones de SQcambios ennsultas.

endencia de sdNotificationa basada en n

���� ��

ConnectionSelect * from

i>

QL Serverlas consulta

sql en la diren. Este valornotificacione

���-RS J

tring);m Authors",

r 2005s de SQL Ser

ectivale indica aes para la pág

�������

*

rver

gina o

www.depurando.com 397

Page 398: ASP .NET Framework 3.5

2

3

Siemautomcambprovosoliciserán

Algun

1

2

3

4

��

Para

<%@ OutVaryByPa

2.Para el co

<asp:SqlDCacheDu

3. Se debe lde la apliponerse e

pre que un cmáticamentebios enviadosocará la invate una páginn ejecutados

nos puntos a

1. Las consuSelect. Sinotificaci

2. Los nombquiere obdebe refe

3. El usuariopara regisesos dere

4. El usuarioderechosTransactSERVICE:

��� �

trabajar en e

tputCache Daram="none"

ontrol Datas

DataSource Eration="Infin

lamar al metcación antesen el evento

comando este crearán uns por SQL Selidación de lna o control Den vez de ob

a tener encue

ultas deben ise usa "SELEones de SQL

bres de las tabtener una cerenciar a la

o de SQL Serstrar consultechos : GRAN

o de SQL Sers para enviarSQL otorga e:SqlQueryNo

�� J��

el IIS con Asp

uration="99" %>

source:

EnableCachinnite" ... />

todo Systems de que se eApplication_

tá relacionada dependenrver. Cuandoas consultasDataSource abtener la inf

entra para q

ndicar explícECT *" los reL 2005.

ablas debenonsulta de latabla como

ver 2005 quetas para notiNT SUBSCRIB

ver 2005 quenotificacionesos derechootificationSer

�����

p.NET tenem

9999" SqlDe

ng="true" Sq

m.Data.SqlClieejecute la pri_Start() del f

do con SQL Scia de cachéo se cambias en la cachéasociado conormación de

ue las notific

citamente losultados de

incluir el noma tabla autho"dbo.author

e está ejecutficaciones. EBE QUERY NO

e está ejecutnes desde SQos: GRANT SErvice TO user

mos que regis

ependency="

qlCacheDepe

ent.SqlDepenmera consulfichero globa

erver 2005, Aé que escuchun dato en Sdel servidorn la dependeel caché.

caciones func

os nombres dla consulta n

mbre del proor de la basers".

tando la conEl siguiente cOTIFICATION

tanto la consQL Server 200END ONrname.

strar el Fram

���� ��

CommandN

endency="Co

ndency.Startlta SQL. Estaal.asax.

ASP.NET y Ae las notificaSQL Server, er web. La próencia, la pági

cionen corre

de las columnno se registra

opietario. Pode datos pu

sulta tiene qcomando TraS TO userna

sulta tambie05. El siguien

ework.

���-RS J

otification"

ommandNot

t() en algún lllamada pue

DO.NETaciones deesta notificacóxima vez quna o el contr

ectamente so

nas en la clauaran para las

or ejemplo, subs, la consu

que tener peansact SQL otme.

n tiene que tnte comando

�������

fication"

ugarede

cióne serol

on:

usulas

ilta se

rmisotorga

tenero

www.depurando.com 398

Page 399: ASP .NET Framework 3.5

Aspn

PubPode

CreaAntes

<com

[ArchImple

et_regiis i

blicar sitimos publica

ar Instalas de crear un

mpilation deb

hivo][Agregarementación]

ior un sitio des

adorn instalador s

bug=”false”/>

r][Nuevo Pro[Asistente p

sde el Visual

sería conven

>

oyecto][Otroara proyecto

l Studio en [G

niente establ

os Tipos de Pos de instalac

Generar] [Pu

ecer en el w

royectos][Inción]

���� ��

ublicar sitio]

eb.config

stalación e

���-RS J�������

www.depurando.com 399

Page 400: ASP .NET Framework 3.5

AApliicaccio

��

'%

'T

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mnecon

���

%��;

T'@

MCsn .N

� ��

;��

CTS:WebNET

3

:bT

5

www.depurando.com 400

Page 401: ASP .NET Framework 3.5

����� � '%���;��� 'T'@@

���� �� '%��;;�� 'T'@

@

www.depurando.com 401

Page 402: ASP .NET Framework 3.5

XMLHservid

HttpRequestdor.

Encargado dde habilitar la comunicacción asíncron

����

na entre el cl

�� '%��;

liente y el

;�� 'T'@

@

www.depurando.com 402

Page 403: ASP .NET Framework 3.5

Las atenemmás r

plicaciones wmos los refrerápido, ya qu

web tradicioescos que haue no vieja to

nales tienenacen las aplicodo el conte

postback cucaciones webnido, solame

uando se hacb molestas. Cente lo nece

����

ce una acciónCon Ajax lasario.

�� '%��;

n. En Ajax noágina se carg

;�� 'T'@

oga

@

www.depurando.com 403

Page 404: ASP .NET Framework 3.5

Existeen varios framework y libbrerías para programar ccon AJAX.

���� �� '%��;;�� 'T'@

@

www.depurando.com 404

Page 405: ASP .NET Framework 3.5

���� �� '%��;;�� 'T'@

@

www.depurando.com 405

Page 406: ASP .NET Framework 3.5

���� �� '%��;;�� 'T'@

!

@

www.depurando.com 406

Page 407: ASP .NET Framework 3.5

Con

El cony ScripáginASP.NScriptadmi

El conutilizallama

<asp:

El conaume

ntrol Scri

ntrol principiptManagerPna de ASP.NENET AJAX sintManagerPronistrador de

ntrol ScriptMa también caadas a métod

ScriptManag</asp:Sc

ntrol no prodenta el núme

ptManag

al de la infraProxy. EnconET AJAX. Ningn que se hagaoxy se utilizae script origin

Manager contaracterísticasdos de págin

ger ID "ScripcriptManager

duce interfazero de bites d

ger

aestructura dntraremos soguna funciona referenciaa solo en escnal de las pág

trola y envías como la actas.

ptManager1">

z de usuario,de descarga

del servidor Aolo una instannalidad de Aa un controlenarios de pginas de con

a los recursostualización p

runat "serv

, funciona exde la página

ASP.NET AJAncia del contJAX puede seScriptMana

páginas matrtenido.

s del script. Eparcial de la p

ver">

xclusivamenta.

����

X es el contrtrol ScriptMaer habilitadager. El contrices para hac

El control Scrpágina, los se

te en el servi

�� '%��;

rol ScriptMananager en caa en las páginolcer referenc

riptManagerervicios Web

idor y no

;�� 'T'@

"

nagerdanas

ia al

rb y las

@

www.depurando.com 407

Page 408: ASP .NET Framework 3.5

Con

La acUpdafunciASP.Nexcep

En veUpdaactuavez q

Es unContrformatamb

Prog<%@ PInher

<!DOC"http

<html<head

<</hea<body

ntrol Upd

tualización patePanel repronalidades dNET 2.0. Comptuando la si

ez de permitiatePanel intealizar el marcue la respue

n contenedorrol, actuandoatos. Posee ubién expone u

gramación NPage Languagrits "GripdV

CTYPE html Pp://www.w3.o

l xmlns "httd runat "ser<title></titad>y>

datePane

parcial es la tresenta la rude AJAX a sitmo desarrollaintaxis y sem

ir que el navercepta cualqcado a la misesta está lista

r definido eno como un muna serie deun modelo d

Normalge "C#" AutoViewNormal"

PUBLIC " //Worg/TR/xhtml

tp://www.w3.rver">tle>

l

técnica de pruta más cortaios escritos dadores, no temántica del c

egador realicquier postbasma URL de la.

n el ensamblamero contenepropiedade

de objeto del

EventWireup%>

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

rogramacióna para AJAX.de acuerdo aendremos quontrol Updat

ce una actuack requeridola página. A c

ado System.Wedor de conts para contrl lado del clie

"true" Code

ML 1.0 Trans1 transition

tml">

n que se centNos permiteal clásico moue aprendertePanel.

alización de lo y envía unacontinuación

Web.Extensitroles hijos. Nolar las actuente.

eFile "Gripd

sitional//ENnal.dtd">

����

tra en el conte incorporardelo de prognuevas habi

a página coma petición fuen, actualiza e

ions. DerivaNo aplica nializaciones d

dViewNormal.

N"

�� '%��;

trol UpdatePlagramaciónlidades,

mpleta, el coera de bandael árbol DOM

directamenestilos nide la página y

aspx.cs"

;�� 'T'@

)

Panel.

ontrola paraM una

te de

y

@

www.depurando.com 408

Page 409: ASP .NET Framework 3.5

<<

SortE

/>

SortE

[addr@addr

[au i

@au f[zip]

<<

</bod</htm

Prog<%@ PInher

<!DOC"http

<form id "fo<div>

<asp:GriAlloData<Col

Expression "

Expression "

</Co

</asp:Gr

<asp:SqlConnDeleInse

ress], [cityress, @city,

Seleid], [state]

Updafname, [phon @zip WHE

<Del

</De<Upd

</Up<Ins

</In</asp:Sq

</div></form>dy>ml>

gramación cPage Languagrits "GripdV

CTYPE html Pp://www.w3.o

orm1" runat

dView ID "GowSorting "TaSourceID "Sumns><asp:Comman

ShowSel<asp:BoundF

SortExp<asp:BoundF

SortExp<asp:BoundFphone" /><asp:BoundF

SortExp<asp:BoundF

<asp:BoundFSortExp

<asp:BoundFstate" /><asp:BoundF

olumns>

ridView>

DataSourcenectionStrineteCommand "ertCommand "y], [au id], @au id, @s

ectCommand ", [zip] FROM

ateCommand "ne] @phoneERE [au id]eteParamete<asp:Parame

eleteParametdateParamete<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame

pdateParametertParamete<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame

nsertParametqlDataSource

con Updatege "C#" AutoViewNormal"

PUBLIC " //Worg/TR/xhtml

"server">

ridView1" rurue" AutoGenqlDataSource

dField ShowDectButton "Tield DataFieression "auield DataFieression "auield DataFie

ield DataFieression "addield DataFie

ield DataFieression "auield DataFie

ield DataFie

ID "SqlDataSg "<%$ ConneDELETE FROM INSERT INTO [state], [z

tate, @zip)"SELECT [au lM [authors]"UPDATE [auth, [address] @au id">

rs>ter Name "auers>rs>ter Name "auter Name "auter Name "phter Name "adter Name "citer Name "stter Name "ziter Name "auers>rs>ter Name "auter Name "auter Name "phter Name "adter Name "citer Name "auter Name "stter Name "ziers>>

ePanelEventWireup%>

3C//DTD XHTM1/DTD/xhtml1

unat "servernerateColumne1">

DeleteButtonTrue" />eld "au lnamlname" />

eld "au fnamfname" />

eld "phone"

eld "addressdress" />eld "city" H

eld "au id"id" />

eld "state"

eld "zip" He

Source1" runectionString[authors] W[authors]

zip]) VALUES"lname], [au"hors] SET [a

@address,

u id" Type "

u lname" Typu fname" Typhone" Type "ddress" Typeity" Type "State" Type "ip" Type "Stu id" Type "

u lname" Typu fname" Typhone" Type "ddress" Typeity" Type "Su id" Type "tate" Type "ip" Type "St

"true" Code

ML 1.0 Trans1 transition

r" AllowPagins "False" D

n "True" Sho

me" HeaderTe

me" HeaderTe

HeaderText

s" HeaderTex

HeaderText "

HeaderText

HeaderText

eaderText "z

nat "server"gs:pubsConneWHERE [au id([au lname],S (@au lname

fname], [ph

au lname] , [city] @

"String" />

pe "String"pe "String""String" />e "String" /String" />"String" />tring" />"String" />

pe "String"pe "String""String" />e "String" /String" />"String" />"String" />tring" />

eFile "Gripd

sitional//ENnal.dtd">

����

ing "True"DataKeyNames

owEditButton

ext "au lnam

ext "au fnam

"phone"

xt "address"

"city" SortE

"au id" Rea

"state"

zip" SortExp

"ectionStringd] @au id" [au fname]

e, @au fname

hone], [addr

@au lname,@city, [stat

/>/>

/>

/>/>

/>

dViewUpdateP

N"

�� '%��;

"au id"

n "True"

me"

me"

Expression "

adOnly "True

pression "zi

g %>"

, [phone], e, @phone,

ress], [city

[au fname]te] @state

Panel.aspx.c

;�� 'T'@

*

city"

"

p" />

],

,

s"

@

www.depurando.com 409

Page 410: ASP .NET Framework 3.5

<html<head

<</hea<body

<<

SortE

/>

SortE

[addr@addr

[au i

@au f[zip]

<<

</bod</htm

l xmlns "httd runat "ser<title></titad>y><form id "fo<div>

<asp:Scr</asp:Sc<asp:Upd<Content<asp:Gri

AlloData<Col

Expression "

Expression "

</Co</asp:Gr</Conten</asp:Up<asp:Sql

ConnDeleInse

ress], [cityress, @city,

Seleid], [state]

Updafname, [phon @zip WHE

<Del

</De<Upd

</Up<Ins

</In</asp:Sq

</div></form>dy>ml>

tp://www.w3.rver">tle>

orm1" runat

riptManagercriptManagerdatePanel IDtTemplate>dView ID "G

owSorting "TaSourceID "Sumns><asp:Comman

ShowSel<asp:BoundF

SortExp<asp:BoundF

SortExp<asp:BoundFphone" /><asp:BoundF

SortExp<asp:BoundF

<asp:BoundFSortExp

<asp:BoundFstate" /><asp:BoundF

olumns>ridView>ntTemplate>pdatePanel>DataSource

nectionStrineteCommand "ertCommand "y], [au id], @au id, @s

ectCommand ", [zip] FROM

ateCommand "ne] @phoneERE [au id]eteParamete<asp:Parame

eleteParametdateParamete<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame

pdateParametertParamete<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame<asp:Parame

nsertParametqlDataSource

org/1999/xht

"server">

ID "ScriptMa>"UpdatePane

ridView1" rurue" AutoGenqlDataSource

dField ShowDectButton "Tield DataFieression "auield DataFieression "auield DataFie

ield DataFieression "addield DataFie

ield DataFieression "auield DataFie

ield DataFie

ID "SqlDataSg "<%$ ConneDELETE FROM INSERT INTO [state], [z

tate, @zip)"SELECT [au lM [authors]"UPDATE [auth, [address] @au id">

rs>ter Name "auers>rs>ter Name "auter Name "auter Name "phter Name "adter Name "citer Name "stter Name "ziter Name "auers>rs>ter Name "auter Name "auter Name "phter Name "adter Name "citer Name "auter Name "stter Name "ziers>>

tml">

anager1" run

el1" runat "

unat "servernerateColumne1">

DeleteButtonTrue" />eld "au lnamlname" />

eld "au fnamfname" />

eld "phone"

eld "addressdress" />eld "city" H

eld "au id"id" />

eld "state"

eld "zip" He

Source1" runectionString[authors] W[authors]

zip]) VALUES"lname], [au"hors] SET [a

@address,

u id" Type "

u lname" Typu fname" Typhone" Type "ddress" Typeity" Type "State" Type "ip" Type "Stu id" Type "

u lname" Typu fname" Typhone" Type "ddress" Typeity" Type "Su id" Type "tate" Type "ip" Type "St

nat "server"

"server">

r" AllowPagins "False" D

n "True" Sho

me" HeaderTe

me" HeaderTe

HeaderText

s" HeaderTex

HeaderText "

HeaderText

HeaderText

eaderText "z

nat "server"gs:pubsConneWHERE [au id([au lname],S (@au lname

fname], [ph

au lname] , [city] @

"String" />

pe "String"pe "String""String" />e "String" /String" />"String" />tring" />"String" />

pe "String"pe "String""String" />e "String" /String" />"String" />"String" />tring" />

����

">

ing "True"DataKeyNames

owEditButton

ext "au lnam

ext "au fnam

"phone"

xt "address"

"city" SortE

"au id" Rea

"state"

zip" SortExp

"ectionStringd] @au id" [au fname]

e, @au fname

hone], [addr

@au lname,@city, [stat

/>/>

/>

/>/>

/>

�� '%��;

"au id"

n "True"

me"

me"

Expression "

adOnly "True

pression "zi

g %>"

, [phone], e, @phone,

ress], [city

[au fname]te] @state

;�� 'T'@

city"

"

p" />

],

,

@

www.depurando.com 410

Page 411: ASP .NET Framework 3.5

PropiChild

Conte

Conte

IsInPa

Rend

Upda

Trigg

Cuande un

iedadrenAsTrigge

entTemplate

entTemplate

artialRender

derMode

ateMode

ers

do necesitamn postback A

ers

e

eContainer

ring

mos saber siAJAX, utilizam

una porciónmos la propie

DescIndiccontrUpdapropcontrestabla procomoUnaapareactuaRecucreadobjecontrIndiccomotieneIndiccomouna eparadefinUpdadefecObtiedel clas qfactibla envalorDefincadaque e

n de la páginaedad IsInAsyn

ripcióna si los postbroles hijos pratePanel. Truiedad es falsroles hijos soblecer esta popiedad Updo Alwayspropiedad teecerá en el Ualicepera el objetdo dinámicamto para añadroles hijo a Ua si el panelo parte de une utilidad para si el conteo una etiqueetiqueta <spla propiedadnidos en la enatePanerRencto es Blockene y estableontrol deterue se actualibles, Alvays yumeración Ur por defectone la coleccióuno represeel panel se aa está siendoncPostBack

����

backs procedrovocarán laue por defectse, los postbaon ignoradospropiedad codateMode es

emplate defiUpdatePanel

to contenedmente. Podedir de formaUpdatePanelestá siendon postback ara creadoresnido del panta de bloquean>. Los valod, Block e InnumeraciñonnderMode. E

ece el modominando lasiza el panel.y CondicionaUpdatePanelo es Alwaysón que desenenta un evenctualice autoo actualizadadel control S

�� '%��;

dentes de loactualizacióto. Cuado laacks de loss. No podemmo false cuastá estableci

ne lo quecuanto éste

or de la planemos usar esprogramada.actualizadoasíncrono. Noweb

nel se actualie <div> o comores factiblesine, sonnl valor por

de actualizas condicionesLos valoresal, provienenUpdateMod

ncadena objento que provomáticamena como resulScriptManag

;�� 'T'@

�són de

osandoda

e se

ntillaste

o

zarámos

cións en

n dede. El

etos,ocateltadoer

@

www.depurando.com 411

Page 412: ASP .NET Framework 3.5

UsoPodeserviddesenAñad

<Trigge

</Trigg

Neceva a sque eservid

Ejem<%@ PInher

<!DOC"http

<html<head

<<p{

}

de Triggemos asociardor. Si un evncadenadoreimos un eve

ers>

<asp:AsyncPO

gers>

sitamos espesuperviar y eel componendor. Tanto C

mploPage Languagrits "Defaul

CTYPE html Pp://www.w3.o

l xmlns "httd runat "ser<title></tit<script runaprotected vo{ Label1.T

}

ersun control Uento registraes pueden deento desenca

OstBackTrigger C

ecificar dos iel nombre dente AsyncPosontrolID com

ge "C#" Autot3" %>

PUBLIC " //Worg/TR/xhtml

tp://www.w3.rver">tle>at "server">oid Button1

Text DateT

UpdatePanelado es desenefinirse de madenador de

ControlID=”DropD

informacioneel evento questBackTriggemo EventNam

EventWireup

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

Click(object

ime.Now.ToSt

l con una enncadenado pmanera declaforma decla

DownLIst1” Event

es para cadae se va a capr puede modme son prop

"true" Code

ML 1.0 Trans1 transition

tml">

t sender, Ev

tring();

umeración dpor un postbaarativa o medarativa utiliza

tNAme=”Selected

a desencadenpturar. Resultdificar tan soiedades strin

eFile "Defau

sitional//ENnal.dtd">

ventArgs e)

����

de eventos deack el paneldiante progrando la secci

dIndexChanged”/

nador: la ID dta imprescinolo eventos dng.

ult3.aspx.cs

N"

�� '%��;

el lado delse actualiza.ramación.ón <Triggers

/>

de control qudible subraydel lado del

"

;�� 'T'@

. Los

s>

ue sear

@

www.depurando.com 412

Page 413: ASP .NET Framework 3.5

</scr

</hea<body

<f<

Enabl

OnCli

<<

</bod</htm

Sobre

Si estáde una� Si estUpdat

<%@ PInher

<!DOC"http

<html<head

<<p{

}</scr

</hea<body

<f<

Enabl

<<

</bod</htm

ript>

ad>y>form id "for<div>

<asp:ScrlePartialRen

</asp:Sc<asp:Upd

<Con

ick "Button1

</Co</asp:Up

</div></form>

dy>ml>

e la propieda

á en Always, nua actualizacióntá en ConditionePanel lo requi

Page Languagrits "Defaul

CTYPE html Pp://www.w3.o

l xmlns "httd runat "ser<title></tit<script runaprotected vo{ Label1.T

}ript>

ad>y>form id "for<div>

<asp:ScrlePartialRen

</asp:Sc<asp:Butt

<asp:Upd<Con

</Co<Tri

</Tr</asp:Up

</div></form>

dy>ml>

rm1" runat "

riptManagerndering "trucriptManagerdatePanel IDntentTemplat<asp:ButtonClick" />

<asp:LabelontentTemplapdatePanel>

ad UpdateM

estro UpdatePade otro Updatenal, nuestro Updieran.

ge "C#" Autot3" %>

PUBLIC " //Worg/TR/xhtml

tp://www.w3.rver">tle>at "server">oid Button1

Text DateT

rm1" runat "

riptManagerndering "trucriptManagerton ID "Butt

datePanel IDntentTemplat<asp:Label

ontentTemplaggers><asp:AsyncP

riggers>pdatePanel>

server">

ID "ScriptMae">>"UpdatePane

e>ID "Button1

ID "Label1"te>

ode:

anel se actualizePanel.datePanel sólo

EventWireup

3C//DTD XHTM1/DTD/xhtml1

org/1999/xht

Click(object

ime.Now.ToSt

server">

ID "ScriptMae">>on1" runat "

"UpdatePanee>ID "Label1"te>

ostBackTrigg

anager1" run

el1" runat "

1" runat "se

runat "serv

zará siempre qu

se actualizará c

"true" Code

ML 1.0 Trans1 transition

tml">

t sender, Ev

tring();

anager1" run

"server" Tex

el1" runat "

runat "serv

ger ControlI

nat "server"

"server" Upd

erver" Text

ver" Text ""

ue haga un Page

cuando los elem

eFile "Copia

sitional//ENnal.dtd">

ventArgs e)

nat "server"

xt "Button"

"server" Upd

ver" Text ""

ID "Button1"

����

"

dateMode "Co

"Button"

"></asp:Labe

eLoad, por ejem

mentos de dent

a de Default

N"

"

OnClick "Bu

dateMode "Co

"></asp:Labe

" EventName

�� '%��;

onditional">

el>

mplo a consecu

tro de nuestro

t3.aspx.cs"

utton1 Click

onditional">

el>

"Click" />

;�� 'T'@

encia

" />

@

www.depurando.com 413

Page 414: ASP .NET Framework 3.5

ConEstá dcontrquizáposibactua

PropiAssoc

Dyna

Progr

Un coEstabespecpáginpágin

Cuanconcradecuexiste

Si quedesar

El fraespercon pimplemarc

ConEL coWinden lacomoperió

ntrol Upddesignado paroles Updateás queramosble, desplazaalizarse. Pode

iedadciateUpdate

amicLayout

ressTemplat

ontrol Updatblecemos el ecifica ningúnna. La interfana se actualiz

do está estareto y reutiliuadamente.entes se des

eremos reserrolle ningun

mework ASPra que el panprogramacióemente la intado del cont

ntrol Timontrol Timer edows.set.Timpropiedad Ino un desencaódicamente.

datePrograra aportar cePanel estánencontrar erlo programáemos utilizar

ePanelID

te

teProgress penlace a travn panel Actuaaz de usuarioza. Sin emba

blecido comza su espacioCuando el vplazan para

ervar espaciona operación

P.NET AJAX vnel se actualn. En el seguterfaz ITemptrol de progr

meres el homólo

meout. EL connterval. El poadenador de

resscualquier tipsiendo actual lugar adecuándolo en elr hojas de es

uede ser enlvés de la proalizable, el coo de la barrargo, inicialm

mo ninguno, eo en la páginalor de un athacer sitio a

o para el contn, tan solo es

visualiza el coice. Podemoundo caso, asplate. Para lareso como se

ogo del servintrol Timer posback desenun panel act

o de feedbaalizados. Si tuado en la pásitio adecua

stilo y posicio

DescObtieUpdacontrIndicdinámpordIndicpostespe

azado a un cpiedad stringontrol de prode progreso

mente está oc

el atributo CSna para que otributo displlos nuevos.

trol de progrtablecemos

ontenido deos especificarsignamos a laa segunda site muestra en

dor de un cliprovoca un pncadena untualizable, p

ck al navegatenemos panágina para eado con responal el contr

ripciónene y estableatePanel conrola si la plantimicamente eefectoa la plantillaback asíncrocificado en lacontrol Updag Associatedogreso aparese inserta e

culta por el a

SS display nootros elemenay es modifi

reso y dejarlola propiedad

la propiedadr la plantilla ta propiedaduación, poden el código:

iente creadoostback cadaevento Tick.odemos actu

����

dor mientraneles múltipll control depecto al paneol donde qu

ece la ID deln la que está

lla de progreen la página.

visualizadano que tardaa propiedadatePanel condUpdatePaneece para cuan la página datributo CSS

o muestra unntos puedancado, los ele

o en blancod DynamicLa

d ProgressTetanto de formcualquier obemos especi

o utilizando ea segundo qUtilizando eualizar el con

�� '%��;

s uno o máses en una páprogreso o, sel que va aeramos.

controlasociado es

eso se actualEstá a true

durante una más del tieDisplayAfter

ncreto.elID.Si no selquier paneldel host cuandisplay

n elemento Hdesplazarse

ementos

cuando no syout como f

emplate miema declaratibjeto queficar fácilme

el métodoue se especiel temporizadntenido del p

;�� 'T'@

ágina,si es

te

iza

empor

en lando la

HTMLe

efalse.

ntrasva o

ente el

ficadorpanel

@

www.depurando.com 414

Page 415: ASP .NET Framework 3.5

InstSe dehttp:/

CreammáquLa rutContr

�DescFram

�CopiToolkToolk

�Abri

�Haceuna nContr

�Haceelemque e

Tras rcontr

El ASprogrcontrASP.Nde ejeque e

Vamoentidun co

Se traprogrson 1

Estos

talar AJAescarga de//www.code

mos, dentrouina,una carpta completarol Toolkit".

comprimir elework3.5.zip

iar los archivkit\SampleWkit\Binaries".

r Visual Stud

er clic derechnueva pestañrol Toolkit".

er clic derechentos" paraestá en la rut

realizar todaroles del Ajax

P.NET AJAX Cramadores yroles Web y eNET AJAX sinemplos de ues totalment

os a distinguad por sí misontrol Web e

ata de una seramador, ha100% AJAX y

s controles va

AX Contro

eplex.com/Aj

de la carpetpeta para coresultante p

archivo quep sobre la ru

vos contenidoWebSite\Bin",.

dio 2008 y cre

ho en el Cuadña; como no

ho sobre la pañadirle losta "C:\Progra

as estas operx Control Too

Control Tooly Microsoft. Eextendedoren más que unso, así comoe gratuito.

ir entre contsmos, mientexistente.

erie de pequutilizado o dusarlos no e

an desde un

ol Toolkit

jaxControlTo

a "Programontener los apodría ser, po

e contiene esta menciona

os en la ruta, dentro de e

ear un nuevo

dro de herrambre podem

pestaña reciécontroles deam Files\Ajax

raciones, ya tolkit en nues

kit nace comEstá desarroes con los qun arrastre deo del propio c

troles Web yras que los s

ueñas funciondeseado paraexige conocim

simple botó

t

oolkit/Releas

Files" o "Arcrchivos del por ejemplo, l

ste conjuntoada en el pun

"C:\Programesta otra ruta

o proyecto W

amientas, y smos utilizar e

én creada y eel Toolkit, ubx Control Too

tendríamos tstras aplicac

mo un proyecllado en basue podremosratón. Del mcódigo fuent

y extendedorsegundos ún

nalidades qua sus Webs.miento algun

ón con una a

se/ProjectRe

hivos de Propaquete de cla siguiente:

de controlento anterior.

m Files\Ajaxa: "C:\Progra

Web.

eleccionar lael mismo del

elegir la opcibicados en laolkit\Binarie

todo lo neceiones Web.

cto conjuntoe a ASP.NETs utilizar las amismo modote de los con

res, donde loicamente añ

ue cualquier wLa diferenciano sobre AJA

lerta asociad

����

eleases.aspx?

ograma" de ncontroles."C:\Program

s: AjaxContr

Controlam Files\Ajax

a opción "Adpaquete de

ón "Chooselibrería Ajax

es".

sario para ut

entre la comAJAX y contiavanzadas ca, con su desctroles. Y lo m

os primeros taden un com

webmaster,a ahora es quAX, javascript

da, hasta un

�� '%��;

?ReleaseId=1

nuestra

m Files\Ajax

olToolkit�

x Control

dd Tab" paracontroles: "A

Items" 0 "ElexControlToo

tilizar los

munidad deiene una seraracterísticascarga disponmejor de tod

tienen unamportamient

en su historue los ejempt o XML.

complejo pa

;�� 'T'@

11121

crearAjax

egirlkit.dll

ie des denemoso es

te a

ia deplos

anel

@

www.depurando.com 415

Page 416: ASP .NET Framework 3.5

que pentreWeb

10.1

DescEl conserá vdefinde m

Prop9 pro• Seletiene• Heacabecaplicadefin• Fadcaso false• Traconsi• Fratrans

podemos arre el cliente ysea mucho m

1.� Accord

cripciónntrol Web Acvisible en ca

nir la cabeceodo que el A

piedadesopiedades deectedIndex:

e como índiceaderCssClassceras/contenará por defe

nir individualdeTransitionsde ser false.

ansitionDuratgue un efectmesPerSecoiciones. Sue

rastrar por lael servidor smás atractiva

dion

ccordion te pada momentora (Header)

AccordionPan

efinen al AccDefine el Ace 0. Es opcios / ContentCnidos (Heade

ecto a todos lmente comos: en caso dela transición

tion: cantidato muy agradnd: númerole ser suficie

a pantalla; ensin ningún tipa y simpática

permite ubico. Dichos pany el contenidne activo se

ordion: ccordionPaneonal y por dessClass: Idener/content).los Accordio

o atributo dee ser true sen se realizará

ad de milisegdeble con trade frames pente un núm

n ambos casopo de recarga al usuario a

car múltiplesneles son losdo (Content)mantendrá v

e que estaráefecto vale 0ntifica el nom Si se define

onPane de que cada Accor aplicacará uá de modo n

gundos que dansición de uor segundo qero superior

os, mandanda de página.a la par que

s paneles, des AccordionP). El estado dvisible a trav

activo por d0.mbre de la ce como atribue esté comprdionPane. un efecto deormal. Es op

definen la duunos 200-300que se usarár a 40.

����

do y recogienSu uso harápotente y ef

e modo que Pane, de los del Accordiovés de los po

defecto, don

lase CSS utiluto del Accopuesto. Tam

e fading en laptativo y por

uración de un0 milisegund en la anima

�� '%��;

ndo informacque nuestra

fectiva.

únicamenteque debemo

on es guardadostbacks.

nde el primer

lizada para lordion, la clabién se pued

a transición,r defecto val

na transicióndos. ación de las

;�� 'T'@

!cióna

unoosdo,

ro

as ase se de

en le

n. Se

@

www.depurando.com 416

Page 417: ASP .NET Framework 3.5

• Auto Nonreseño LimAccorscrollcambo Fillminim• Hea• Con• Datque l• Datdatos• Dat

Ejem<%@Inher<%@TagP

<!DOC"http

<htm<head<title<style.acco{bordebackgfont-font-font-wpaddmargcurso}

.acco{font-backgbordebordefont-padd

toSize: definne: No tieneñar que estomit: como márdion es másl para ajustabios. : el Accordiomizando el cader: es unantent: es unataSource: Ellamar a DatataSourceID: s.taMember: e

mploPage Languarits="AccordiRegister Asserefix="ajaxT

CTYPE html://www.w3.

l xmlns="httd runat="serve>Accordion<e>ordionCabece

er: 1px solidground-colorfamily: Arialsize: 14px; weight: bolding: 4px; in-top: 4px;

or: pointer;

ordionConten

family: Sansground-colorer: 1px solider-top: nonesize: 12px; ing: 7px;

e la restriccninguna respuede impli

áximo, el Accs alto de lo qarse al límite

on siempre montenido enpropiedad d

a propiedadDataSourceaBind(). Alternativa

el miembro a

age="C#" Auton ACT Accembly="Ajaxoolkit" %>

PUBLIC "-//W.org/TR/xht

tp://www.wver"> </title>

era

black;r: #ffd800; l, Sans-Serif;

d;

nido

-Serif;r: #fff8ab; black;

e;

ción en la alttricción. Laicar que otrocordion medque marque se. En caso de

medirá lo quebase a las n

del Accordiondel Accordioa aplicar (to

amente, pode

a enlazar cua

oEventWireucordion" %> xControlTool

W3C//DTD Xml1/DTD/xh

3.org/1999/

;

tura del Accoaltura del Ac

os elementosdirá lo que msu Height, ae ser menor a

e marqué sunecesidades.nPane y defionPane y defotalmente op

er asignar el

ando se usa e

up="true" Co

kit" Namespa

XHTML 1.0 Trhtml1-transit

xhtml" >

ordion. Puedccordion nos de la mism

marque la prol AccordionPa ese límite

propiedad H

ine el valor dfine el valorptativo). Par

identificado

el DataSourc

deFile="ACT

ace="AjaxCo

ransitional//tional.dtd">

����

de tomar trestiene límitea Web sean opiedad HeigPane activo sel Accordion

Height, expa

de su cabecede su conte

ra una correc

or de nuestra

ceID.

-Accordion.a

ontrolToolkit

/EN"

�� '%��;

s valores: . Es importamovidos.

ght. Si el se le añadirán no sufre

andiendo o

era. nido. cta aplicació

a fuente de

aspx.cs"

"

;�� 'T'@

"ante

á un

ón hay

@

www.depurando.com 417

Page 418: ASP .NET Framework 3.5

}</sty

</hea<body<form<div>

<asp:

<ajaxFadeTFramWidthTransHeadConte<Pane<ajax<Hea<Con</aja<ajax<Hea<Con</aja<ajax<Hea<Con</aja</Pan</aja

</div</for</bod</htm

yle>

ad>y>

m id="form1">

:ScriptManag

xToolkit:AccoTransitions=esPerSecondh="250px" sitionDuratioerCssClass="entCssClass=es>xToolkit:Accoder>Panel 1tent>ContenaxToolkit:AccxToolkit:Accoder>Panel 2tent>ContenaxToolkit:AccxToolkit:Accoder>Panel 3tent>ContenaxToolkit:Accnes>axToolkit:Acc

v>rm> dy>ml>

runat="serv

ger id="Script

ordion ID="A"True"d="50"

on="200" "accordionCa="accordionC

ordionPane I</Header>

nido 1</ContcordionPaneordionPane r</Header>

nido 2</ContcordionPaneordionPane r</Header>

nido 3</ContcordionPane

cordion>

ver">

tManager" ru

Accordion1" r

abecera"ontenido">

ID="Accordio

tent>e>runat="serve

tent>e>runat="serve

tent>e>

unat="server"

runat="server

onPane1" run

er">

er">

" />

r"

nat="server">

����

>

�� '%��;;�� 'T'@

)

@

www.depurando.com 418

Page 419: ASP .NET Framework 3.5

Al tracompnuestcorre

Sin emincluidesde

Ademconte

En elestem

atarse de nuepleto. El mottra caja de hespondiente.

mbargo, lo qir una referee nuestra caj

más, y como enido.

resto de ejemos trabajan

estro primertivo es que therramientas

que no se haencia al Scripja de herram

es obvio, de

emplos, no mndo.

r ejemplo, heengamos ens, automátic

rá automáticptManager, lmientas.

eberán defini

mostraremos

emos mostracuenta que

camente que

camente, y dlo que no req

irse las clase

s más que el

ado todo el cal arrastrardará registra

debemos hacquiere más q

es CSS tanto

código espe

����

código de lael control Acado el Assem

cerlo nosotroque otro senc

de la cabece

cífico del co

�� '%��;

página al ccordion des

mbly

os siempre, ecillo arrastre

era como de

ontrol en el q

;�� 'T'@

�*

sde

ese

l

que

@

www.depurando.com 419

Page 420: ASP .NET Framework 3.5

10.2

DescEl Alwsimplpágindereccuand

Prop• Tarposic• Horuna ppixelsdefec• Verpropi• Verel Ve• Scroque eser m

2.� Always

cripciónwaysVisibleCles. Su funciona. Un ejempcha de nuestdo se haga sc

piedadesrgetControlIDción que deterizontalSide:propiedad ops desde el obcto vale 0 pxrticalSide: ubiedad optativrticalOffset:erticalSide. EollEffectDurel control se

mayor que ce

sVisibleCo

Control es unonalidad conplo sería el qtra página, ycroll sobre la

D: ID del conerminemos. ubicación h

ptativa que pbjeto hasta ex.bicación vertva que por ddistancia ve

Es optativo yation: defineposiciona do

ero.

ontrol

no de los connsiste en dejque cierto my que se mana página.

ntrol que queHabitualmen

horizontal (dpor defecto vel lado que d

tical (arribadefecto valeertical en pix

por defectoe la cantidadonde definam

ntroles Web djar clavado eensaje se m

ntenga en la

eremos que ente suele traerecha o izqvale left. Hodefinamos en

o abajo) dontop.

xels desde elo vale 0 px. d de segundomos. Por def

del ASP.NETel contenidouestre siempmisma posic

el AlwaysVisiatarse de unquierda) dondorizontalOffsn el Horizont

nde se clava

l objeto hast

os entre quefecto vale 0.

����

AJAX Controen un punto

pre en la parción de la pa

ibleControl c“Panel”. de se clavaráet: distanciatalSide. Es o

ará el control

ta el lado qu

la página ha1 segundos y

�� '%��;

ol Toolkit máo específico rte inferior antalla del us

clave en la

á el control.a horizontal optativo y po

l. Es una

ue definamos

ace scroll hay siempre de

;�� 'T'@

ásde la

suario

Es en

or

s en

asta ebe

@

www.depurando.com 420

Page 421: ASP .NET Framework 3.5

Ejem<asp:de m</asp<ajaxTargeVertiVertiHorizHorizScrol</aja

10.3

DescCon eminima cerdebe

El estpermquereperm

Prop• Tar• Colpone• Exp• Colcollap• Scrosobreningú• ExpComominim• Texconte• Colcontr• Expcontr• Imaque despec

mplo:Panel ID="Paensajep:Panel>xToolkit:AlwetControlID=calSide="BotcalOffset="1

zontalSide="RzontalOffset=lEffectDurataxToolkit:Alw

3.� Collaps

cripciónel Collapsiblemizado a nuerrarse y abrirremos hacer

tado del conmanecerá iguaemos que el

mitimos que s

piedadesrgetControlIDlapsedSize: rlo a 0, de m

pandedSize: lapsed: espepsed (cerradoll Contentsepaso al espeún efecto, lopandControlIo vemos podemice. HabituxtLabelID: elenido (ver lalapsedText:rolador estépandedText:rolador estéageControlIDdescriba el ecificado un t

anel1" runat=

aysVisibleCo"Panel1"

ttom" 0"Right"="10" tion="0.0001"waysVisibleC

siblePane

ePanel conseestro antojo.rse (por ejemr clic para ce

ntenido (abieal cuando recontenido te

se dimension

D: el ID del cel tamaño e

modo que queel tamaño eecifica el estdo) o expand: si especificecificado eno pondremosD/CollapseCemos elegir

ualmente aml ID de la Labas dos próxim

texto que secerrado. texto que seabierto.

D: En lugar deestado en quetexto, éste se

="server" He

ontrolExtend

">ControlExtend

el

eguiremos qu. Distinguiremplo un Paneerrar y/o abr

erto o cerradecarguemos uenga una alt

ne como requ

control Webn pixels del eda totalmen pixels del tado del conted (abierto)

camos true, CollapsedSiza false.

ControlID: elun controlad

mbos atributobel donde semas propiedae mostrará e

e mostrará e

e un texto, pe se encuente correspond

ight="50px" W

er ID="Alway

der>

ue cualquiermos entre elel) y el contrrir el conten

do) es guardauna página. Atura y/o anchuiera.

correspondiecontenido cunte cerrado.contenido cutenido cuand.se añadirá uze y Expande

ID del contrdor que maxos apuntan ae especificaráades).en la Label e

en la Label e

podemos esptra el contenderá con el t

Width="125p

ysVisibleCont

r control ASPl contenido,rolador, queido.

ado a lo largoAdemás, podhura determ

ente al conteuando está c.uando esté ado se iniciali

una barra deedSize. Si no

rol Web correimice el conl mismo contá el estado e

especificada

especificada

pecificar unanido. Si ademtexto alterna

����

px">

trolExtender

P.NET puedaque será el será el cont

o de los postdemos espec

minadas, o po

enido.cerrado. Lo h

abierto. iza la página

scroll cuando queremos q

espondiendontenido y otrtrolador. en que se en

en TextLabe

en TextLabe

a imagen parmás tambiénativo de la im

�� '%��;

r1" runat="se

ser maximizcontrol que

trol sobre el

tbacks, por lcificar si or el contrari

habitual es

a. Puede ser

do el tamañoque se produ

o al controlado que lo

cuentra el

elId cuando e

elId cuando e

ra que sea és hemos

magen (el

;�� 'T'@

��

erver"

zado o vaya que

lo que

io

ouzca

dor.

el

el

sta la

@

www.depurando.com 421

Page 422: ASP .NET Framework 3.5

atribu• Colminim• Expmaxim• Expa der

Ejem<asp:<asp:Este eque sel est</asp

<ajaxTargeCollaExpanCollaExpanCollaTextLCollaExpanExpan</aja

10.4

DescCon eLinkBmuesejecu

Prop• Tar• Condesea

EjemMostrventa<asp:<ajaxTargeConfi</aja

uto “alt”). lapsedImage

mizado. pandedImagemizado. pandDirectiorecha. En el

mplo:Label ID="La:Panel ID="Paes el contense correspontado.p:Panel>

xToolkit:ColletControlID=psedSize="0"ndedSize="30psed="True"ndControlID=pseControlIDLabelID="LabpsedText="AndedText="CndDirection=axToolkit:Co

4.� Confirm

cripciónel ConfirmBuButton o Hypstre una ventute o no el e

piedadesrgetControlIDnfirmText: tea ejecutar…?

mploraremos un bana de confir:Button ID="BxToolkit:ConetControlID=irmText="¿ReaxToolkit:Co

e: Path que a

e: Path que a

n: podemosprimer caso

abel1" runat=anel1" runat=ido que seráde con el tex

lapsiblePane"Panel1""00"

="Label1" D="Label1"bel1" Abrir conteniCerrar conten="Vertical"/>llapsiblePan

mButton

utton consegperlink, de mtana de conf

evento asocia

D: ID del conexto que se ?”

botón que sermación elegButton1" runfirmButtonE"Button1" ealmente denfirmButton

apunta a la i

apunta a la i

definir que easignaremos

="server" Tex="server" Widá abierto o cexto de arriba

lExtender ID

do"nido"

elExtender>

uimos una semodo que cuafirmación. Enado al contro

ntrol al que amostrará al

e ocupará degiremos si reat="server" Txtender ID="

sea recargarExtender>

magen que s

magen que s

el contenidos “Vertical”

xt="Label" Csdth="120px">errado media. Éste a su v

D="Collapsibl

encilla funciando se hagan ésta deberol en cuestió

aplicaremos presionar so

e recargar laealmente desText="Recarg"ConfirmButt

r la página?"

se mostrará

se mostrará

o se abra de y en el segu

ssClass="CP">>ante el contvez describir

ePanelExten

onalidad. Loa clic sobre éremos elegirón.

el efecto elobre el contro

página. Cuaseamos recagar página" /tonExtender

/>

����

cuando el co

cuando el co

arriba a abando “Horizo

></asp:Labe

trolador, rá

nder1" runat=

o asignaremoéste, el nave“sí” o “no”

ConfirmButtol. Por ejem

ando se nos mrgarla o no./>2" runat="se

�� '%��;

ontenido est

ontenido est

ajo o de izquntal”.

el>

="server"

os a un Buttoegador nos para que se

ton.mplo “¿Realm

muestre la

rver"

;�� 'T'@

��é

ierda

on,

mente

@

www.depurando.com 422

Page 423: ASP .NET Framework 3.5

10.5

DescEl Drajavasuna m

Se appodeconteel co

Prop• Tar• Dra

Ejem<asp:<asp:Font-Arrás</asp<asp:BordeEste e</asp</asp

<ajaxDragH</aja

<scrip// Pefunctdocumdocum}setBo$add</scr

10.6

DescUn secomoejem

5.� DragPa

cripciónagPanel seríascript requermayor flexibi

plica a cualqr arrastrarloenido, dondentenido.

piedadesrgetControlIDagHandleID: e

mplo:Panel ID="Pa:Panel ID="Pa-Bold="true"stramep:Panel>:Panel ID="PaerWidth="1">es el contenp:Panel>p:Panel>

xToolkit:DragHandleID="PaaxToolkit:Dra

pt type="texequeño scription setBodyHment.body.sment.body.s

odyHeightToCHandler(winript>

6.� DropD

cripciónencillo controo resultar seplo, imagine

anel

a el ejemploriría decenasilidad.

uier controlo a cualquiere el controla

D: el ID del cel ID del con

anel3" runat=anel1" runat=BorderColor

anel2" runat=>ido que vam

gPanelExtenanel1" TargeagPanelExte

xt/javascriptt para una cHeightToConstyle.heightscrollHeight)

ContentHeigdow, "resize

own

ol que le damuy útil. Co

emos que ten

o perfecto des de líneas de

Web (el másparte de lador es sobre

control correntrol corresp

="server" He="server" Widr="black" Bor

="server" He

mos a poder a

der ID="DragetControlID="nder>

">correcta comntentHeight(= Math.max(+"px";

ght();e", setBodyHe

un aspecto onsiste en hanemos dos p

e cómo conse programac

s habitual espantalla. Va

e lo que debe

espondiente ondiente al

ight="50px" Wdth="125px"derWidth="1

ight="250px"

arrastrar por

gPanelExtend"Panel3">

mpatibilidad c) { (document.d

eightToCont

muy avanzadacer aparentaneles y que

eguir una fución, con ape

s el Panel) yamos a distineremos hace

al contenidocontrolador.

Width="125pBackColor="">

" Width="125

r toda la pan

der1" runat=

con todos los

documentEle

entHeight);

do y profesiotar un DropDe al hacer cli

����

ncionalidadenas dos líne

le añade la nguir entre eer clic y arras

o..

px"> "Yellow"

5px" BorderC

talla.

"server"

s navegadore

ement.scrollH

onal a nuestrown donde nick sobre uno

�� '%��;

avanzada, qeas de código

funcionalidael controladostrar para m

olor="black"

es.

Height,

ra página, asno lo hay. Poo queremos

;�� 'T'@

��

que en o y

ad de or y el over

síorque

@

www.depurando.com 423

Page 424: ASP .NET Framework 3.5

apare(en la

Prop• TarPane• Dro

Ejem<asp:Size=<asp:familAquíPor e

<br /<br /

<asp:CellPForeC<Sele<Tod<Sele<Wee<Othe<Nex<DayH<Title</asp

<br /

Si pus</asp<ajaxDropD

10.7

DescEl Dro- Aña- Cre

Por csenci

ezca el seguna imagen lo v

piedadesrgetControlIDl, pero pued

opDownContr

mplos:Label ID="Te="11px" Style:Panel ID="Drly:Tahoma; fpuede haber

ejemplo, pon

>>

:Calendar ID=Padding="4" DColor="BlackectedDayStylayDayStyle B

ectorStyle BaekendDayStyerMonthDayStPrevStyle VHeaderStyleeStyle BackCp:Calendar>

>

siéramos el cp:Panel>xToolkit:DropDownContro

7.� DropSh

cripciónopShadow ex

ade una somba un efecto

consiguiente,lla.

ndo panel deveremos mej

D: ID del cone ser cualqurolID: El Id d

extLabel" run="display: blropPanel" rufont-size: 11r cualquier cngamos un Ca

="Calendar1"DayNameForm" Height="18le BackColorBackColor="#ackColor="#Cyle BackColorStyle ForeCo

VerticalAlign=BackColor="

Color="#9999

calendarios s

pDownExtenlID="DropPan

hadow

xtiende al cobra, permitiéde redondea

, conseguimo

el mismo mojor.

ntrol sobre eluier cosa. el Panel que

nat="server"lock; width:nat="server"px; padding

control: imágalendario:

" runat="servmat="Shorte

80px" Width=="#666666" F

#CCCCCC" FoCCCCCC" /> r="#FFFFCC"olor="#808080="Bottom" />"#CCCCCC" F

999" BorderCo

sobre un Upd

der runat="snel" />

ontrol Paneléndonos defiado del Pane

os dos efecto

odo que apar

l que aplicar

e será mostra

Text="Ponte300px; padd

" Style="displ:5px;"> genes, MultiV

ver" BackColost" Font-Nam"200px"> Font-Bold="ToreColor="Bla

/>0" /> >Font-Bold="Tolor="Black"

datePanel...

server" ID="D

con dos carainir tanto su

el.

os muy profe

rece el conte

remos los efe

ado como un

e sobre mí" Fding:2px; padlay:none;visi

Views... lo q

or="White" Bmes="Verdan

True" ForeCoack" />

rue" Font-SizFont-Bold="T

podríamos

DDE" TargetC

acterísticas profundidad

esionales de

����

enido de una

ectos. Norma

na lista desp

Font-Names=dding-right:ibility:hidde

que queráis!!

BorderColor=a" Font-Size=

lor="White"

ze="7pt" /> True" />

hacer marav

ontrolID="Te

muy interesad como su os

forma treme

�� '%��;

a lista desple

almente será

legable.

="Tahoma" Fo50px;" /> n; font-

!<br />

="#999999" ="8pt"

/>

villas ;)

extLabel"

antes:scuridad.

endamente

;�� 'T'@

��egable

á un

ont-

@

www.depurando.com 424

Page 425: ASP .NET Framework 3.5

Prop• Tar• Wid5.• Opacorrevalor• Trao si v• Roua fals

Ejem<asp:<div sEn esEl efe</div</asp

<ajaxOpacWidthTargeRoun</aja

10.8El Filpermcomb- Num- Low- Upp- Cus

piedadesrgetControlIDdth: profund

acity: valor desponde a trar por defectoackPosition: lva a poder seunded: Si quese.

mplo:Panel ID="Pastyle="paddiste panel podecto de sombv>p:Panel>

xToolkit:Dropity="1" h="5" etControlID=ded="true">axToolkit:Dro

8.� FiltereteredTextBo

mitimos que ebinaciones: mbers: todoswercaseLettepercaseLettetom: los car

D: ID del Panidad en pixe

decimal en tansparenciao es 0.5. lo pondremoer movido. Eeremos un e

anel1" runat=ng:5px"> demos ponerbreado + bor

pShadowExte

"Panel1"

opShadowEx

dTextBoxox extiende aescriba el usu

s los númerosers: letras miers: letras maacteres que

nel sobre el qels de la som

tre 0 y 1 quetotal y 1.0 a

os a true si nn caso contr

efecto de red

="server" Wid

r lo que querrdeado es m

ender ID="Dr

tender>

xal TextBox duario. Elegir

sinúsculas.ayúsculas.definamos.

que aplicarembra. Es un p

e define la opa completam

uestro panerario pondremdondeado lo

dth="125px"

ramos. uy agradable

ropShadowEx

e modo queremos entre

mos los efecarámetro op

pacidad de lamente opaco.

l lo hemos dmos false (opondremos a

BackColor="

e a la vista.

xtender1" ru

podemos deestas config

����

ctos.pcional que p

a sombra, do También es

efinido con no ponemosa true, sino,

"Yellow" Font

nat="server"

efinir qué tipuraciones y s

�� '%��;

por defecto v

onde el 0 s opcional y s

posición abss nada). vale con po

t-Names="Ar

po de caractesus múltiple

;�� 'T'@

��

vale

su

soluta

onerlo

rial">

eres s

@

www.depurando.com 425

Page 426: ASP .NET Framework 3.5

Prop• Tar• Filtsepar• Valstring

EjemEn nuy los

<asp:<ajaxTargeFilterValid</aja

10.9

DescEl Hocuerpweb ppodecausa

Prop• Tar• Pop• Hov• PopLeft,• Offhoriz• Pophasta

EjemEn nuque casign

<asp:<asp:HeighBackCSi pre

piedadesrgetControlIDterType: Tiporándolos en cidChars: sólog con los car

mplouestro ejempsignos mate

:TextBox ID=xToolkit:FilteetControlID=rType="NumbChars="+-*/"

axToolkit:Fil

9.� HoverM

cripciónoverMenu es po y el popuppopup aparemos aplicar ante de que

piedadesrgetControlIDpupControlIDverCssClass:pupPostion: ly sus otros v

fsetX/OffsetYontal o en ve

pDelay: la caa que aparez

mplouestro ejempcuando el usarle cualquie

:Button ID="B:Panel ID="Paht="50px" WiColor="Yellowesionas sobre

D: ID del Texo de filtro decomas. o se le hará racteres que

plo vamos a máticos ‘+’,

="TextBox1" reredTextBox"TextBox1"bers,Custom" >teredTextBo

Menu

un extendedp, de modo qezca en el luguna clase CSaparezca el

D: ID del conD: ID del contclase CSS qulugar dondevalores son RY: una vez deertical con r

antidad de mzca el popup.

plo, el cuerpuario vaya aer propiedad

Button1" runanel1" runat=dth="125px"w" BorderWie el botón, s

xtBox sobre ee entre los q

caso si hemoconsiderare

permitir que ‘-‘, ‘*’ y ‘/’

runat="servexExtender ID

"

oxExtender>

dor aplicableque cuando gar en que hSS al controlpopup.

ntrol identifictrol identificue se aplicaraparecerá e

Right, Bottomefinido el Porespecto a su

milisegundos. Por defecto

po se corresp hacer clic sd al Panel):

at="server" T="server"

dth="1px" Scse recargará

el que vamosque hemos de

os elegido a emos válidos.

e en nuestro’.

er"></asp:Tex="FilteredTe

e a cualquierel ratón pase

hayamos espeweb cuerpo

cado como ccado como prá al cuerpo el popup conm y Center.opupPositionu posición reque pasaráno son 100.

ponde con unobre el botó

Text="Haz cl

crollBars="Aula página.

s a actuar. efinido prev

“Custom” co.

TextBox se

xtBox>extBoxExtend

r control Webe sobre el coecificado. Ad

o, haciendo v

cuerpo.opup.cuando paserespecto al

n, podemos aelativa. entre que n

n botón y el pón, se muest

lic" />

uto">

����

iamente. Lo

omo FilterTy

escriban úni

der1" runat="

b. Vamos a dontrol web cdemás, cuanver al usuario

emos el ratóncuerpo. Por

añadir o quit

nos posemos

popup con ure un mensa

�� '%��;

s combinare

ype. Será un

camente nú

"server"

distinguir encuerpo, el condo esto suceo que es el

n sobre éster defecto val

ar pixels en

sobre el cue

n Panel, deaje (Podemos

;�� 'T'@

�!

mos

meros

tre el ontrol eda,

.e

erpo

modos

@

www.depurando.com 426

Page 427: ASP .NET Framework 3.5

</asp

<ajaxPopuTargePopuOffse</aja

10.1

DescEl Moéste,de laneces

Imagipáginapellde elestabjavas

Distinapellel for

Prop• Tar• Pop• Bacefect• Dronuest• OkC• OnO• OkC• Om

p:Panel>

xToolkit:HovpControlID="etControlID=pPosition="R

etX="10">axToolkit:Ho

10.� Moda

cripciónodalPopup es conseguimopágina. Pod

sidad de sali

inemos que ena se oscurecidos... todoementos de

ba antes- y rescript que ha

nguiremos enidos”, y el prmulario de e

piedadesrgetControlIDpupControlIDckgroundCssCto de oscuridopShadow: letro control pControlID: elOkScript: noCancelID - Th

mCancelScript

verMenuExten"Panel1""Button1"

Right"

overMenuExte

adPopUp

s otro ejempos el efecto ddemos emulair de la págin

el usuario prce y apareceello sin salirésta. Así puellenar sus dayamos defin

ntre el activapopup, que eentrada de d

D: ID del conD: ID del contClass: clase Cdad a los elee daremos elpopup.l ID del elemmbre del scrhe ID of thet - Script to

nder ID="Hov

ender>

plo de potentde mostrar car el efecto dna en que es

resiona el boe en el centrr de la págines, el usuari

datos y presionido.

ador, que enen nuestro ejdatos del usu

ntrol activadotrol popup. TCSS que se amentos sobrl valor de tru

mento que prript que se aelement tharun when th

verMenuExte

te funcionalicontenido dedel famoso “stamos ni de

otón “Dime to un cuadroa en que estio puede eleonar OK, act

n nuestro ejejemplo se couario.

or. TípicameTípicamente

aplicará al fore los que noue si querem

oduce el efeactivará cuanat cancels thhe modal pop

ender1" runa

idad en muyeshabilitando“window.opeabrir una nu

tu nombre ydonde se pid

tamos y sin pgir entre cantivando una

emplo es el borresponde co

ente será une será un Panondo de panto vamos a pomos que se añ

ecto de OK dndo presionee modal pop

pup is dismis

����

t="server"

pocas líneaso la interaccien(...)” de jaueva ventana

apellidos”, dde el nombrepoder hacer ncelar -parallamada a un

botón “Dimeon el panel q

Button o unnel.talla, por ejeder interactñada un efec

e nuestro poemos sobre Opupssed with the

�� '%��;

s de código.ión con el reavascript sina del navega

de repente le y los nada con elvolver dond

na función

e tu nombreque nos mos

LinkButton.

emplo para duar.

cto de sombr

opup.OK.

e CancelCont

;�� 'T'@

�"

Conesto

ador.

a

resto e

ytrará

.

dar un

ra a

trolID

@

www.depurando.com 427

Page 428: ASP .NET Framework 3.5

EjemEn nu(popuEn nu

<asp:

<asp:Venta<br /<asp:<asp:</asp

<ajaxCanceOkCoOnCaOnOkPopuTarge</aja

<scripfunct{alert}

funct{alert}</scr

mplouestro ejempup). Desde éuestro ejemp

:Button ID="B

:Panel ID="Paana emergen>:Button ID="B:Button ID="Bp:Panel>

xToolkit:ModelControlID=

ontrolID="ButancelScript="kScript="OK()pControlID="etControlID=axToolkit:Mo

pt type="textion OK()

('Has apretad

tion Cancel()

('Has apretad

ript>

plo, el activaésta actuaremplo hemos pr

Button1" run

anel1" runat=nte debida a

Button2" runButton3" run

dalPopupExte="Button3" tton2""Cancel()" )""Panel1""Button1">

odalPopupExt

xt/javascript

do OK');

)

do Cancel');

ador será unmos de formaresionado OK

at="server" T

="server" Widla llamada d

at="server" Tat="server" T

ender ID="Mo

tender>

">

Button quea diferente sK

Text="Abrir v

dth="125px"del botón

Text="OK" />Text="Cance

odalPopupEx

mostrará unsi presionam

ventana eme

BackColor="

>l" />

xtender1" run

����

na ventana emos sobre OK

ergente" />

"yellow">

nat="server"

�� '%��;

mergenteo sobre Can

;�� 'T'@

�)ncel.

@

www.depurando.com 428

Page 429: ASP .NET Framework 3.5

10.1

DescEl Mula miformadeseldirec

Prop• Tar• Key

EjemTrabaque sél, o

<asp:<ajaxID="MTargeKey="

<asp:<ajaxID="MTarge

11.� Mutua

cripciónutuallyExclussma Key, noa muy similaleccionar unctamente y h

piedadesrgetControlIDy: clave que

mploajaremos consólo puede eserá deselec

:CheckBox IDxToolkit:MutMutuallyExcluetControlID="MSCoderExa

:CheckBox IDxToolkit:MutMutuallyExcluetControlID=

allyExclu

siveCheckBoxos aseguramoar a como fun

CheckBox ehay que acud

D: ID del cheasociará a v

n 3 CheckBoxstar seleccioccionado cua

D="CheckBoxuallyExclusivusiveCheckbo"CheckBox1"

amples" />

D="CheckBoxuallyExclusivusiveCheckbo"CheckBox2"

siveCheck

x extiende aos que sólo unciona el Ras inmediato,

diar a funcion

eckbox que vvarios checkb

x a la vez, aonado un Cheando clickem

x1" runat="seveCheckboxEoxExtender1"

x2" runat="seveCheckboxEoxExtender2"

kBox

l control Cheuno de ellos pdioButton, c, mientras qunes javascrip

vamos a manboxes.

aplicándoles eckBox, el c

mos en otro.

rver" Text="OExtender run"

rver" Text="OExtender run2"

eckBox. Añapuede estarcon la particuue hacerlo apt

ejar.

la misma Keual podemos

Opción A" />nat="server"

Opción B" />nat="server"

����

diendo varioseleccionadoularidad de q

a un RadioBu

ey en el extes deseleccion

>

>

�� '%��;

os checkboxeo a la vez, dquetton no es p

ndedor, de mnar clickando

;�� 'T'@

�*

es con de

osible

modo o en

@

www.depurando.com 429

Page 430: ASP .NET Framework 3.5

Key="

<asp:<ajaxID="MTargeKey="

10.1

DescEl Nuincrea:- El s- Sub- Llamdecre

Podrehay p

Prop• Tar• Widdefecignor• Refen fo• Tarincre• Serincreutiliz• Serincre[Webpubli{…}• Tagpode

EjemEn nuinclui

<asp:

"MSCoderExa

:CheckBox IDxToolkit:MutMutuallyExcluetControlID="MSCoderExa

12.� Nume

cripciónumericUpDowmentan/dec

imple +1/-1ir o bajar demar a un servementamos.

emos asignarpor defecto.

piedadesrgetControlIDdth: anchuracto (mínimorará. fValues: listaorma de strinrgetButtonDomentar y de

rviceDownPamente o dec

zaremos estarviceDownMementar/dec

bMethod] c int NextVa

g: se correspmos utilizar

mplouestro senciliremos a nue

:TextBox ID=

amples" />

D="CheckBoxuallyExclusivusiveCheckbo"CheckBox3"

amples" />

ericUpDow

wn extiendecrementan e

aritmético.entro de un lvicio Web o

r botones pa

D: ID del Texa combinada25). Si elegi

ado de valoreng separado pownID/Targeecrementar. th/ServiceUcremente. Ena propiedad.ethod/Servicrementar el

alue(int curre

ponde con elpara disting

lo ejemplo,estro querido

="TextBox1" r

x3" runat="seveCheckboxEoxExtender3"

wn

al control Wl valor de és

listado de vaun método d

ara que haga

xtBox sobre edel TextBoxmos que otr

es sobre los por punto y

etButtonUpID

pPath: pathn caso de es

eUpMethod:TextBox. De

ent, string ta

segundo parguir qué elem

vamos a viajo Plutón.

runat="serve

rver" Text="OExtender run3"

Web TextBoxste. El increm

alores que lede la página

n de increme

el que vamosx y sus botonros botones h

que querremcoma ‘;’.

D: ID de los b

del serviciotar trabajan

método queeberá tener

ag)

rámetro delmento está ll

jar por los p

er" Text="Tie

Opción C" />nat="server"

habilitandomento/decre

e demos. diferente se

entador/dec

s a actuar. nes de arribahagan esa fu

mos ir subien

botones que

Web al quedo con méto

e será llamadla forma:

método al qlamando al m

lanetas del s

rra" Width="

����

>

unos botoneemento pued

egún si incre

crementador

/abajo que vnción, está p

ndo y bajand

hará la func

llamaremosodos de pági

do para

que llamaríammétodo.

sistema sola

"120" style="t

�� '%��;

es que de correspon

ementamos o

r o dejar los

vienen dadopropiedad se

o. Los darem

ción de

cuando se na no

mos, y lo

r, donde ya

text-

;�� 'T'@

nder

o

que

s por e

mos

no

@

www.depurando.com 430

Page 431: ASP .NET Framework 3.5

align

<cc1:TargeRefVaServic</cc1

10.1

DescEl Paordenqueraprimepode

El res

Prop• Tar• Clie• Ind• Max• Sep• Selenegri• Uns

EjemMostraplica

<asp:<asp:<asp:<asp:<asp:<asp:<asp:</asp<cc1:ClienIndexSeparTarge</cc1

:center"></a

:NumericUpDetControlID=alues="MercuceDownMeth1:NumericUp

13.� Pagin

cripcióngingBulletednación en cliamos, al queeros caracter cambiar de

sultado es tr

piedadesrgetControlIDentSort: podexSize: NúmxItemPerPagparator: El teectIndexCssCta y/o subraselectIndexC

mploramos un simaremos como

:BulletedList:ListItem Tex:ListItem Tex:ListItem Tex:ListItem Tex:ListItem Tex:ListItem Texp:BulletedLis:PagingBullettSort="true"

xSize="1" rator="-" etControlID=1:PagingBulle

asp:TextBox>

DownExtende"TextBox1" Wurio;Venus;Thod="" ServicpDownExtend

ngBulleted

dList extiendiente. Es dece le aplicaremres) o por núe índice sin r

remendamen

D: ID del Bulemos elegir

mero de caracge: Máximo nexto que sepClass: Clase ayado.CssClass Clase

mple listado co índice de c

t ID="Bulletedxt="Braulio">xt="Arturo"><xt="Sofía"></xt="Andrés">xt="Begoña">xt="Antonio"st>tedListExten

"BulletedListetedListExte

>

er ID="NumeWidth="120"Tierra;Marte;ceUpMethod=der>

dList

de a la Bulletcir, nosotrosmos el Paginúmero de iterecargar.

nte profesion

letedList sobentre ordencteres en elnúmero de itpara los índicCSS que se a

e CSS que se

con 6 elemecabecera el

dList1" runat></asp:ListIt</asp:ListIte/asp:ListItem></asp:ListIte></asp:ListIt></asp:ListIt

nder ID="Pagi

t1"> ender>

ericUpDownE

;Júpiter;Satu="" TargetBut

tedList confi tendremos

ngBulletedLisems por índic

nal, fácil de

bre el que vaar alfabéticaíndice de caems por cad

ces de cabecaplicará al ín

e aplicará a l

entos desordeprimer carác

t="server"> em>em>m>em>tem>tem>

ingBulletedL

xtender1" ru

urno;Urano;NttonDownID=

riéndole proel típico listst y éste lo pce. Todo en

usar y muy m

amos a trabaamente (trueabecera. da página. Prcera. Típicamndice elegido

los índices qu

enados que vcter.

ListExtender1

����

unat="server

Neptuno"="" TargetBut

opiedades deado HTML, t

paginará segúcliente, por

manejable.

ajar.e) o no (false

redomina sobmente será uo. Normalme

ue no están

vamos a orde

1" runat="ser

�� '%��;

ttonUpID="">

e paginacióntan largo común su índicelo que vamo

e).

bre IndexSizeun guión ‘-‘. ente se le ap

elegidos.

enar y

rver

;�� 'T'@

��

>

y de mo(los

os a

e.

licará

@

www.depurando.com 431

Page 432: ASP .NET Framework 3.5

10.1

DescEl Paniveltípico- Núm- Exig- Exig- Exig

Podesu pa- Med- Med

Ademcontr

Prop• Tar• Dispvalor• Stre• Pre• Prede la• Tex• Min• Min• Reqmayú• Texcontrmínimdébil• Calellospasswlongitel 20%• Bar• Bar• Helayuda• Hel

14.� Passw

cripciónsswordStrende fortaleza

os de fortalemero total degencia de siggencia de cogencia de nú

mos elegir yassword: diante textodiante una ba

más, podemoraseña.

piedadesrgetControlIDplayPositionres: AboveLeengthIndicat

eferredPasswefixText: pre

contraseña.xtCssClass: cnimumNumernimumSymboquiresUpperAúsculas y minxtStrengthDeraseña. Irá omo de 2 text;débil;mejorculationWeigdebe dar 10

word; por ejetud de la con% a la cantidrBorderCssClrIndicatorCsslpStatusLabea.lpHandleCssC

wordStren

gth es otro ea que tiene leza que define caracteresgnos. mbinar mayú

úmeros.

y configurar l

100% configarra que se i

os añadir la o

D: ID del Tex: posición reft, AboveRig

torType: tipowordLength: efijo a mostra. Típicamentclase CSS quericCharacterolCharacters:AndLowerCasnúsculas.escriptions: lrdenado de

tos y un máxrable;buena;ghtings: lista

00. Cada valoemplo “40;2ntraseña, eldad de caracass: Clase CSsClass: ClaseelID: ID de la

Class: clase C

ngth

extendedor dla contraseñaniremos nosos.

úsculas y mi

los dos modo

urable.irá rellenand

opción de “ay

xtBox sobre eelativa del inght, BelowLeo de indicadolongitud mínar cuando este será “Forte se aplicarárs: cantidad m: cantidad mseCharacters

listado de tedébil a fuertimo de 10. P;perfecta”. ado de 4 valoor asigna un5;15;20” sig25% a la can

cteres no alfaSS del borde CSS del inte

a Label que u

CSS del elem

del TextBox.a que está eotros:

núsculas.

os que tenem

do.

yuda”, dond

el que vamosndicador coneft, BelowRigor: Text o Banima que debstemos mosttaleza= “. al texto quemínima de c

mínima de sigs: especifica

exto que se ute y separadPor ejemplo:

ores numéricporcentaje dnifica que entidad de núanuméricos.

e de la barraerior de la bausaremos op

mento que m

. Con él podrescribiendo, e

mos de mostr

de explicar a

s a trabajar.respecto al

ght, LeftSidearIndicator.bería tener lrando el tex

e describe laaracteres nu

gnos (ej.: $ ^amos si exigim

usará para deo por punto: “muy

cos separadode importanl 40% del pesmeros, el 15

indicadora.arra indicadopcionalmente

ostrará el te

����

remos mostren base a un

rar al usuario

l usuario cóm

TextBox. Pue, RightSide.

la contraseñaxto que descr

a fortaleza duméricos. ^ *) mos la comb

escribir la foy coma ‘;’. T

os por ‘;’, docia a una caso de fortale5% a mayúscu

ora. e- para most

exto de ayu

�� '%��;

rar al usuarionos parámetr

o la fortalez

mo debe ser

uede tomar 6

a.riba la forta

e la contrase

binación de

ortaleza de laTendrá un

onde la sumaracterística eza viene deulas/minúsc

trar el texto

da.

;�� 'T'@

��

o el ros

a de

su

6

leza

eña.

a

a de del la

ulas y

de

@

www.depurando.com 432

Page 433: ASP .NET Framework 3.5

• HelPued

EjemVeam

<asp:

<cc1:DisplaMinimMinimPrefePrefixRequStrenTargeTextS</cc1

10.1

DescEl PofunciEsa vWeb

Por e

lpHandlePosie tomar 6 va

mplomos qué forta

:TextBox ID=

:PasswordStrayPosition="

mumNumericmumSymbolCerredPassworxText="FortairesUpperAn

ngthIndicatoretControlID=StrengthDesc1:PasswordSt

15.� Popup

cripciónpupControl sonalidad con

ventana eme(típicamente

ejemplo, ima

ition: posicióalores: Above

aleza nos asi

="TextBox1" r

rength ID="Parightside"

cCharacters=Characters="2rdLength="13aleza: " ndLowerCaserType="Text""TextBox1"criptions="mtrength>

pControl

se puede aplnsiste en morgente a lae un panel) y

agínese un Te

ón relativa deLeft, Above

gna este con

runat="serve

asswordStre

="2" 2"3"

eCharacters="

uy débil; dé

licar a cualqostrar una peque llamarey dentro de

extBox en el

del elementoeRight, Below

ntrol:

er"></asp:Tex

ngth1" runat

"true"

bil; mejorab

uier controlequeña ventaemos popup-él podemos

l que cuando

o de ayuda cowLeft, Below

xtBox>

t="server"

ble; buena; p

Web al queana emergenpuede ser taubicar cualq

o se pone el

����

on respectowRight, LeftS

perfecta">

e llamaremosnte con infomambién cual

quier cosa.

ratón sobre

�� '%��;

al TextBox.Side, RightSi

s cuerpo- y smación adicioquier contro

él, emerja u

;�� 'T'@

��de.

suonal.

ol

un

@

www.depurando.com 433

Page 434: ASP .NET Framework 3.5

calenplasm

Prop• Tar• Pop• Posposib• Comresultmodiopcio• Compopu• Offposic

EjemAplic

PopUFecha

<asp:<asp:<Con<cent<asp:CellPForeC<Sele<Tod<Sele<Wee<Othe<Nex<DayH<Title</asp</cen

</Co</asp</asp

<ajaxTargePopuPositi</aja

ndario sobreme en el Tex

piedadesrgetControlIDpupControlIDsition: posicibles serán: LemmitProperttado del popficar su “val

onal. mmitScript: fp.

fsetX/OffsetYción relativa

mploaremos el ej

p.aspxa: <asp:Text

:Panel ID="Pa:UpdatePanetentTemplatter>:Calendar ID=Padding="1" DColor="BlackectedDayStylayDayStyle B

ectorStyle BaekendDayStyerMonthDayStPrevStyle VHeaderStyleeStyle BackCp:Calendar>nter>

ntentTemplap:UpdatePanp:Panel>

xToolkit:PopetControlID=pControlID="ion="BottomaxToolkit:Po

el que podaxtBox.

D: ID del conD: ID del contón relativa eeft, Right, Tty: especificapup. Por ejemlue”, aunque

función java

Y: distancia del popup co

jemplo propu

tBox ID="Tex

anel1" runat=el ID="Updatete>

="Calendar1"DayNameForm" Width="160le BackColorBackColor="#ackColor="#Cyle BackColorStyle ForeCo

VerticalAlign=BackColor="

Color="#9999

ate> nel>

upControlEx"TextBox1""Panel1""> pupControlE

mos elegir u

ntrol cuerpo.trol popup. en la que apa

Top, Bottom,a la propiedamplo, en el ce también po

ascript que se

horizontal/von respecto

uesto en 3.1

tBox1" runat

="server" CssePanel1" run

" runat="servmat="Shorte0px" OnSelec="#666666" F

#CCCCCC" FoCCCCCC" /> r="#FFFFCC"olor="#808080="Bottom" />"#CCCCCC" F

999" BorderCo

xtender ID="P

Extender>

una fecha y e

arecerá el po Center.ad del controcaso de un Todríamos mo

e ejecutará

vertical en pdel cuerpo.

5.1

t="server" Wi

sClass="popunat="server">

ver" BackColost" Font-Nam

ctionChangedFont-Bold="ToreColor="Bla

/>0" /> >Font-Bold="Tolor="Black"

PopupContro

en el momen

opup con res

ol cuerpo quTextBox, lo nodificar su “W

cuando haya

ixels que aña

idth="80"></

upControl">

or="White" Bmes="Verdand="Calendar1True" ForeCoack" />

rue" Font-SizFont-Bold="T

olExtender1"

����

nto la elijamo

specto al cue

ue se modificnormal es quWidth”, su “T

amos dado e

adiremos o q

asp:TextBox

BorderColor=a" Font-Size=1 SelectionClor="White"

ze="7pt" /> True" />

runat="serve

�� '%��;

os, ésta se

erpo. Sus va

cará con el e queramosTextMode”..

l resultado d

quitaremos a

x>

="#999999" ="8pt"

Changed"> />

er"

;�� 'T'@

��

lores

.. Es

del

a la

@

www.depurando.com 434

Page 435: ASP .NET Framework 3.5

Popuprote{Popu}

10.1

DescEl Reconficon t

Adem“onrepostb(ASP.

Prop• Tar• Han• Res• Min• Max• OnC• OnC• Han

Ejem<style.hand{widthheighbackgoverfcurso}</sty

<asp:Elem</asp

<ajaxMinimMinimMaximMaxim

pControl.aspected void Ca

pControlExte

16.� Resiz

cripciónsizableContrriéndole la p

texto y redim

más, añade mesize” con lobacks y sus d.NET). Tamb

piedadesrgetControlIDndleCssClasssizableCssClanimumWidth/ximumWidthClientResizeClientResizinndleOffsetX/

mploe>dleText

h:16px;ht:16px;ground-imagflow:hidden;or:se-resize;

yle>

:Panel ID="Paento que sep:Panel>

xToolkit:ResimumWidth="5mumHeight="mumWidth="mumHeight=

px.cs alendar1 Se

ender1.Com

ableContr

rol extiendepropiedad demensionarlo a

multitud de fos que podemdimensiones sbién podemos

D: ID del con: clase CSS dass: clase CS/MinimumHe

h/MaximumH: evento queng: evento qu/HandleOffse

ge:url(images

anel1" runat=va a redime

izableContro50""20" "250" ="125"

lectionChang

mit(Calenda

rol

cualquier coe redimensioa nuestro gu

funcionalidadmos crear lógse pueden acs limitar su a

ntrol Web qude elementoS que se apleight: anchuHeight: anchue se lanzará ue se lanzaráetY: offsets a

s/HandleGrip

="server" Heensionar

olExtender ID

ged(object s

r1.SelectedD

ontrol Web (onamiento. Psto sin más q

des, como lagica complejcceder desdeanchura y al

e vamos a poque debemoicará cuandora/altura míura/altura mcuando el elá cuando ela aplicar sob

p.png);

ight="50px" W

D="Resizable

sender, Even

Date.ToShort

por ejemploPodemos, poque cogerlo

anzamiento dja. Su estadoe cliente (jatura máxima

oder redimeos coger paro estemos reínimas.

máximas. lemento hayelemento es

bre el eleme

Width="125p

ControlExten

����

ntArgs e)

tDateString(

o un Panel or ejemplo, ccon el ratón

de eventos “o se mantienavascript) y das.

ensionar.a redimensio

edimensionan

ya sido redimsté siendo rento redimen

px">

nder1" runat

�� '%��;

));

una imagen)coger un Pann.

“onresizing”ne durante lodesde servido

onar. ndo.

mensionado edimensionadsionador.

t="server"

;�� 'T'@

��

)nel

yosor

do.

@

www.depurando.com 435

Page 436: ASP .NET Framework 3.5

HandTarge</aja

10.1

EjemAplicPode

Prop• Tarun Pa• Rad• Colfondo

Ejem<asp:Este e</asp

<ajaxTargeRadiu</aja

10.1

DescEl SliddeslizPor eel val

Podemovim

leCssClass="etControlID=axToolkit:Re

17.� Roun

mploa un redondemos elegir e

piedadesrgetControlIDanel.dius: radio deor: color deo del Panel a

mplo:Panel ID="Paes el panel sp:Panel>

xToolkit:RouetControlID=us="8"> axToolkit:Ro

18.� Slider

cripciónder es un exzador (ver ej

ejemplo se plor numérico

mos elegir umiento del S

handleText""Panel1">sizableContr

dedCorne

eado de los el radio de re

D: ID del con

e redondeo dfondo del ár

al que perten

anel1" runat=sobre el que

ndedCorners"Panel1"

undedCorne

r

xtendedor dejemplo). Susuede sincrono que represe

un valor míniSlider puede

rolExtender>

ers

bordes a cuaedondeo.

ntrol Web sob

de las esquinrea redondeanece.

="server" Widse aplicará e

sExtender ID

rsExtender>

el TextBox, ds funcionalidnizar con unenta.

mo y un valoser contínuo

>

alquier contr

bre el que se

nas. Por defeada en las es

dth="125px"el bordeado

D="RoundedC

de modo queades son múTextBox o u

or máximo, ao o discreto

rol Web (hab

e aplicará el

ecto vale 5.squinas. Por

BackColor=".

ornersExten

e al aplicarloúltiples.una Label, de

así como per(le marcarem

����

bitualmente

redondeo. H

defecto se c

"#557755">

der1" runat=

o sobre él, se

e modo que s

rmitir númermos los paso

�� '%��;

un Panel).

Habitualmen

coge el colo

="server"

e convierte e

se va mostra

ros decimaleos que debe d

;�� 'T'@

�!

nte es

r de

en un

ando

es. El dar).

@

www.depurando.com 436

Page 437: ASP .NET Framework 3.5

Ademservid

Prop• Min• Max• Dec• Ste• Val• Ena• Han• Rai• Han• Han• Lenexten• Boudesliz• Raibotón

EjemMostr

<asp:<asp:<ajaxTargeBoun

10.1

DescEl Teque arelleny si n

Su finTextB

más, soportador en modo

piedadesnimum: Valorximum: Valocimals: Cantips: Cuando que: Valor ac

ableHandleAndleAnimatiolCssClass: AsndleCssClassndleImageURngth: Longitundiendo undControlIDzador. seChangeOnn izquierdo d

mploramos lo fáci

:TextBox ID=:TextBox ID=xToolkit:SlideetControlID=dControlID="

19.� TextB

cripciónxtBoxWatem

aparezca unnado por el unos vamos de

nalidad habitBox.

postbacks eo AJAX.

r inferior. Poor superior. Pidad de deciqueramos un

ctual del desnimation: AconDuration: signa una cla: Asigna una

RL: opcionalmud del desliz

D: ID del Tex

lyOnMouseUdel ratón.

il que es cre

="TextBox1" r="TextBox2" rerExtender I"TextBox1""TextBox2" /

BoxWater

mark extiendtexto (de unusuari, de mel textbox sin

tual es la de

incluso lo p

or defecto esPor defecto 1imales. Por dn deslizamienlizador.ctiva la animduración en

ase CSS a la v clase CSS almente podemador. Por de

tBox o Label

p: Si se activ

ear un Slider.

runat="serverunat="serveID="SliderExt

/>

rmark

e, de nuevona clase CSS

modo que cuan haber escr

e mostrar al u

podemos com

s 0. 100.defecto no hnto discreto

mación. milisegundo

vía sobre la l deslizador.mos asignar efecto se cog

l en el que e

va, lanza el

.

er"></asp:Texer"></asp:Textender1" run

, al control específica) e

ando hagamoito nada, el

usuario ciert

mbinar con un

ay., marcaremo

os de la animque se muev

una imagengerá la longit

estamos most

evento “cha

xtBox>xtBox>at="server"

TextBox. Suen el TextBoos clic sobretexto vuelve

ta informació

����

n UpdatePan

os la cantida

mación. ve el deslizad

al deslizadotud del Text

trando el va

ange” cuando

funcionalidaox cuando eséste, ese t

e a aparecer

ón antes de

�� '%��;

nel para viaja

ad de pasos.

dor.

r.tBox que esta

lor del

o se suelta e

ad consiste este no haya sexto desaparer.

rellenar el

;�� 'T'@

�"ar al

amos

el

ensido ezca,

@

www.depurando.com 437

Page 438: ASP .NET Framework 3.5

Prop• Tar• Wa• Wa

EjemVamoquedhechousuar

<asp:<br /<asp:

<ajaxTargeWate

<ajaxTargeWate

10.2

DescEl Toimágeimage

Prop• Tar• Che• Unc• Disadesha• Disadesha

piedadesrgetControlIDtermarkTexttermarkCssC

mploos a pedir elarán los cuao click sobrerio” para dej

:TextBox ID=>:TextBox ID=

xToolkit:TexetControlID=ermarkText="

xToolkit:TexetControlID=ermarkText="

20.� Toggl

cripciónggleButton eenes el estaden específica

piedadesrgetControlIDeckedImageUcheckedImagabledCheckeabilitado y eabledUnchecabilitado y e

D: ID del Text: Texto queClass: la clase

nombre de udros de text

e el primer Tjarnos escrib

="TextBox1" r

="TextBox2" r

tBoxWaterm"TextBox1""Nombre de

tBoxWaterm"TextBox2""Contraseña"

leButton

extiende al cdo de un Chea, y su está

D: ID del CheUrl: URL de lgeUrl: URL dedImageUrl:en estedo deckedImageUren estedo de

xtBox que vase mostrará

e CSS que se

usuario y conto nada más TextBox y debir lo que qu

runat="serve

runat="serve

markExtender

usuario" />

markExtender

" />

control ChececkBox. Es d“unchecked”

eckBox que ela imagen a me la imagenURL de la im“Checked”.

rl: URL de la“UnChecked

amos a extená cuando no e aplicará al

ntraseña. Encargarse la pinmediato seramos.

er"></asp:Tex

er"></asp:Tex

r ID="TextBox

r ID="TextBox

ckBox. Su únidecir, si el Ch” mostrar ot

extenderemomostrar cuana mostrar cu

magen a mos

a imagen a md”.

nder.haya nada eTextBox cua

n la primera página; en lase ha borrado

xtBox>

xtBox>

xWatermark

xWatermark

ica funcionaheckBox estátra.

os.ndo el Checkuando el Chestrar cuando

mostrar cuand

����

scrito en el Tando no haya

imagen vema segunda imo el texto “N

kExtender1" r

kExtender2" r

lidad consistá “checked”

kBox esté “CeckBox esté el CheckBox

do el CheckB

�� '%��;

TextBox.a nada escrit

os cómo magen hemosNombre de

runat="serve

runat="serve

te en sustitumostrar una

Checked”.“UnCheckedx está

Box está

;�� 'T'@

�)

to.

s

er"

er"

ir por a

d”.

@

www.depurando.com 438

Page 439: ASP .NET Framework 3.5

• Che• UncUnCh• Ima

Ejem<asp:<br><ajaxrunatTargeImageImageUnchChecUnch

10.2

DescEl VaRangelos tíNo tehttp:añadi

Prop• Tar• Wid• Hig• Waque v• Clo

EjemUn ej

<asp:<asp:Error<a hrContr<br /><asp:

<ajax

eckedImageAcheckedImagheckedImageageHeight/Im

mplo:CheckBox ID

xToolkit:Toggt="server" etControlID=eWidth="19"eHeight="19"eckedImagekedImageUrleckedImageA

21.� Valida

cripciónlidatorCalloueValidator, Cpicos validad

enemos que a//www.subgirles el atrib

piedadesrgetControlIDdth: AnchuraghlightCssClarningIconImaviene por defseImageUrl:

mplojemplo vale m

:TextBox ID=:RequiredFierMessage='Mref="http://wrolToValidat>:Button ID="

xToolkit:Valid

AlternateTexgeAlternateTeUrl.mageWidth: A

D="CheckBox

gleButtonExt

"CheckBox1"

"Url="ToggleBl="ToggleButAlternateTex

atorCallo

ut es un exteCustomValiddores. aplicar los vagurim.net/ar

buto Display=

D: ID del Valia del Calloutass: OpcionalageUrl: Url dfecto. Imagen que

más que mil

="TextBox1"eldValidatorMensaje de ewww.es�asp.e="TextBox1

Button1" ru

datorCallout

xt: texto alteText: texto a

Altura/Anch

x1" Checked=

tender ID="T

"

Button Unchtton Checkext="No selec

ut

endedor de cator...), con

alidadores crticulos/asp-=”None” y as

idador que s

lmente se pudel icono que

e produce el

palabras, y e

runat="serveID="Requirerror donde pnet">Url cua1"></asp:Req

nat="server"

Extender run

ernativo de lalternativo d

ura de la im

="true" Text=

ToggleButton

hecked.gif"d.gif" Check

ccionado" />

cualquier tipn el que cons

omo lo hemo-net-generalsignarles el V

se está exten

uede asignare muestra la

cierre del Ca

en casos com

er"></asp:TedFieldValidapodemos añaalquiera</a>quiredFieldV

" Text="Butto

nat="Server"

la imagen dee la imagen

agen que se

="Mi CheckBo

nExtender1"

kedImageAlte

po de validadseguimos una

os hecho hasl-articulo48.aValidatorCall

ndiendo.

una clase C alerta. Si no

allout

mo el Callout

extBox>tor1" runat=adir todo tip.'Validator>

on" />

" ID="Validat

����

efinida en Chdefinida en

va a mostra

ox" runat="se

ernateText="

dor (Requireda vista much

sta ahora (veaspx), pero clout.

SS sobre el Co se especifi

t mucho más

="server" Diso de HTML,

torCalloutExt

�� '%��;

heckedImage

ar.

erver"/>

"Seleccionad

dFieldValidaho más amab

ercon el detall

Callout.ica se muest

s:

splay="Nonepor ejemplo

tender1"

;�� 'T'@

�*eUrl.

do"

ator, ble de

le de

ra el

"o una

@

www.depurando.com 439

Page 440: ASP .NET Framework 3.5

TargeetControlID=="RequiredFieldValidatorr1" Width="3350px" />

���� �� '%��;;�� 'T'@

@

www.depurando.com 440

Page 441: ASP .NET Framework 3.5

AApliicaccio

%�

ǿǿǿΦƛƴŀŘŜŎƻΦŎƻƳ

Mnecon

����

���

MCsn .N

���

CTS:WebNET

3

:bT

5

www.depurando.com 441

Page 442: ASP .NET Framework 3.5

%�

Las paloja

EL obotrasdispoImagde bodiferedatos

Los sesistem

Lo únproto

Cóm��

DesEl pro

��

http:/

����

áginas web sa la página w

bjetivo de loss aplicacionesoner de estosinemos, porolsa. En lugarentes bolsass en formato

ervicios webma operativo

nico que neceocolos estánd

mo funcioEl servido

El formatel mismoXML

Los sistempreocupacualquier

sarrolla uoceso de des

Los archivtexto. SeStudio.

Un servic

Podemosmétodos

Podemosnavegado

//localhost/w

�� �

sólo permiteweb.

s servicios wes sin interfazs servicios wejemplo, qur de integrar, la aplicacióo XML.

b están débilmo o del lengu

esitamos pardar de la ind

onan los sor del servici

to de datos cestándar ab

mas de los doan del SO, elr extremo de

un servicsarrollar un s

vos de códigpueden crea

cio Web está

s pensar en use muestran

s probar fácilor:

websites/sto

���

en la interacc

eb es crear az de usuario.web puede incue estamos cr la base de dón puede com

mente acopluaje de progr

ra crear un sustria, HTTP

servicioso Web y la a

con el que sebierto. Este e

os extremosmodelo de oe la conexión

io Webservicio web

go que formaar y editar co

definido po

un servicio wn a los client

lmente un ar

ockTickerInLi

ción entre un

aplicacionesSi somos loscrementar ereando un sidatos final, cmunicarse co

ados y son cramación usa

servicio webP, SOAP y XM

s Webaplicación cli

e comunicanestándar casi

de la conexobjetos o el ln.

es casi idént

an las páginaon cualquier

r su archivo.

web como enes a través d

rchivo .asmx

ine.asmx

n navegador

basadas en ws desarrolladnormementitio web paraon todas lason sus servici

completamenado en el ser

es que el serML.

ente están c

los dos extrei siempre ser

ión están délenguaje de p

tico a desarr

s web y los seditor de te

asmx

una clase ende Internet

introducien

cliente y el s

web que intedores de unae nuestra pra una emprebases de daios web, inte

nte independrvidor o en e

rvidor y el cl

onectados a

emos de la crá SOAP, bas

bilmente acoprogramació

rollar una pág

servicios sonxto y tambié

n la que algu

ndo su URL e

%���

servidor Web

eraccionen ca página webroductividadesa de corredtos de lasercambiando

dientes delel cliente.

iente admita

Internet

conexión cumsado en texto

oplados. Noón usado en

gina web:

archivos deén con el Vis

unos de los

n cualquier

��� ���

b que

conb,.dores

o

an los

mpleno,

se

ual

www.depurando.com 442

Page 443: ASP .NET Framework 3.5

El pAntesUn prla llamel proel códsería

El prollamade reuna stodo

Paraclientsus fiexiste

CreaEl conotro sSOAP

La claconsu

La apdel clhacerproxy

CreaAbrimcrearservic

El arc

proxys de que unaroxy es un sumada a travéotocolo y el fdigo para sermucho trab

oxy está regiadas al métoealizar nuestrsolicitud SOAy lo muestra

que esto funte que se estrmas. El proentes, sin ca

ar el Connsumidor deservicio webP.

ase proxy seumidora.

plicación conliente. Una vr el cliente py, como si fu

ar un sermos un nuevrán variosarccios web. El a

chivo consta

a aplicación custituto del cés de los límiformato aderializar y envajo. EL proxy

strado por lado, como siras llamadasAP. Cuando ea a la aplicac

ncione, un prtá desarrollapietario delmbiar su firm

nsumidore un serviciob. Lo único ne

compila en u

sumidora revez que se crara usar el sera una llam

rvicio weo sitio web dchivos y direcarchivo que

de una sola

cliente puedcódigo real aites del equicuados y, noviar datos ady lo hace por

a aplicación cestuviera lla, envolverlasel servidor deión cliente c

rogramadorndo. Este reservicio webma, y el prox

rweb puede secesario es q

un ensambla

cibe el nombeado y registervicio web

mada sobre u

eb sencillde tipo servicctorios, aunqse crea por d

línea

a utilizar unal que querempo. Las soliciormalmenteecuados al sr nosotros.

cliente, A comando a uns en el formaevuleve el paomo si proce

debe crear egistro es unab puede añadxy existente n

ser una aplicque el consu

ado, que deb

bre de clienttrado el proxes realizar un objeto loc

locio web. Al igque los detaldefecto es u

servicio webmos llamar.itudes al servSOAP y / o Hservicio web

ntinuación, lobjeto localato adecuadoaquete al clieediera de un

el proxy y rega lista de losdir nuevos mno fallará.

cación de escmidor pueda

be estar regis

e, y el proxyxy con el cliena llamada aal.

gual que enles específicn archivo co

b, debemos cEs el responsvicio Web deHTTP. Podríanosotros mi

la aplicación. Elproxy haco y enviarlasente, el proxyn método de

gistrarlo conmétodos we

métodos web

critorio, unaa enviar y rec

strado con la

se encuentrente, lo únicoal método so

un sitio webos serán difen la extensió

%���

crear un proxsable de redeben cumplirmos escribirsmos, pero e

cliente realice todo el tras al servidor cy lo decodifiun objeto lo

la aplicacióneb expuestoso actualizar

página webcibir paquete

a aplicación

ra en el equio que tiene qobre ese obje

normal, seerentes paraón .asmx

��� ���

�xy.irigirr conr todoeso

izaabajocomocaocal.

ns yr los

ues

poqueeto

los

www.depurando.com 443

Page 444: ASP .NET Framework 3.5

<%@ W

Por s

usingusingusingusingusing

[WebS[WebS// Paquite// [Spubli{

p

compo

}

[p

}

}

El códderivy We

En laEste maplica

usingusingusingusingusing

[WebS[WebS

WebService L

u parte, el a

g System; g System.Colg System.Ling System.Webg System.Web

Service(NameServiceBindiara permitire la marca dSystem.Web.Sic class Ser

public Servi

//Eliminonentes dise

//Initia}

[WebMethod]public strin

return "}

digo oculto ca de la clasebServiceBind

clase Servicemétodo incluaciones cons

g System; g System.Colg System.Ling System.Webg System.Web

Service(NameServiceBindi

Language "C#

rchivo de có

lections.Genq;b;b.Services;

espace "htng(Conforms

r que se llamde comentaricript.Servi

rvice : Syst

ce () {

nar la marca eñadosalizeCompone

ng HelloWorlHello World

contiene unaSystem.Weding.

e hay un méuye el atribusumidoras.

lections.Genq;b;b.Services;

espace "htng(Conforms

" CodeBehind

digo oculto s

neric;

tp://tempuriTo WsiProfme a este seo de la líneces.ScriptSeem.Web.Servi

de comentar

nt();

d() { ";

a clase, que rb.Services.W

todo estándto WebMeth

neric;

tp://tempuriTo WsiProf

d "~/App Cod

se crea en un

i.org/")]files.BasicPervicio web ea siguienteervice]ices.WebServ

rio de la lí

recibe su nomWebService. E

ar llamado Hhod, que ide

i.org/")]files.BasicP

de/Service.c

n subddirect

Profile1 1)]desde un sc

e.

vice

ínea siguien

mbre del arcEsta clase tie

HelloWord, qentifica este m

Profile1 1)]

cs" Class "S

orio llamado

cript, usand

nte si utili

chivo de servene dos atrib

que devuelvemétodo com

%���

ervice" %>

o App_Code

do ASP.NET A

za los

vicio web, qubutos, WebSe

e una cadenamo disponible

��� ���

JAX,

ueervice

a.e ara

www.depurando.com 444

Page 445: ASP .NET Framework 3.5

// Paquite// [Spubli{

/mayo

s{

}p{

compo

}

[p/{

}[p{

}}

Dire<%@ W

Sustit

ara permitire la marca dSystem.Web.Sic class Ser

//Matriz de de 2005

string[,] st{ {"MSFT", {"DELL", {"HPQ"," {"YHOO", {"GE","G {"IBM"," {"GM","G {"F","Fo

};public Servi{

//Eliminonentes dise

//Initia}

[WebMethod]public doubl//Dado un si{

for (intif (

return 0}[WebMethod]public Strin{

for (int {

if (

} return "

}

ectiva WWebService L

tuye a Page e

r que se llamde comentaricript.Servi

rvice : Syst

simbolos y p

tocks

"Microsoft""Dell CompuHewlett Pac"Yahoo","34

General ElecInternation

General Motoord Motor Com

ce()

nar la marca eñadosalizeCompone

e GetPrice(mbolo de va

t i 0; i < String.Compreturn Conv

;

ng GetName(s

t i 0; i <

String.Compreturn stoc

Simbolo no

ebServicLanguage "C#

en aspx

me a este seo de la líneces.ScriptSeem.Web.Servi

precios de a

,"25.30"},ters","34.83kard","20.47.50"},tric","36.20al Business rs","26.68"mpany","9.11

de comentar

nt();

string Stocklor, devuelv

stocks.GetLare(StockSymert.ToDouble

tring StockS

stocks.GetL

are(StockSymks[i, 1];

encontrado";

ce" CodeBehind

ervicio web ea siguienteervice]ices.WebServ

acción. los

3"},7"},

0"},Machine","7

},12"}

rio de la lí

kSymbol)ve su precio

Length(0); imbol, stockse(stocks[i,

Symbol)

Length(0); i

mbol, stocks

;

d "~/App Cod

desde un sce.

vice

precios de

76.38"},

ínea siguien

o

i++)s[i, 0], tru2]);

i++)

s[i, 0], tru

de/Service.c

cript, usand

las accione

nte si utili

ue) 0)

ue) 0)

cs" Class "S

%���

do ASP.NET A

es son del 1

za los

ervice" %>

��� ���

JAX,

de

www.depurando.com 445

Page 446: ASP .NET Framework 3.5

DerEn elopcio

���

EstaSe tie

[WebMp{

}[p{

}

AtriDefinpredeasocipara

AtriCada

��

ProPor dantescompdesac

[Web

Pro[Web

rivar de lejemplo antonal, pero of

Applicatio

User

Context (

ado de laene acceso a

Method]public void{ Applicat

}[WebMethod]public strin{

return A}

ibuto Wene un conjunetermianda,ados con unidentificar v

ibuto Wemétodo que

Ser decla

Tener el a

opiedad Bdefecto, ASP.s de enviarlaportamientoctivar esta m

bMethod(Buf

opiedad CbMethod(Cac

a clase Wterior la claserece ventaja

on y Session

(Información

a aplicacil objeto App

SetStockExc

tion["exchan

ng GetStockE

Application[

ebServiceto de operacque incluyea vinculacióninculaciones

ebMethode queramos

rado como p

atributo Web

BufferRes.NET almacedesde el seróptimo. Sin

memoria inte

fferResponse

CacheDurcheDuration

WebServie Service heras:

n del invocad

ónmediaplication med

hange(string

ge"] Excha

xchange()

"exchange"]

eBindingciones espectodos los mn no predetes no predeter

dmostrar al co

público.

bMethod an

sponsena en la memrvidor al clieembargo, sirmedia, asig

e=false)]

ration=30)]

cereda de Web

dor)

ante Httpdiante el obje

g Exchange)

ange;

.ToString();

gcífico.Una claétodos weberminada. Elrminadas.

onsumidor d

tes de la dec

moria intermnte. EN casila respuesta

gnando a la p

bService. Der

pContexteto HttpCont

;

ase WebServde la clase qatributo We

debe:

claración del

media toda latodos los casa es muy largpropiedad Bu

rivar de Web

ttext.

vice tiene unaque no estánebServiceBin

método

a respuesta asos, éste es ega, quizás quufferRespons

%���

bService es

a vinculaciónespecíficamding se utiliz

a una solicituelueramosse false.

��� ���

nmenteza

ud,

www.depurando.com 446

Page 447: ASP .NET Framework 3.5

ProCadeel nav

[Web

Pro [We

p{

}

ProPOdefirma

Los secausa

[WebMMessa

p{

}[

simbop{

}

Dochttp://

<?xml

- <discoverxmlns:

<contractRdocRexmlns=

<soap addbindin

<soap addbindin

opiedad Dna descriptivvegador.

bMethod(De

opiedad EebMethod(Despublic int H{

if (Sess { Sess }

else { Sess }

return (

}

opiedad Memos tener ma. Cada firma

ervicios webada por tene

Method(DescrageName "Gpublic doubl{

return 0}[WebMethod(Dolo especifipublic doubl{

return 0}

cumentos/localhost:4974

version="1

ry xmlns:xsi="h

:xsd="http://w

Ref ref="http:

ef="http://loc="http://sche

dress="http://

ng="q1:Overlo

dress="http://

ng="q2:Strock

Descriptiva. Aparecer

scription=”D

EnableSescription

HitCounter()

ion["HitCou

ion["HitCou

ion["HitCou

(int)Sessio

MessageNmás de un ma única puede

b no permiteer más de un

ription "DGetValuePorte GetValue(

;

Descriptioncado", Messe GetValue(

;

s de Desc43/Servicioweb

1.0" encodi

http://www.w

www.w3.org/

//localhost:49

alhost:49743/emas.xmlsoap.

/localhost:497

oadedGetValue

/localhost:497

kTickerSoap" x

onrá en la págin

Devuelve el p

ssion"NUmero de h

nter"] nu

nter"] 1;

nter"] ((i

n["HitCounte

Nameétodo con ee ser invocad

n sobrecargamétodo con

evuelve el vfolio")]string Stock

"DevuelveageName "Gstring Stock

cubrimieb/Service.asmx?

ng="utf-8"

w3.org/2001/X

2001/XMLSch

9743/Servicio

/Servicioweb/.org/disco/scl

743/Serviciow

e" xmlns="http

743/Serviciow

mlns="http://

na de ayuda

precio de sto

hits por ses

ull)

int)Session

er"]);

l mismo nomda de formai

a. La propiedn el mismo n

valor de los

kSymbol)

el valor deGetValueStockSymbol, int

ento?disco

?>

XMLSchema-in

hema" xmlns="

oweb/Service.

/Service.asmxl/" />

web/Service.as

://schemas.x

web/Service.as

schemas.xmls

del servicio W

ck para el sím

sion", Enabl

["HitCounter

mbre en la claindependien

dad Messageombre.

s usuarios e

e los usuarick")]t NumShares)

nstance"

http://schem

asmx?wsdl"

x"

smx" xmlns:q1=

mlsoap.org/d

smx" xmlns:q2=

soap.org/disco

Web cuando

mbolo de en

leSession

r"]) + 1;

ase C#. Se dinte. (Sobreca

eName elimin

en un simbol

ios comparti

as.xmlsoap.or

="http://temp

isco/soap/" />

="http://temp

o/soap/" />

%���

o lo probemo

trada”)]

true)]

ferencian poarga)

na la ambigü

o especific

dos en un

rg/disco/">

puri.org/"

>

puri.org/"

��� ���

!os en

or su

üedad

ado",

www.depurando.com 447

Page 448: ASP .NET Framework 3.5

<soap addbindin

<soap addbindin

</disco

ImpComo

%�

Cream

Debeañadestá s

http:/

Tras cweb c

[Sitio

dress="http://

ng="q3:Overlo

dress="http://

ng="q4:Strock

overy>

plementao la de una p

����

mos un nuev

emos propore una referesirviendo de

//localhost/s

crear el direcconsumidor.

o Web][Agreg

/localhost:497

oadedGetValue

/localhost:497

kTickerSoap12

aciónpágina web c

�� D

vo sitio web

cionar una reencia web a nsde un direc

servicioweb/

ctorio virtua.

gar referenci

743/Serviciow

e1" xmlns="htt

743/Serviciow

" xmlns="http:

cualquiera.

�� ��

eferencia panuestro clienctorio virtual

/service.asm

l, podemos a

ia Web]

web/Service.as

p://schemas.

web/Service.as

://schemas.xm

� ��

ara el servicionte. Puede ag.

mx

agregar el se

smx" xmlns:q3=

xmlsoap.org/

smx" xmlns:q4=

mlsoap.org/di

����

o web (en cogregar a un s

ervicio comor

="http://temp

disco/soap/"

="http://temp

sco/soap/" />

oncreto al proservicio web

referencia w

%���

puri.org/"

/>

puri.org/"

>

oxie). VS200si este servi

web para un s

��� ���

"

8cio se

sitio

www.depurando.com 448

Page 449: ASP .NET Framework 3.5

Se añ

Tamb

<appS

</app

Agreg

local

ñadirá una ca

bién ha apare

Settings><add key

pSettings>

ga una refere

lhost.Strock Label2.T

arpeta App_W

ecido en el w

"localhost.

encia

kTickerSoap pText "Web

WebReferen

web.config

service" va

proxy newService reto

nces, que se m

alue "http:/

localhost.Sorna " + pro

mostrará en

/localhost/s

StrockTickeroxy.HelloWor

el explorado

servicioweb/

rSoap();rd();

%���

or de solucio

/service.asm

��� ���

)

ones.

mx"/>

www.depurando.com 449