48
APLICACIONES WEB CON VISUAL C# .NET Fecha Unidad Temas 9-Oct-2004 Introducción a la programación Web Tipos de Aplicaciones Usando ASP .NET Uso de Visual Studio .NET Creación de Aplicaciones con Formularios Web Creación de un proyecto de aplicación Web Responder a Eventos El procesamiento 23-Oct-2004 Trabajando con Objetos Web Fundamentos de Namespace Namespaces en Aplicaciones Web Conservar la información del Estado Creación de la Interfaz de Usuario Uso de Controles Validación de Datos Navegación entre formas 6-nov-2004 Almacenar y Consultar datos con ADO –NET Acceso a Datos Uso de Data Set en Formularios Web Procesamiento de Transacciones Captura y corrección de Errores Uso del Exception Handling Uso de Error Pages 20-Nov-2004 Programación avanzada de Formularios Web Almacenar y Consultar información del usuario Enviar Email Uso de Frames Uso de Scripts del lado del cliente Consumir servicios Web XML Seguridad Autenticación y autorización de usuarios

Aplicaciones Web con Visual C Sharp net.doc

Embed Size (px)

Citation preview

Page 1: Aplicaciones Web con Visual C Sharp net.doc

APLICACIONES WEB CON VISUAL C# .NET

Fecha Unidad Temas9-Oct-2004 Introducción a la programación

WebTipos de Aplicaciones

Usando ASP .NETUso de Visual Studio .NET

Creación de Aplicaciones con Formularios Web

Creación de un proyecto de aplicación WebResponder a EventosEl procesamiento

23-Oct-2004 Trabajando con Objetos Web Fundamentos de NamespaceNamespaces en Aplicaciones WebConservar la información del Estado

Creación de la Interfaz de Usuario

Uso de Controles

Validación de DatosNavegación entre formas

6-nov-2004 Almacenar y Consultar datos con ADO –NET

Acceso a Datos

Uso de Data Set en Formularios WebProcesamiento de Transacciones

Captura y corrección de Errores

Uso del Exception Handling

Uso de Error Pages

20-Nov-2004 Programación avanzada de Formularios Web

Almacenar y Consultar información del usuarioEnviar EmailUso de FramesUso de Scripts del lado del clienteConsumir servicios Web XML

Seguridad Autenticación y autorización de usuariosUso de Autenticación WindowsUso de formularios de autenticaciónUso de autenticación PassportProveer Comunicación Segura

27-Nov-2004 Construir y distribuir aplicaciones Web

Construir una aplicación Web

Distribuir una aplicación webMantener una aplicación distribuidaDistribuir una aplicación a través de muchos servidores

Pruebas Creación de las pruebasEjecución de las pruebas

Page 2: Aplicaciones Web con Visual C Sharp net.doc

Realizar el Debug

4-Dic-2004 Crear controles Web Custom Crear controles web del usuarioCrear controles Custom CompositeCrear controles Rendered Custom

Trabajar con multimedia AudioVideoAnimación

11-Dic2004 Dar formatos a las salidas de una aplicación Web

Usar Cascading Style Sheets

Usar transformaciones XSL

Dar Soporte Añadir ayuda a las aplicacionesUsar HTML Help WorkshopConectar la ayuda HTML al formulario

18-Dic-2004 Globalizar las aplicaciones web

Escoger un acercamiento de globalizaciónCrear y usar Assemblies SatelliteAsuntos de la globalización

Page 3: Aplicaciones Web con Visual C Sharp net.doc

INTRODUCCIÓN A LA PROGRAMACIÓN WEB

Tipos de Aplicaciones

¿Qué se puede crear?

Una aplicación de Internet es cualquiera que usa el Internet de alguna forma

Tipos:Aplicaciones Web. Proveen contenido de un servidor a las máquinas cliente. Se usan a través de los Web BrowserServicios Web. Componentes. Proveen servicios que realizan procesamientos de un servidor a otras aplicaciones en InternetAplicaciones habilitadas a Internet. Aplicaciones stand-alone que incorporan aspectos del Internet: registrarse online, ayudas, actualizaciones.Aplicaciones peer-to-peer. Aplicaciones stand-alone que usan Internet para comunicarse con otros usuarios que corren otras instancias de la aplicación.

¿Cómo funcionan las aplicaciones Web?

Las aplicaciones Web utilizan la arquitectura cliente-servidor. La aplicación web reside en un servidor y responde a las peticiones de los clientes por Internet.

Del lado del cliente, la Aplicación Web es hospedada por un browser. La interfaz de usuario de la aplicación toma la forma de páginas de HiperText Markup Language (HTML) y son mostradas por el browser del cliente.

Del lado del servidor, la aplicación Web corre bajo Microsoft Internet Information Services (IIS). IIS administra la aplicación, pasa las peticiones de los clientes a la aplicación, retorna las repuestas de la aplicación al cliente. Estas peticiones y respuestas son pasadas a través de Internet usando HyperText Trasnport Protocol (http)

Page 4: Aplicaciones Web con Visual C Sharp net.doc

La siguiente figura muestra cómo una aplicación Web compone el HTML que se retorna al usuario:

¿Qué provee ASP .NET?

ASP.NET la plataforma que se usa para crear aplicaciones Web y servicios Web que corren bajo IIS. Es parte del Framework de .NET y está compuesta de varias partes:Herramientas de desarrollo Web de Visual Studio .NET: Herramientas visuales para diseñar páginas Web y plantillas de aplicación, genérica de proyecto y herramientas de distribución.El namespace System.Web: Hace parte del .NET Framework e incluye las clases de programación que tienen que ver con los electos específicos de Web.Controles Web y controles HTML: Compones de interfaz de usuario que se usan para recolectar información de los usuarios y para dar las respuestas.

Además, ASP.NET utiliza los siguientes componentes:Microsoft Information Services (IIS): el cual hospeda las aplicaciones Web en el servidor WindowsLos lenguajes de programación Microsoft Visual Basic .NET, Microsoft Visual C#, y JScriptEl framework de .NET: Conjunto completo de las clases de programación WindowsClases y herramientas de base de datos ADO.NET: Estos componentes proveen acceso a las basese de datos Microsoft SQL Server y ODBC. Microsoft Application Center Test (ACT): Manera automática de realizar pruebas de estrés de las aplicaciones

ASP.NET no es independiente de la plataforma, puesto que es hospedada por el IIS, debe correr en Servidores Windows.

Page 5: Aplicaciones Web con Visual C Sharp net.doc

Usando ASP .NET

Partes de una aplicación Web

Parte Tipos de Archivos DescripciónContenido Formularios Web, HTML,

imágenes, audio, video, otros datos

Los archivos de contenido determinan la apariencia de la aplicación Web. Pueden contener texto e imágenes estáticas como elementos que son compuestos dinámicamente por la lógica del programa.

Lógica del programa

Archivos ejecutables, scripts

La lógica del programa determina cómo la aplicación responde a las acciones del usuario. Las aplicaciones Web ASP.NET tienen un archivo de dynamic-link library (DLL) que corre en el servido, también pueden incluir scripts que corren en la máquina del cliente.

Configuración Archivo de configuración Web, Style Sheets, settings del IIS

Los archivos de configuración y los settings determinan cómo la aplicación corre en el servidor, quién tiene acceso, cuántos errores son manejados, y otros detalles.

El formulario Web es el elemento principal de una aplicación Web. Su parte ejecutable es almacenada en un .dll que corre en el servidor bajo el control de IIS. La parte del contenido del formulario Web reside en un directorio de contenido en el servidor Web, como muestra la figura:

Cuando un usuario navega en una de las páginas en su browser, ocurre lo siguiente:1. IIS comienza el ejecutable de la aplicación Web, si ya no está corriendo.2. El ejecutable compone la respuesta al cliente de acuerdo al contenido del formulario

Web que el usuario pidió y a la lógica del programa.3. IIS retorna la respuesta al usuario en la forma de HTML.

Page 6: Aplicaciones Web con Visual C Sharp net.doc

Componentes de Formularios Web

Componente Ejemplos DescripciónControles del Servidor TextBox, Label, Button, ListBox,

DropDownList, DataGridEstos controles responden a eventos del usuario corriendo procedimientos de eventos en el servidor.

Controles HTML Text area, Table, Image, Submit Button, Reset Button

Estos representan los elementos estándar visuales suministrados por HTML.

Controles de Datos SqlConnection, SqlCommand, OleDbConnection, OleDbCommand, DataSet

Los controles de datos proveen una manera de conectarse, realizar comandos, y obtener datos de bases de datos SQL y Ole y archivos XML

Componentes del Sistema

FileSystemWatcher, EventLog, MessageQueue

Estos componentes proveen acceso a los diferentes nivel de eventos del sistema que ocurren en el servidor

El framework de .NET

El .NET Framework es la nueva plataforma de programación Microsoft para el desarrollo de aplicaciones Web y Windows. Está compuesta de dos partes:Un motor de ejecución llamado el Common Language Runtime (CLR)Una librería de clases que provee las funciones centrales de programación, como aquellas que están disponibles a través del Windows API, y funciones de nivel de aplicación usadas para el desarrollo Web (ASP.NET), acceso a datos (ADO.NET), seguridad, y administración remota.

El código de aplicación de .NET es compilado en Microsoft Intermediate Language (MSIL) y almacenado en un archivo llamado assembly. En tiempo de ejecución, el assembly es compilado a su estado final por el CLR. Mientras corre, el CLR provee administración de la mamoria, chequeos de seguridad de tipos, y otras tareas de runtime para la aplicación. La figura muestra como funciona.

Page 7: Aplicaciones Web con Visual C Sharp net.doc

Aplicaciones que corren bajo el CLR se llaman de código administrado porque el CLR se encarga de muchas tareas que deberían estar a cargo del ejecutable de la aplicación misma. El código administrado resuelve muchos de los problemas de la programación Windows como el registro de componentes y versionamiento porque el assembly contiene todo la información de versionamiento y de tipo que el CLR necesita para correr la aplicación. El CLR permite registrarse dinámicamente en tiempo de ejecución, en vez de manera estática a través del registro del sistema como se hace con las aplicaciones basadas en Common Object Model (COM).

Common types System

All the common data types, including strings, arrays, and numeric types. These classes include methods for converting types, for manipulating strings and arrays, and for math and random number tasks.

Data access

System.Data, System.Data.Common, System.Data.OleDb, System.Data.SqlClient, System.Data.SqlTypes

Accessing databases. These classes include methods for connecting to databases, performing commands, retrieving data, and modifying data.

Debugging System.DiagnosticsDebugging and tracing application execution.

File accessSystem.IO, System.IO.IsolatedStorage, System.DirectoryServices

Accessing the file system. These include methods for reading and writing files and getting paths and filenames.

Network communication

System.Net, System.Net.Sockets Communicating over the Internet using low-level protocols such as

Page 8: Aplicaciones Web con Visual C Sharp net.doc

TCP/IP. These classes are used when creating peer-to-peer applications.

Security

System.Security, System.Security.Cryptography, System.Security.Permissions, System.Security.Policy, System.Web.Security

Providing user authentication, user authorization, and data encrypting.

Web applications

System.Web, System.Web.Caching, System.Web.Configuration, System.Web.Hosting, System.Web.Mail, System.Web.SessionState, System.Web.UI, System.Web.UI.Design, System.Web.UI.WebControls, System.Web.UI.HtmlControls

Creating client-server applications that run over the Internet. These are the core classes used to create ASP.NET Web applications.

Web services

System.Web.Services, System.Web.Services.Configuration, System.Web.Services.Description, System.Web.Services.Discovery, System.Web.Services.Protocols

Creating and publishing components that can be used over the Internet. These are the core classes used to create ASP.NET Web services.

Windows applications

System.Windows.Forms, System.Windows.Forms.Design

Creating applications using the Microsoft Windows user interface components. These classes provide Windows forms and controls as well as the ability to create custom controls.

XML dataSystem.Xml, System.Xml.Schema, System.Xml.Serialization, System.Xml.Xpath, System.Xml.Xsl

Creating and accessing XML files.

Muchos de los métodos de las clases en el namespace System pueden ser usados directamente sin necesidad de crear un objeto a partir de la clase. Estos son llamados métodos compartidos en Visual Basic .NET y métodos estáticos en Visual C#. Ejemplo: System.Array.Sort

Uso de Visual Studio .NETUtilice la página de inicio para abrir un Nuevo proyecto o un proyecto ya existente, obtener información del producto, y estableces las preferencias del ambiente.Revisar los dos tipos de ventanas de Visual Studio .NET y usar la característica de Auto Hide para obtener más espacio para trabajar.Editar los formularios Web y las páginas HTML ya sea visualmente o por HTML.Escriba el código usando el Editor de Código y modifique Visual Studio para aplicar esas propiedades.Construya, ejecute y realice el debug de las aplicaciones usando Visual Studio .NET.Use la ayuda y los filtros de ayuda de su lenguaje de programación preferido.

Page 9: Aplicaciones Web con Visual C Sharp net.doc

CREACIÓN DE APLICACIONES CON FORMULARIOS WEB

Creación de un proyecto de aplicación WebCuando se crea un Nuevo proyecto usando esta platilla, Visual Studio .NET crea un archive de proyecto, un nevo formulario Web vacío y otros archivos que utiliza la aplicación. Para crear un proyecto de aplicación Web con Visual Studio .NET, realice los siguientes pasos:En la página de inicio de Visual Studio .NET, seleccione New Project. Visual Studio .NET despliega el cuadro de diálogo de New Project. Visual Studio ubica las aplicaciones web en el directorio virtual del localhost.En el cuadro de diálogo de New Project seleccione la plantilla ASP.NET Web Application, escriba el nombre del nuevo proyecto en el campo Location, y presione OK.Visual Studio le da al fólder el mismo nombre del proyecto y ubica el fólder en la carpeta root del sitio Web por defecto que el IIS hospeda en su equipo. Esta ubicación se muestrar en el campo Location del New Project como http://localhost/projectname.El directorio virtual llamado //localhost es el directorio Web raíz. IIS determina la ubicación física de su directorio Web raíz. Por defecto, IIS instala este directorio en su disco de arranque en \Inetpub\wwwroot

Creación de directorios virtuales para organizar sus aplicaciones Web

Utilice el IIS para crear las carpetas virtuales y administrar los sitios Web hospedados en su equipo. Crear un directorio virtual para usarse con Visual Studio .NET requiere las siguientes tareas:Crear el directorio virtual. Los directorios virtuales especifican donde se almacenan físicamente sus aplicaciones Web, entonces se pueden usar para organizar los proyectos durante el desarrollo.Añadir la extensión de FrontPage Server al directorio virtual para crear una subred. Una subred es simplemente un directorio virtual que contiene un sitio Web. Añadir las extensiones FrontPAge Server al directorio virtual le permite a Visual Studio .NET crear y mantener las aplicaciones Web en ese directorio.

Crear un directorio VirtualHacer click derecho en el icono de Default Web Site en IIS, y del menú seleccionar nuevo directorio virtual. IIS lanza el Wizard de creación de directorios virtuales. El alias es el nombre que se utilizará para identificar el recurso en este fólder. En Visual Studio .NET, este es el nombre que se utilizará para especificar la ubicación del proyecto.

Crear una SubredPara añadir las extensiones FrontPage Server al directorio virtual haga:Click derecho al icono de localhost en IIS y seleccionar New Server Extensions Web del menú de pop-up. IIS lanza el Wizard de New Subweb.

Añadir controles y escribir código

Arrastrar el control a la página. Hacer doble clic sobre el control para añadir el código que responde a los eventos.

Las aplicaciones de formularios Web son similares a las aplicaciones de formularios Windows. Sin embargo, las aplicaciones de formularios Web presentan las siguientes diferencias.

Page 10: Aplicaciones Web con Visual C Sharp net.doc

Herramientas. Los formularios Web no pueden usar los controles estándar de Windows. A cambio, utilizan los controles Server, controles HTML, controles de usuario, o controles custom creados especialmente para los formularios Web.

Interfaz de usuario. La apariencia de un formulario Web se determina por el browser que la despliega. Browser distintos, y distintas versiones, soportan características diferentes de HTML, lo cual puede cambiar la apariencia de su formulario Web.

Tiempo de vida. Los formularios Windows son instanciados, existen durante el tiempo que se necesiten, y luego son destruidos. Los formularios Web aparentan comportarse así, pero en realidad son instanciados, enviados al browser, y destruidos inmediatamente. Esto significa que las variables y objetos declarados en un formulario Web son destruidos tan pronto el formulario se despliega. Para que algo interesante se realice, se necesita guardar la información en objetos de estado especiales provistos por ASP .NET.

Ejecución. Las partes ejecutables de una aplicación Web se encuentran en el servidor Web. De esta forma, las aplicaciones Web son un tipo de aplicación cliente/servidor: el browser es el único software instalado en el cliente, y toda la interfaz de usuario y la lógica del negocio corre en el servidor. Toda la comunicación entre el cliente y el servidor ocurre a través de HTML. Esto significa que inclusive las aplicaciones Web sofisticadas causan pequeños problemas de seguridad a los clientes y pasan a través de firewalls sin perturbarse.

Los archivos en un proyecto de formularios Web

El formulario Web es solo uno de los 11 archivos que Visual Studio .NET genera cuando crea un nuevo proyecto Web. La siguiente tabla describe el propósito de cada uno de estos archivos. Solo los archivos en negrilla se muestran en el Explorador de la Solución en Visual Studio .NET.

Filename ContainsAssemblyInfo.AssemblyInfo.csvb

All of the build options for the project, including version, company name, GUID, compiler options, and so on.

Global.asaxThe global events that occur in your Web application, such as when the application starts or ends. You can have only one Global.asax file per project and it exists in the root folder of the project.

Global.asax.vb Global.asax.cs

The code used in Global.asax. This file is not shown in the Solution Explorer.

Styles.css The style definitions to use for the HTML generated by your project.

Web.config

The settings your Web server uses when processing this project. These settings determine how errors are reported, what type of user authentication to use, and so on. You can have only one Web.config file per project and it exists at the root folder of the project.

Projectname.disco Descriptions of the Web Services that this project provides.WebForm1.aspx The visual description of a Web form.WebForm1.aspx.vb WebForm1.aspx.cs

The code that responds to events on the Web form. By default, this file is not shown in the Solution Explorer.

WebForm1.aspx.resxThe XML resources used by the Web form. This file is not shown in the Solution Explorer.

Projectname.vbproj Projectname.csproj

The project file listing the files and settings used at design time. This file is not shown in the Solution Explorer.

Projectname .vbproj.webinfoProjectname .csproj.webinfo

The design-time Web preferences for the project. This file is not shown in the Solution Explorer.

Page 11: Aplicaciones Web con Visual C Sharp net.doc

Además, los proyectos pueden contener otros archivos. Los principales tipos de archivos que se puede añadir a la aplicación son los siguientes:

File extension

Project item Description

.aspx Web form

Each Web form constitutes an ASP.NET Web page in your application. Applications can have one or many Web forms. Web forms have code files associated with them with the file extension .aspx.vb. Microsoft Visual C# forms have associated .aspx.cs files.

.htm HTML PageWeb pages that don't have server code can appear as HTML pages in your project.

.vb or .csClass or module

Code that defines objects in your application is stored in classes.

.ascxWeb user control

User controls that are built from other Web forms and server controls in Visual Studio .NET.

.xsd DataSet Creates an XML schema with the DataSet classes.

Responder a EventosEventos en el Ciclo de Vida de una Aplicación WebUna aplicación Web vive mientras tenga sesiones activas, mientras un formulario Web vive a penas por un momento. La vida de una aplicación Web comienza cuando el browser pide la página inicial de la aplicación. En ese instante, el servidor Web comienza el ejecuta el DLL que responde a la petición. El ejecutable crea una instancia del formulario pedido, genera el HTML que responde a la petición y envía la respuesta al browser. Luego destruye la instancia del formulario Web.

Cuando el browser ha generado el HTML, el usuario puede escribir en las cajas de texto, seleccionar los botones de opciones y realizar otras tareas hasta que dispare un evento post-back, como presionar un botón. Los eventos de post-back hacen que el browser envíe los datos de la página (view state) de regreso al servidor para procesar el evento. Cuando el servidor recibe en view state, crea una nueva instancia del formulario Web, llena los datos del view state y procesa cualquier evento que ocurrió. Tan pronto como el servidor finalice, envía los resultados HTML de nuevo al browser y destruye la instancia del formulario Web.

Cuando el usuario ha terminado y cierra el browser o se va a otro sitio Web, la sesión del usuario termina. Si no hay otras sesiones de otros usuarios, la aplicación termina. Esto no termina inmediatamente. ASP .NET administra la memoria usando el recolector de basura.

Page 12: Aplicaciones Web con Visual C Sharp net.doc

La recolección de basura significa que el servidor periódicamente rastrea las referencias entre objetos. Cuando el servidor encuentra que un objeto no está siendo utilizado, bota el objeto y restablece la memoria. Esto significa que no se sabe con exactitud cuándo va a ocurrir el evento Application_End.

Conservando los datos en un formulario Web

Debido a que los formularios Web tienen un tiempo de vida corto, ASP .NET realiza unas tareas especiales para preservar los datos ingresados en los controles del formulario. Los datos ingresados en los controles son enviados con cada request y son restaurados en los controles en el Page_Init. Los datos en estos controles estarán disponibles en el evento Page_Load.

Los datos que ASP .NET conserva entre los request se llaman el View State del formulario Web. El View State del formulario está disponible solamente dentro del formulario Web. Para hacer que los datos ingresados en el formulario estén disponibles en otros formularios dentro de la aplicación, se necesita guardar esos datos en una variable de estado de la Aplicación o en objetos de Sesión. Esos objetos proveen dos niveles de alcance:Variables de Estado de la Aplicación. Estas variables son para todos los usuarios de la aplicación. Se puede pensar que son como variables multi-usuario globales. Todas las sesiones pueden leer o escribir estas variables.Variables de Estado de la Sesión. Estas variables están disponibles solamente en una única sesión (del usuario).

Visual Basic .NETPrivate Sub Button1_Click(ByVal sender As System.Object, _  ByVal e As System.EventArgs) Handles Button1.Click    ' Save the number of clicks in Session state.    Session("Clicks") = Session("Clicks") + 1    ' Display the number of clicks.    Response.Write("Number of clicks: " & Session("Clicks"))End Sub

Visual C#    // From Global.asax.cs    protected void Session_Start(Object sender, EventArgs e)    {        // Initialize Clicks Session state variable.        Session["Clicks"] = 0;    }

    // From StateNEvents.asax.cs    private void Button1_Click(object sender, System.EventArgs e)    {        // Increment click count.        Session["Clicks"] = (int)Session["Clicks"] + 1;        // Display the number of clicks.        Response.Write("Number of clicks: " + Session["Clicks"] + "<br>");    }

Las variables de Estado de la Aplicación deben inicializarse en C# antes de utilizarlas. Por ejemplo, se necesita inicializar el valor de la variable de estado Clicks antes de realizar el cast (int)Session["Clicks"]. Sino, se recibe el siguiente error “Value null was found where an instance of an object was required” en tiempo de ejecución.

Page 13: Aplicaciones Web con Visual C Sharp net.doc

Eventos de Aplicación y Sesión

Se puede escribir el código para responder a los eventos de aplicación y sesión en el Global.asax. Utilice los eventos de aplicación para inicializar los objetos y los datos que se quieren disponibles a todas las sesiones actuales de la aplicación Web. Use los eventos de Sesión para inicializar los datos que se quiere conservar entre las sesiones individuales, pero que no se quieren compartir entre sesiones.

Application_Start The first user visits the start page of your Web application.Application_End There are no more users of the application.

Application_BeginRequestAt the beginning of each request to the server. A request happens every time a browser navigates to any of the pages in the application.

Application_EndRequest At the end of each request to the server.Session_Start A new user visits the start page of your application.

Session_EndA user leaves your application, either by closing his or her browser or by timing out.

En los formularios Web, una sesión es una instancia única en el browser. Un único usuario puede tener múltiples instancias en el browser corriendo en su máquina. Si cada instancia visita su aplicación Web, luego cada instancia tiene una sesión única.

Visual C#    protected void Application_Start(Object sender, EventArgs e)    {        // Create Application state variables.        Application["AppCount"] = 0;        Application["SessCount"] = 0;        // Record application start.        Application["AppCount"] = (int)Application["AppCount"] + 1;    }     protected void Session_Start(Object sender, EventArgs e)    {        // Count sessions.        Application["SessCount"] = (int)Application["SessCount"] + 1;        // Display session count.        Response.Write("Number of applications: " +           Application["AppCount"] + "<br>");        // Display session count.        Response.Write("Number of sessions: " +          Application["SessCount"] + "<br>");    }

    protected void Session_End(Object sender, EventArgs e)    {        // Decrement sessions.        Application["SessCount"] = (int)Application["SessCount"] - 1;    }

Eventos del formulario Web

Se usa los eventos del formulario Web para procesar y mantener datos usados en una página Web, para responder al data binding y para manipular las excepciones en la página Web.

Event handler name Occurs whenPage_Init The server controls are loaded and initialized from the Web form' s

Page 14: Aplicaciones Web con Visual C Sharp net.doc

Event handler name Occurs whenview state. This is the first step in a Web form' s life cycle.

Page_Load The server controls are loaded on the Page object. View state information is available at this point, so this is where you put code to change control settings or display text on the page.

Page_PreRender The application is about to render the Page object.Page_Unload The page is unloaded from memory.Page_Error An unhandled exception occurs.Page_AbortTransaction A transaction is aborted.Page_CommitTransactionA transaction is accepted.Page_DataBinding A server control on the page binds to a data source.

Page_DisposedThe Page object is released from memory. This is the last event in the life of a Page object.

Eventos de los controles Server

Los controles Server, como Button, TextBox y DropDownList, tiene su propio conjunto de eventos que ocurren en respuesta a las acciones del usuario. Sin embargo, no todos los eventos de los controles Server son creados de la misma forma. Existe tres tipos de eventos de los controles Server:

Eventos Post-back. Estos eventos causan que la página Web sea enviada de regreso al servidor para procesamiento inmediato. Los eventos Post-Back afectan el desempeño porque disparan un viaje de ida y regreso al servidor.

Eventos Cached. Estos eventos son guardaros en el View State de la página para ser procesados cuando ocurren los eventos post-back.

Eventos de Validación. Estos eventos son manipulados en la página sin necesita de post-back o caching. Los controles de validación usan estos tipos de eventos.

El Button, Link Button e Image Button causan eventos post-back. El TextBox, DropDownList, ListBox, RadioButton y CheckBox proveen eventos cached; sin embargo, se puede sobrescribir este compartimiento estableciendo la propiedad AutoPostBack a True.

El procesamiento

Establecer los límites de la AplicaciónIIS define una aplicación Web como cualquier archivo que es ejecutado dentro de un conjunto de carpetas en su sitio Web. Los límites de una aplicación Web son determinados

Page 15: Aplicaciones Web con Visual C Sharp net.doc

por la estructura de su carpeta. El límite de una aplicación comienza con la carpeta que contiene la página de inicio y termina con la última carpeta subordinada.

Para pone un formulario Web o una página HTML como página de inicio, haga:1. En la ventana del Proyecto, seleccione el formulario Web o la página HTML que

quiere establecer como página de inicio de la aplicación2. Del menú del Proyecto, selecciones Web Project y luego seleccione Set As Start

Page del menú.

Administrar los Procesos

IIS ofrece tres opciones sobre como el servidor correrá su Aplicación Web: In-Process con IIS (Inetinfo.exe). Esta opción incrementa el desempeño porque

todas las llamadas son hechas in-process. Sin embargo no ofrece protección. Si una aplicación falla puede corromper la memoria y afectar Inetinfo.exe, al igual que otras aplicaciones corriendo in-process.

Agrupada con otros procesos de aplicaciones Web en DLLHost.exe. Esta es la opción por defecto y provee un balance entre la protección y el desempeño. Si una aplicación falla, puede afectar a las otras aplicaciones agrupadas, pero no afectaría el Inetinfo.exe.

Aislada en su propia instancia de DLLHOst.exe. Las aplicaciones aisladas están protegidas de afectar o ser afectadas por los problemas en otras aplicaciones. Sin embargo, las llamadas a otras aplicaciones debe cruzar las fronteras de los procesos y afectar el desempeño.

Use la protección Aislada para aplicaciones que son críticas para el negocio, pues afecta el desempeño y además, tiene un límite práctico de 10 procesos aislados por servidor.

Determinar cuándo termina una aplicaciónCuando un usuario pide una página de una aplicación Web por primera vez, IIS comienza una aplicación Web, si ya no está corriendo, y crea una sesión para ese usuario. Las sesiones son importantes por:

Permiten que ASP .NET mantenga datos específicos del usuario llamado estado de Sesión.

Determinan cuándo termina la aplicación, es decir, cuando la última sesión termine.

El valor de time-out por defecto de una sesión es de 20 minutos. Modificar este valor en el Web.config.

<sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;user id=sa;password=" cookieless="false" timeout="20" />

Page 16: Aplicaciones Web con Visual C Sharp net.doc

TRABAJANDO CON OBJETOS WEB

Fundamentos del Namespace

Comprender los Namespaces

Los namespaces son una manera de organizar el código, proveen protección de los conflictos entre nombres, a veces llamado colisiones de namespace. Para crear un namespace encierre su Class o Module en un bloque Namespace … End Namespace.

Para utilizar un namespace, haga:

Visual Basic .NETImports SystemImports System.Web

Visual C#using System;using System.Web;

Referencias vrs. Imports

Se añaden referencias al proyecto para usar namespaces que están fuera del proyecto actual. Use Imports para poder usar el namespace de manera abreviada.

Para añadir una referencia al proyecto:1. Del menú Proyecto, escoja Añadir Referencia.2. Seleccione la referencia desde las listas .NET, COM o Proyecto.3. La referencia se añade a la ventana del Proyecto.

Clases y Módulos

Visual Studio almacena el código en clases y módulos. Se utilizan las clases para los elementos que definen su propio almacenamiento; se usan los módulos para el código que no tiene datos persistentes. Además, se instancían las clases para crear los objetos antes de usarlos, mientras que se puede llamar a los módulos directamente.

Sin embargo, en Visual C#, todo el código está contenido en clases. Para usar métodos o propiedades sin crear un objeto antes, declárelos de tipo estático.

Visual Basic .NET y Visual C# utilizan cinco tipos de conceptos para trabajar con módulos y clases.

Conceptos orientados a Objetos

Concepto Visual Basic .NET Visual C#Definición Una clase se define como

Class … End Class, y un modulo como Module … End Module

Se define las clases usando class. Todo código ejecutable es parte de una clase

Page 17: Aplicaciones Web con Visual C Sharp net.doc

Acceso Existen cinco tipos de acceso para las clases, módulos y sus miembros: Public, Protected, Friend, Protected Friend y Private.

Existen cinco niveles de acceso para las clases y sus miembros: public, protected, internal, protected internal y private

Herencia Las clases pueden heredar los miembros de otras y sobrescribir, ocultar o sobrecargar los miembros de la clase heredada

Las clases pueden heredar los miembros de otra clase base y sobrescribir o sobrecargar los miembros de la clase heredada

Constructores y destructores Las clases tienen métodos New y Finalize que son llamados cuando un objeto basado en una clase se crea o destruye

Las clases tienen constructores y destructores que son llamados cuando un objeto basado en la clase es creado o destruido. El constructor tiene el mismo nombre de la clase, al igual que el destructor, el cual va precedido de ~

Clases e Interfaces Abstractas

Se puede crear interfaces, clases, métodos y propiedades abstractas. Las interfaces definen los nombres de los miembros y la lista de parámetros parea las clases que usa la interfaz. Los miembros abstractos proveen los elementos a ser heredados.

Se pueden definir interfaces, clases, métodos y propiedades abstractas. Las interfaces definen los nombres y la lista de parámetros para las clases que usan la interfaz. Los miembros abstractos proveen los elementos a ser heredados por las clases.

Niveles de acceso

Visual Basic Visual C# Disponible aPublic public Todos los miembros en

todas las clases y proyectosFriend internal Todos los miembros en el

proyecto actualProtected protected Todos los miembros en la

clase actual y clases derivadas. Solo pueden ser usadas en la definición de los miembros, no para las clases o módulos.

Protected Friend prtotected internal Todos los miembros en la clase actual y clases derivadas en el proyecto actual. Solo puede usarse en definiciones de los miembros, no para las clases o módulos.

Private private Disponible solo para la clase actual.

Page 18: Aplicaciones Web con Visual C Sharp net.doc

Herencia: ¿Quién hereda?

Herencia es el proceso de basar una clase en otra. La ventaja de la herencia es que puede mantener el código que escribe una vez se encuentra en la clase base y reutilizarlo muchas veces en la clase heredada.

Conceptos de Herencia

Visual Basic Visual C# Usar paraInherits Clasederivada:clasebase Base una clase en otra, heredar los

miembros de esa claseOverridable virtual Declarar que un miembro de una clase

puede ser sobrescrito en la clase derivada

Overrides override Declarar que un miembro de una clase derivada sobrescribe el miembro de la clase base

Shadows New Declarar que un miembro de una clase derivada esconde el miembro de la clase base

MustInherit abstract Declarar que una clase provee una plantilla para la clase derivada. Esta es una clase abstracta y no puede ser instanciada

MustOverride abstract Declara que un miembro de una clase provee una plantilla para su miembro derivado. Este es un miembro abstracto y no puede ser invocado.

MyBase base Llama a un miembro de la clase base desde la clase derivada

Me this Llama a un miembro de la instancia actual de la clase

Interface interface Crea una interfaz que define los miembros de una clase debe proveer

Implements NombreClase:nombreInterfaz Usa la definición de herencia de una clase

Existen cosas que no se pueden hacer con la herencia: No se puede heredar de más de una clase en una definición. El concepto de

multiherencia existe en muchos lenguajes, pero no es muy usado en la práctica. Las clases bases pueden derivarse de otras clases de una manera jerárquica.

Se puede derivar un clase de formulario Web de un formulario Web base. Visual Studio no soporta derivar nuevos formularios Web de formularios Web base.

Sobrescribir, Sobrecargar y Ocultar miembros

Una clase derivada hereda los miembros de su clase base. Si una clase derivada define un miembro con la misma declaración, sobrescribe el miembro base. Una declaración incluye le nombre, la lista de parámetros, los tipos de parámetros y el tipo de retorno.

Si una clase derivada define un miembro con el mismo nombre, pero una lista de parámetros diferentes, tipos de parámetros diferentes y tipos de retorno distintos, el miembro derivado sobrecarga u oculta el miembro base. Un elemento sobrecarga otro si el elemento base sigue estando disponible. Un elemento oculta a otro si el elemento derivado reemplaza al elemento base.

Page 19: Aplicaciones Web con Visual C Sharp net.doc

Clases Abstractas e Interfaces

Una clase abstracta es una clase que define una interfaz para una clase derivada. Es como un contrato que dice que todas las clases basadas van a proveer ciertos métodos y propiedades.

Las interfaces son similares a las clases abstractas en que proveen una plantilla que se puede usar para crear nuevas clases. La diferencia es que las interfaces no proveen ninguna implementación de los elementos de la clase.

Page 20: Aplicaciones Web con Visual C Sharp net.doc

Los namespaces en las aplicaciones Web

La jerarquía del Namespace

Namespace Contiene clases para System.Web Los objetos Application, Browser, Cache, Cookies,

Exception, Request, Response, Server y Trace. El objeto Application definido en el Global.asax se basa en la clase Application

System.Web.SessionState El objeto Session. Use esta clase para guardar y obtener los elementos almacenados en el Session state.

System.Web.Services El objeto WebService. Use estas clases para crear y usar Servicios Web

System.Web.UI Los objetos Page y Control. Use estas clases dentro del formulario Web para crear y controlar la interfaz de usuario de una aplicación. Los formularios Web se basan en la clase Page

System.Web.UI.WebControls Todos los objetos de controles del servidor.System.Web.UI.HTMLControls Todos los objetos de controles HTML.System.Web.Caching El objeto Cache. Use estas clases para controlar el caching

del lado del servidor para mejorar el desempeño de la aplicación.

System.Web.Mail Los objetos MailMessage, MailAttachment, y SmtpMail. Use estas clases para enviar mensajes mail desde su aplicación.

System.Web.Security Objetos de autenticación y módulos. Use estas clases para autenticar los usuarios y proveer seguridad dentro de su aplicación.

Cuando se programa una aplicación Web, se debe manejar dos tipos de objetos. El objeto Application. Derivado de la clase HttpApplication. Su definición reside en el

Global.asax Los objetos de formulario Web. Derivados de la clase Page. Su definición reside en

los módulos de formulario Web.

Uso del objeto Application

El objeto Application es el objeto de nivel más alto en la jerarquía de objetos de su aplicación. Use el objeto Application para configurar y almacenar la información del estado.

Page 21: Aplicaciones Web con Visual C Sharp net.doc

Cuando ASP.NET inicializa su aplicación, automáticamente instancia el objeto Global definido en el Global.asax. Use los eventos del objeto Global para configurar su aplicación e inicializar las variables de estado nivel de aplicación.

La clase base HttpApplication provee las propiedades y métodos para acceder los objetos subordinados del objeto Global. Estas propiedades y métodos se muestran en la siguiente Tabla.

Propiedad/Método Usarse paraApplication Almacenar elementos de datos en el estado ApplicationContext Obtener los objetos Trace, Cache, Error y otros del

contexto actualModules Acceder a los módulos httpRequest Leer una petición y obtener los objetos Browser,

ClientCertificates, Cookies, y Files de la petición actualResponse Escribir texto o datos a una respuesta y obtener los objetos

Cache, Cookies y Output de la respuesta actualServer Procesar las peticiones y las respuestas. El objeto Server

provee métodos de ayuda para la codificación y decodificación URL

Session Almacenar datos en el estado SessionUser Obtener información de autenticación sobre el usuario que

está realizando la petición actual. Por defecto, las aplicaciones Web permiten acceso anónimo

El siguiente ejemplo utiliza los objetos Request y Browser disponibles dentro del objeto Application.

protected void Application_BeginRequest(Object sender, EventArgs e){    // Fires at the beginning of each request.    if (Request.Browser.MajorVersion < 4)    {        // Disable advanced features.    }}

Page 22: Aplicaciones Web con Visual C Sharp net.doc

Uso del objeto Page

El objeto Page controla la interfaz de usuario de su aplicación.

Cuando un usuario pide una página a la aplicación, ASP.Net instancia automáticamente un formulario Web y muestra la página.

La clase base Page provee los métodos y las propiedades principales que usted usa con frecuencia cuando programa los formularios Web.

Propiedad/Método Usarse paraApplication Almacenar datos en el estado ApplicationCache Controlar como las respuestas son Controls Ir a controls en la páginaRequest Leer una petición y obtener los objetos

Browser, ClientCertificates, Cookies y Files de la petición actual.

Response Escribir texto o datos a una respuesta y obtener los objetos Cache, Cookies y Output de la respuesta actual

Server Procesa peticiones y respuestas. El objeto Server provee los métodos de ayuda para la codificación y decodificación URL

Session Almacena datos en el estado SessionTrace Habilitar o no el trace y escribir al log de

trace

Uso del objeto Request

El objeto Request contiene información enviada al cliente por el browser cuando una página es pedida a la aplicación.

Page 23: Aplicaciones Web con Visual C Sharp net.doc

El objeto Request provee métodos y propiedades para acceder los siguientes objetos subordinados.

Propiedad/Método Usarse paraBrowser Determinar las capacidades del browser que hace la

petición. Las propiedades del browser proveen el número de versión, si es o no un browser AOL, determina si soporta cookies y otra información

ClientCertificates Autentica al clienteCookies Obtiene información del cliente en forma de cookiesFiles Obtiene los archivos que son cargados por el clienteInputStream Lee y escribe a los datos enviados en el request

El siguiente código usa el objeto Request para determinar si el browser soporta las cookies y si una cookie en especial ya existe antes de guardar su valor en el estado Session.

private void Page_Load(object sender, System.EventArgs e){    // Run first time page is displayed.    if(!IsPostBack)        // Check if Browser supports cookies.        if(Request.Browser.Cookies)            // Check if the UName cookie exists.            if((Request.Cookies["UName"] != null))                                   // Get the value of the cookie.                Session["User"] = Request.Cookies["UName"].Value;}

Uso del objeto Response

Use el objeto Response para crear la respuesta a ser enviada desde el servidor al browser del Cliente.

Propiedad/Método Usarse paraCache Determinar cómo el servidor deposita las respuestas antes de

ser enviadas al clienteCookies Establecer el contenido de las cookies que serán enviadas al

clienteOutput Establecer u obtener los datos retornados al cliente como la

respuesta

Page 24: Aplicaciones Web con Visual C Sharp net.doc

El siguiente código crea una cookie y la envía al cliente como parte de la respuesta

private void Page_Load(object sender, System.EventArgs e){    if(!IsPostBack)        // If the browser supports cookies.        if (Request.Browser.Cookies)        {            // Create a cookie.            HttpCookie cookUname = new HttpCookie("UName");            cookUname.Value = "Wombat";            // Add the cookie.            Response.Cookies.Add(cookUname);        }}

Page 25: Aplicaciones Web con Visual C Sharp net.doc

Conservando la Información del Estado

Vistazo a los niveles de Estado

Como se vio en la unidad 2, los formularios Web son creados y destruidos cada vez que un browser del cliente hace una petición. Debido a esta característica, las variables declaradas dentro del formulario Web no guardan su valor después de que la página es desplegada. Para resolver este problema, ASP.NET provee las siguientes maneras de conservar las variables después de las peticiones:

Cadenas de Petición: Para pasar información entre las peticiones y las respuestas como parte de la dirección Web. Estas cadenas de petición son visibles al usuario y no deben contener información de seguridad como passwords

Cookies. Use las cookies para almacenar pequeñas cantidades de información en el cliente. Los clientes pueden rechazar las cookies así que usted debe anticipar esta posibilidad

View State. ASP.Net almacena los elementos adicionados a la propiedad de la página View State como campos ocultos dentro de la página

Session State. Use las variables de estado Session para almacenar los elementos que usted quiere mantener locales dentro de la sesión actual

Application State. Use las variables de estado Application para almacenar los elementos que usted quiere tener disponibles durante la aplicación

Uso de Cadenas de Petición

En HTML las cadenas de petición aparecen después de un signo de interrogación en el link. Ejemplo:http://WebForm1.aspx?UName=Wombat

Para enviar una cadena de petición, añádala a la dirección del método Redirect.

private void Button1_Click(object sender, System.EventArgs e){    // Redisplay this page with a QueryString    Response.Redirect("Webform1.aspx?UName=Wombat");}

Para obtener la cadena de petición, use el método QueryString del objeto Response. El siguiente código despliega el elemento UName de la cadena de petición creada.

private void Page_Load(object sender, System.EventArgs e){    // Display the query string.    Response.Write(Request.QueryString["UName"]);}

Uso de cookies

Los sitios Web por lo general usar las cookies para almacenar las preferencias del usuario y otra información específica del cliente. Debido a que pueden ser rechazadas, es importante verificar si el browser las permite antes de crearlas.

El siguiente código verifica si el browser soporta las cookies y luego guarda las preferencias del usuario.

private void Page_Load(object sender, System.EventArgs e){

Page 26: Aplicaciones Web con Visual C Sharp net.doc

    // Run the first time this page is displayed.    if(!IsPostBack)        // If the browser supports cookies.        if(Request.Browser.Cookies)        {            // Create a cookie.            HttpCookie cookUPrefs = new HttpCookie("UPrefs");            cookUPrefs.Value = "English";            // Add the cookie.            Response.Cookies.Add(cookUPrefs);        }}

El siguiente código verifica una cookie y luego obtiene su valor si está disponible.

private void Page_Load(object sender, System.EventArgs e){    // Run the first time this page is displayed.    if(!IsPostBack)        // If the browser supports cookies.        if(Request.Browser.Cookies)            // Check if the UPrefs cookie exists            if(Request.Cookies["UPrefs"] != null)                // Save the value of the cookie.                Session["Lang"] = Request.Cookies["UPrefs"].Value;}

Uso del ViewState

Debido a que el ViewState almacena datos en la página, es limitada la cantidad de elementos que se pueden serializar. Si desea almacenar elementos más complejos en el ViewState, debe convertir esos elementos de y hacia cadenas.

Por ejemplo, el siguiente código añade texto de un text box a las celdas en una tabla de la página. Debido a que no se puede almacenar objetos directamente en el ViewState, se necesita almacenar las cadenas en el procedimiento Button1_Click y luego crear un control de fila desde las cadenas, como se muestra en el procedimiento Page_Load.

private void Button1_Click(object sender, System.EventArgs e){    // Add text to the view state.    ViewState.Add(ViewState.Count.ToString(), TextBox1.Text);}

private void Page_Load(object sender, System.EventArgs e){    if (IsPostBack)        // For each item in the ViewState        foreach(StateItem staItem in ViewState.Values)        {            TableRow rowNew = new TableRow();            TableCell celNew = new TableCell();            // Set cell text.            celNew.Text = staItem.Value.ToString();            // Add cell to row.            rowNew.Cells.Add(celNew);            // Add row to table            Table1.Rows.Add(rowNew);        }

Page 27: Aplicaciones Web con Visual C Sharp net.doc

}

ASP.NET codifica los datos escondidos en la página para que no sean comprensibles por el usuario.

</HEAD><body MS_POSITIONING="GridLayout"><form name="Form1" method="post" action="WebForm1.aspx" id="Form1"><input type="hidden" name="__VIEWSTATE" value="dDwtMTMwNzIzMzU0Mzt0PHA8bDwwOzE7MjszOzQ7PjtsPFxlO1RoaXMgaXMgc29tZSB0ZXh0O1RoaXMgaXMgc29tZSB0ZXh0O1RoaXMgaXMgc29tZSB0ZXh0O1RoaXMgaXMgc29tZSB0ZXh0Oz4+Ozs+Oz4=" />

Uso de Estados Application y Session

Use los Estados Application y Session para almacenar datos que quiera mantener durante el tiempo de vida de la sesión o aplicación. Hay tener en cuenta las siguientes recomendaciones:

las variables de Aplicación y Sesión son creadas en el camino, sin un nombre de variable o chequeo de tipo. Se debe limitar los accesos a ellas.

Mantener el estado de Session afecta el desempeño. Las variables de aplicación están disponibles durante el proceso actual, pero no

entre todos los procesos. Los límites de la aplicación establecidos en el IIS determinan el alcance del Estado

Application.

Estructurar el acceso a las variables de Estado

Las variables de Aplicación y Sesión son muy poderosas y por tanto de mucho cuidado. Es fácil introducir errores en el código si estás se usan de una manera no estructurada.

La mejor manera de estructuras es declarar una variable al nivel de la página por cada elemento que necesite, y luego pedir el valor del Estado Application o Session en el procedimiento del evento Page_Load y guardar de nuevo las variables a nivel de página en el Page_Unload.

Aquí hay un ejemplo:

string mstrUname = "";

private void Page_Load(object sender, System.EventArgs e){    // Check if state variable exists.    if(Application["Uname"] != null)        // Get state variable.        mstrUname = Application["Uname"].ToString();    // Set variable    mstrUname = "Wombat";    // Use variable.    Response.Write(mstrUname);}

private void Page_UnLoad(object sender, System.EventArgs e){    // Save the state variables back.    Application["Uname"] = mstrUname; }

Page 28: Aplicaciones Web con Visual C Sharp net.doc

Apagar el Estado de Session

Si una página no requiere información del estado a nivel de Sesión, se puede apagar para obtener mejor desempeño.

Para apagar el Estado de Session de un formulario Web haga: Desde la ventana de propiedades del Formulario Web, coloque EnableSessionState

en Falso

Para apagar el Estado de Session de toda la aplicación haga: En el archivo Web.config, en el tag <sessionstate mode=> ponga como sigue:<sessionstate mode="False" …>

Page 29: Aplicaciones Web con Visual C Sharp net.doc

CREACIÓN DE LA INTERFAZ DE USUARIO

Uso de Controles

Seleccionar un Layout

Se pueden acomodar los controles de dos formas: Grid Layout: es la opción por defecto. Los controles son ubicados donde usted los

dibuja y tienen posición absoluta. Use este tipo de diseño para aplicaciones estilo Windows.

Flor Layout: este diseño ubica los controles de manera relativa a otros elementos en la página. Si se añaden los controles en tiempo de ejecución, los controles que ocurren después del nuevo elemento son trasladados hacia abajo.

Escoger el control adecuado

¿Cuando usar controles de servidor o controles HMTL? Miremos la diferencia en la siguiente tabla:

Característica Controles de Servidor Controles HTMLEventos de Servidor Disparan el evento

específico del control en el servidor

Solo pueden disparar eventos a nivel de página en el servidor (post back)

Administración del estado Los datos ingresados en un control son mantenidos durante las peticiones

Los datos no se conservan; deben guardarse y almacenarse usando scripts en la página

Adaptación Detectan el browser y ese adaptan

No se adaptan automáticamente; se debe detectar el browser por código

Propiedades Provee un conjunto de propiedades para cada control. Las propiedades permiten cambiar la apariencia del control y el comportamiento dentro del código del servidor.

Solo tienen atributos HTML

Se usan los controles HTML por: Migración de versiones recientes de ASP. Las versiones anteriores de ASP solo

soportaban los elementos HTML. No todos los controles requieren eventos del lado del servidor o manejo de su

estado. Se tiene control total sobre lo que se muestra con los controles HTML. Los controles

HTML no se ajustan con el browser, luego se tienen control directo sobre su apariencia.

Tarea Control de servidor Control HTML

Mostrar texto Label, TextBox, LiteralLabel, Text Field, Text Area, Password Field

Desplegar tablas Table, DataGrid Table

Page 30: Aplicaciones Web con Visual C Sharp net.doc

Seleccionar de una lista

DropDownList, ListBox, DataList, Repeater

List Box, Dropdown

Realizar comandos

Button, LinkButton, ImageButtonButton, Reset Button, Submit Button

Establecer valores

CheckBox, CheckBoxList, RadioButton, RadioButtonList

Checkbox, Radio Button

Mostrar imágenes

Image, ImageButton Image

Navegar Hyperlink none (use <a> tags in text)Controles de grupo

Panel, Placeholder Flow Layout, Grid Layout

Trabajar con fechas

Calendar none

Mostrar anunciosAdRotator noneMostrar reglas horizontales

Literal Horizontal Rule

Obtener archivos desde el cliente

none File Field

Almacenar datos dentro de la página

(provided by state management) Input Hidden

Validar datos

RequiredFieldValidator, CompareValidator, RangeValidator, RegularExpressionValidator, CustomValidator,ValidationSummary

none (use page-level)

Trabajar con texto

Para texto de solo lectura, se puede escribir de manera directa con Response.Write(“hola”), usar un control label, usar un control TextBox con propiedad de solo lectura, usar un control Literal y componer el texto en HTML.

Para mostrar texto editable, usar el control de servidor TexBox.

Trabajar con Tablas y Listas

Control Usarse paraListBox Desplegar texto de solo lectura en una lista con Scroll. DropDownListDesplegar texto de solo lectura en una lista de tipo drop-down.

TableDesplegar texto y controles en columnas y filas. Se puede crear tablas dinámicamente con TableRows y TableCells.

DataGridDesplegar texto y controles en columnas y filas usando una plantilla para la apariencia del control. DataGrid tienen capacidades de dar formato, ordenar y paginar.

DataListDesplegar filas de text y controles usando una plantilla para controlar la apariencia. Tiene capacidades de dar formato y selección.

RepeaterDesplegar filas de otros controles usando una plantilla. No tiene las capacidades del DataGrid y del DataList.

Page 31: Aplicaciones Web con Visual C Sharp net.doc

Añadir ítems a una lista o tabla en tiempo de diseño

Para añadir ítems estáticos a un control ListBox o DropDownList, seleccionar la propiedad Ítems. Para añadir ítems estáticos a una Tabla, seleccionar la propiedad Rows.

Añadir ítems a una lista o tabla en tiempo de ejecución

Para añadir ítems de manera dinamica, usar el método Add de la colección de Ítems del control ListBox y DropDownList.

private void butAdd_Click(object sender, System.EventArgs e){    ListBox1.Items.Add(txtSource.Text);    DropDownList1.Items.Add(txtSource.Text);}

Para una tabla, se debe crear las filas y celdas.

private void butAdd_Click(object sender, System.EventArgs e){    ListBox1.Items.Add(txtSource.Text);    DropDownList1.Items.Add(txtSource.Text);    // Add text to the page's ViewState.    ViewState.Add(ViewState.Count, txtSource.Text);    RebuildTable();}

private void RebuildTable(){    string[] arrWords;    string strWords;    TableRow rowNew;    TableCell celNew;    // For each string saved in ViewState.    for (int iCount1 = 0; iCount1 < ViewState.Count; iCount1++)    {        // Create a new table row.        rowNew = new TableRow();        // Get the string from ViewState.        strWords = ViewState(iCount1);        // Break the item list into an array.        arrWords = Split(strWords, ",");        // For each item in the array.        for (int iCount2 = 0;                  iCount <= arrWords.GetUpperBound; iCount2++)        {            // Create a new table cell.            celNew = new TableCell();            // Set the text to display in the cell.            celNew.Text = arrWords[iCount2];            // Add the cell to the table row.            rowNew.Cells.Add(celNew);        }        // Add the row to the table.        Table1.Rows.Add(rowNew);    }}

Page 32: Aplicaciones Web con Visual C Sharp net.doc

Obtener el ítem seleccionadote una Lista

Usar la propiedad SelectedItem, la cual retorna un objeto, el cual debe verificarse antes de ser usado.

private void Page_Load(object sender, System.EventArgs e){    // Test is an item is selected.    if (ListBox1.SelectedItem == null)        Label1.Text = "No item is selected.";    else        // Display the selected item.        Label1.Text = "The selected item is: " +            ListBox1.SelectedItem.Text;}

Usar Data Binding simple con las listas

Los controles pueden tener sus datos de cualquier fuente de datos.

Para ver como funciona, haga:

1. Cree un formulario web con un DropDownList y añada el siguiente código:

public string[] arrData= {"This", "that", "and",                       "the",  "other"};

private void Page_Load(object sender, System.EventArgs e){    Page.DataBind();}

2. Seleccione el DropDownList, y escoja la propiedad DataBinding.3. Seleccione la propiedad DataSource en la lista de Propiedades Bindables, y luego

selecciones la opción de la Expresión de Binding Personalizada y escriba arrData. Corra la aplicación.

Añadir ítems a los controles DataGrid, DataList y Repeater

1. Defina la fuente de datos2. Dibujar un control DataGrid, DataList o Repeater en el formulario Web y ligarlos con

la fuente de datos3. Editar las plantillas en el control para añadir los elementos HTML o los controles de

servidor que se repetirán. 4. Establezca la propiedad de los controles de servidor contenida en la lista o grilla para

que ligue con los datos de la fuente de datos en el contenedor.

Page 33: Aplicaciones Web con Visual C Sharp net.doc

Validar los Datos

Uso de la validación

Los controles de validación chequea la validez de los datos ingresados asociados con el control de servidor en el cliente antes de que la página sea envidad de regreso al servidor.

Los controles de validación chequean el estado del control del servidor especificado en la propiedad ControlToValidate.

Control de Validación Usarse paraRequiredFieldValidator Verificar si un control contienen datosCompareValidator Verificar si un elemento ingresado concuerda con la entrada

de otro controlRangeValidator Verificar si un elemento ingresado está entre dos valoresCustomValidator Verificar la validez de un elemento ingresado usando un

script del lado del cliente o código del lado del servidor, o ambos

ValidationSummary Despliega los errores de validación en una ubicación central o una descripción del error de validación general

Page 34: Aplicaciones Web con Visual C Sharp net.doc

Navegación entre Formularios

Maneras de Navegar

Metodo de Navegación Usarse para

Hyperlink control Navegar a otra página

Response.Redirect methodNavegar a otra página a través de código. Esto es igual que dar click en un hyperlink

Server.Transfer methodFinalizar el formulario Web actual y ejecutar un nuevo formulario Web. Este método solo funciona cuando se navega a formularios Web (.aspx)

Server.Execute method

Ejecutar un nuevo formulario Web mientras aún se despliega el formulario actual los contenidos de ambos formularios son combinados. Solo funciona cuando se navega entre formularios Web (.aspx)

Window.Open script method

Mostrar una página en un nuevo browser en el cliente

Uso de hyperlinks y redirección

Los controles de servidor de Hyperlink responden a evento clic mostrando la página que se encuentra en la propiedad NavigateURL del control. El control Hyperlink no expone ningún evento del lado del servidor, si se desea interceptar el evento clic por código, use el LinkButton o el ImageButton.

Para navegar desde un LinkButton o un ImageButton, use el método Redirect el objeto Response:

private void LinkButton1_Click(object sender, System.EventArgs e){    // Display next page.    Response.Redirect("NextPage.aspx");}

Uso del método Transfer

Usar el método Transfer es parecido a ejecutar un hyperlink o un método Redirect, con la diferencia de que Transfer puede retener alguna información de la página fuente a través de las peticiones. Al poner el argumento preserveForm del método Transfer en Trae, se puede tener el QueryString, el ViewState e información del evento disponible en el formulario destino.

Para hacer esto se debe poner el atributo EnableViewStateMac del formulario en False. Esto hace que se deshabilite la opción de hashing del ViewState y pueda ser leída por el nuevo formulario.

Page 35: Aplicaciones Web con Visual C Sharp net.doc

En el siguiente ejemplo se muestra como pasar información con Transfer desde un ImageButton

// Webform1.aspxprivate void ImageButton1_Click(object sender,     System.Web.UI.ImageClickEventArgs e){    // Transfer to another form, retaining ViewState.    Server.Transfer("Webform2.aspx", true);}

Use el método Request de Form para obtener la información del formulario fuente.

// Webform2.aspx    private void Page_Load(object sender, System.EventArgs e)    {        System.Collections.Specialized.NameValueCollection colForm;        // Get data from the source Web form.        colForm = Request.Form;        // Display the value from Webform1's TextBox.        Response.Write("TextBox1.Text: " + colForm["TextBox1"]              + "<br>");        // Display the X, Y coordinated of where the click occurred.        Response.Write("ImageButton X, Y coords: " +              colForm["imgTransfer.x"] + ", " + colForm["imgTransfer.y"]             + "<br>");    }

Uso del método Execute

Se usa el método Execute del objeto Server para procesar un segundo formulario sin dejar el primer formulario. Como en el método Transfer, se requiere que EnableViewStateMac esté en Falso.

El siguiente código ejecuta el formulario Table.aspx y despliega el control Literal en la página actual.

private void butExecute_Click(object sender, System.EventArgs e)    {        System.IO.StringWriter swrTarget = new              System.IO.StringWriter();        // Execute a Web form, store the results.        Server.Execute("Table.aspx", swrTarget);        // Display the result in a literal control.        litTarget.Text = "<h2>Table Results</h2>" +              swrTarget.ToString();    }}

El segundo argumento del método Execute es opcional. Si se omite, se despliega el resultado en la página actual.

Page 36: Aplicaciones Web con Visual C Sharp net.doc

Cuando se combina formularios Web con Execute, debe sae que cualquier evento post-back que ocurra en el segundo formulario borrará el primero. Por esto, combinar formularios es útil cunado el segundo formulario no contiene controles que disparen eventos post-back.

Mostrar una página en un nuevo browser

Para comenzar una nueva instancia de browser, use el método Open del objeto Window. Solo se puede hacer desde script del lado del cliente porque la nueva ventana se crea desde el cliente.

<INPUT style="Z-INDEX: 102; LEFT: 55px; WIDTH: 81px; POSITION: absolute; TOP: 156px; HEIGHT: 24px" onclick="window.open('webform2.aspx')" type="submit"value="New Window">

Para usarse una variable como target, haga:

<INPUT style="Z-INDEX: 102; LEFT: 55px; WIDTH: 81px; POSITION: absolute; TOP: 156px; HEIGHT: 24px" onclick="window.open('<%# urlTarget %>')" type="submit" value="New Window">

Para actualizar el URL target desde código del servidor, use una variable pública y data binding.

public string urlTarget;

Page 37: Aplicaciones Web con Visual C Sharp net.doc

private void Page_Load(object sender, System.EventArgs e){    urlTarget = "webform2.aspx";        Page.DataBind();}

Puesto que Window.Open toma distintos argumentos para controlar varios aspectos de la nueva ventana de browser, se puede crear una clase que contenga distintos settings.

public BrowserWindow urlTarget = new BrowserWindow();

private void Page_Load(object sender, System.EventArgs e){    urlTarget.URL = "Execute.aspx";    urlTarget.Top = 100;    urlTarget.Left = 100;    urlTarget.Width = 400;    urlTarget.Height = 400;    // Update HTML Button.    Page.DataBind();}

// Class to control new browser window create in scripts.// Default settings shown here are the same as browser defaults.public class BrowserWindow{    // String settings: default is blank.    public string URL = "about:blank";    // Integer settings: 0 invoked default.    public int Height = 0;    public int Width = 0;    public int Top = 0;    public int Left = 0;    // Boolean-like settings: 0 is "no", 1 is "yes".    public int ChannelMode = 0;    public int Directories = 1;    public int FullScreen = 0;    public int Location = 1;    public int Resizable = 1;    public int ScrollBars = 1;    public int Status = 1;    public int TitleBar = 1;    public int ToolBar = 1;    public int MenuBar = 1;}

El código para el botón que use estos settings sería como sigue:

<INPUT style="Z-INDEX: 103; LEFT: 25px; WIDTH: 126px; POSITION: absolute; TOP: 60px; HEIGHT: 33px" type="button" value="Show New Window" onclick="window.open('<%# urlTarget.URL %>', null, 'height=<%# urlTarget.Height %>, width=<%# urlTarget.Width %>, top=<%# urlTarget.Top %>, left=<%# urlTarget.Left %>, channelmode=<%# urlTarget.ChannelMode %>,directories=<%# urlTarget.Directories %>,fullscreen=<%# urlTarget.FullScreen %>,location=<%# urlTarget.Location %>,menubar=<%# urlTarget.MenuBar %>,resizable=<%# urlTarget.Resizable %>,scrollbars=<%# urlTarget.ScrollBars %>,status=<%# urlTarget.Status %>,titlebar=<%# urlTarget.TitleBar %>,toolbar=<%# urlTarget.ToolBar %>')">