Professional Documents
Culture Documents
PARA ENTORNO
WEB
2
NDICE Pgina
Presentacin 5
Red de contenidos 6
Unidad de aprendizaje 1
1.1 Tema 1 : Introduccin ASP.Net 4.0 8
1.2 Tema 2 : Diseo usando Master Pages y Administacin de Estados 36
1.3 Tema 3 : Creacin de Controles de Usuario 58
Unidad de aprendizaje 2
2.1 Tema 4 : Acceso de Datos con ADO.Net 76
2.2 Tema 5 : Arquitectura N capas 106
2.3 Tema 6 : Desarrollo de Carro de Compras 124
2.4 Tema 7 : Manejo de Servicios y WFC 139
2.5 Tema 8 : Manejo de la Seguridad en ASP.Net 163
Unidad de aprendizaje 3
3.1 Tema 9 : AJAX en ASP.Net Parte I 189
3.2 Tema 10 : AJAX en ASP.Net Parte II 205
3.3 Tema 11 : Manejo de Imgenes en ASP.Net y AJAX 229
Unidad de aprendizaje 4
4.1 Tema 12 : ASP.Net MVC (Modelo Vista Controlador) 247
PRESENTACIN
Visual Studio 2010 y su plataforma .NET FrameWork 4.0 permite implementar desarrollos
de software de manera rpida y robusta. ASP .NET admite crear aplicaciones en tiempo
mnimo bajo una plataforma de libreras del .NET Framework. De esta manera, la
aplicacin puede desarrollarse para entornos web y, luego, tener la posibilidad de emplear
cualquier dispositivo como cliente (telfonos, palm, etc.) con muy poca modificacin, sino
es nula.
El manual para este curso ha sido diseado bajo la modalidad de unidades de aprendizaje,
las que desarrollamos durante semanas determinadas. En cada una de ellas, el alumno
hallar los logros que se deber alcanzar al final de la unidad; el tema tratado, el cual ser
ampliamente desarrollado; y los contenidos que debe desarrollar. Por ltimo, encontrar
las actividades y trabajos prcticos que deber desarrollar en cada sesin, los que le
permitir reforzar lo aprendido en la clase.
REDDECONTENIDOS
Sitio web
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos, utilizando las tcnicas explicadas en clase y los controles
que proporciona el Framework 4.0, construyen el diseo de pginas web para personalizar el
diseo y apariencia de una pgina, adems de validar el ingreso de datos por parte de los
usuarios. Tambin, navegan entre distintas pginas del sitio web enviando informacin entre
ellas.
TEMARIO
ACTIVIDADES PROPUESTAS
1. HISTORIA DE ASP.NET
La primera versin de ASP.Net, la 1.0, apareci en el mercado en enero del 2002, junto con la
edicin inicial de Visual Studio para la plataforma .Net. Antes de este lanzamiento oficial, hubo
diversas Betas en las que an la tecnologa llevaba el nombre de ASP+. Estas estuvieron
disponibles para experimentar desde mediados del 2000, por lo que, en realidad, la plataforma
tiene mucho ms recorrido del que se desprende de las fechas oficiales.
La idea era sustituir al ASP 3.0 clsico. Por eso, le dejaron un nombre parecido, aunque no
tenga nada que ver, y ofrecer un entorno de desarrollo para el servidor con grandes ventajas
sobre lo existente del mercado. Un punto importante era tratar de brindar los mismos
paradigmas de desarrollo que las tradicionales aplicaciones de escritorio, pero aplicadas a la
web. Esto implicaba sobre todo orientacin a eventos y a objetos, uso de lenguajes
compilados, independencia automtica del navegador y productividad, mucha productividad.
Con ASP.Net, se empezaron a borrar los lmites entre cliente y servidor en el desarrollo web.
Ventajas:
El sitio es accesible desde otros equipos.
Puede probar con caractersticas de IIS, como autenticacin basada en HTTP, grupos de
aplicaciones y filtros ISAPI.
Inconvenientes:
Debe tener derechos administrativos para crear o depurar un sitio web de IIS.
Slo un usuario del equipo puede depurar un sitio web de IIS a la vez.
Vistas disponibles
Vista de diseo
Es la vista mediante la cual el usuario puede disear sus WebForms. Se conoce tambin como
WYSIWYG, (What you see is what you get), lo que ves es lo que obtienes. En ella, se arrastran
los controles, se le aplican algunas propiedades y se da el acabado final en cuanto al diseo de
las pginas web.
Vista de cdigo
Esta es la vista en la cual conforme el usuario crea el diseo se puede ver todo el cdigo en
HTML que se va generando. Incluso, las personas que dominan el lenguaje HTML pueden
incluir sus cdigos en esta vista. Para aquellos que no conocen HTML no ser problema, ya que
desde la vista de diseo, se genera todo el cdigo. La sugerencia es que se conozca, por lo
menos, lo bsico de HTML para que pueda mejorar la presentacin de sus pginas; adems, de
agregarle cierta funcionalidad del lado del cliente; por ejemplo, utilizando Javascript.
Vista de dividir
Esta es solo la combinacin de la vista de diseo con la de cdigo para que el usuario pueda
disear y al mismo tiempo ver el cdigo que se va generando.
Como se puede apreciar, se han generado varias carpetas y archivos dentro de nuestro sitio
web. Pasaremos a explicar cada una de ellas:
1. Account.- En esta carpeta, se alojan 4 WebForms cuya finalidad es manejar la
seguridad del sitio web. A continuacin, se mostrarn los siguientes WebForms:
a. ChangePassword.aspx.- Diseado para que el usuario que ingrese al sitio web
tenga la facilidad de poder cambiar su password en cualquier momento.
b. ChangePasswordSuccess.aspx.- Diseado para que el usuario pueda ver la
confirmacin de que su password fue cambiado con xito.
c. Login.aspx.- Diseado para que el usuario acceda al sitio web al proveer su
usuario y password para poder ingresar a algunas opciones de nuestro sitio
web que son solamente para aquellos que se hayan registrado.
4. Controles de Validacin
4.1. RequiredFieldValidator
Propiedades:
ControlToValidate: indica a que control se le asignar el control de validacin.
ErrorMessage: indica el mensaje de error que se mostrar en el caso que no se cumpla la regla
de validacin.
Ejemplo:
En el siguiente WebForm, debe ingresar su nombre y apellido como campos obligatorios; si no
los ingresa, se mostrarn los mensajes de Errory si se llenan los datos, mostrar el xito de la
validacin.
4.2. CompareValidator
El control de validacin de comparacin acepta dos controles como entrada para comparar el
valor de cada uno. Si los dos controles no satisfacen la condicin que se especific, el control
CompareValidator despliega un mensaje de error. Este control de validacin tambin permite
comparar el valor de un control contra un valor fijo.
Propiedades:
ControlToValidate: indica a que control se le asignar el control de validacin.
ErrorMessage: indica el mensaje de error que se mostrar en el caso que no se cumpla la regla
de validacin.
ControlToCompare: es el nombre del segundo control o control con el cual se va a comparar el
contenido del control que se est validando.
ValueToCompare: es el valor contra el cual se va a comparar el contenido del control que se
est validando. Se usa ControlToCompare si la comparacin es contra el contenido de otro
control o ValueToCompare si la comparacin es contra un valor esttico, pero no se usan
ambas propiedades solo se escoge una de las dos.
Operator: define el operador que se usar en la comparacin.
Ejemplo:
En el siguiente WebForm, debe ingresar su email y luego confirmarlo. Si estos no son iguales,
se mostrar el mensaje de Error. Si coinciden, se mostrar el xito de la validacin.
4.3. RangeValidator
Propiedades:
ControlToValidate: indica a que control se le asignar el control de validacin.
ErrorMessage: indica el mensaje de error que se mostrar en el caso que no se cumpla la regla
de validacin.
MinimumValue: establece el valor inicial o mnimo del rango de valores.
MaximumValue: establece el valor final o mximo del rango de valores.
Type: define el tipo de dato que se aceptar dentro del rango de valores. Son los mismos tipos
de datos que se ven en el CompareValidator.
Ejemplo:
En el siguiente WebForm, debe ingresar una nota entre los valores de 0 a 20 y la edad entre 18
y 65. En cualquiera de los casos, si el usuario ingresa un valor que est fuera del rango de
valores, se mostrarn los mensajes de Error. Si los dos datos que se ingresan estn dentro de
los rangos de valores, se mostrar el xito de la validacin.
4.4. CustomValidator
Este control permite escribir cdigo para crear la expresin de validacin, es decir, la lgica de
validacin puede ser personalizada para verificar la entrada del usuario contra una variable,
formula o entrada de una segunda fuente. El control de validacin CustomValidator es usado, a
menudo, para situaciones, tal y como la verificacin de un password, en el cual la entrada del
usuario es comparada con un cdigo de seguridad, que est almacenado en la base de datos.
El control CustomValidator valida del lado del servidor y puede validar del lado del cliente si el
navegador soporta validacin. En los otros controles de validacin ASP.net, crea los scripts de
validacin del lado del cliente y del servidor, en este control el programador debe escribir
ambos scripts.
Propiedades:
ControlToValidate: indica a que control se le asignar el control de validacin.
ErrorMessage: indica el mensaje de error que se mostrar en el caso que no se cumpla la regla
de validacin.
ClientValidationFunction: es el script que se requiere que ejecute del lado del cliente.
Ejemplo:
Esta vez se realizar un ejemplo donde el dato que proporcione el usuario debe ser un nmero
divisible entre 2. As, entonces, se obtendr un TextBox llamado txtNumero y un Button. Para
validar el nmero, se har primero la validacin del lado del cliente y, luego, del lado del
servidor para comprobar ambas validaciones.
Hay que observar que al haberse ejecutado desde el lado del servidor muestra el mensaje de
validacin, pero muestra el mensaje de Datos enviados con xito. Por qu? La respuesta es
que todas las validaciones anteriores eran del lado del cliente, y se ejecutaban en el cliente sin
nunca llegar al servidor a menos que la validacin haya sido correcta recin llegaba al servidor.
En este caso, como la validacin fue desde el servidor, primero llega a ste y despus hace la
validacin. Habra que ver una forma de validar que el mensaje de xito no se muestre.
4.5. RegularExpressionValidator
Este control de validacin verifica que la entrada cumpla con un patrn que ha sido definido
por una expresin regular. Este control permite verificar secuencias de caracteres predecibles,
tales como direcciones de correo electrnico, direcciones, nmeros de telfonos y cdigos
postales. Visual Studio.net proporciona patrones predefinidos para expresiones comunes, tales
como nmeros telefnicos.
Propiedades:
ControlToValidate: indica a que control se le asignar el control de validacin.
ErrorMessage: indica el mensaje de error que se mostrar en el caso que no se cumpla la regla
de validacin.
ValidationExpression: sirve para ingresar la expresin regular o patrn, tambin, existen
patrones ya definidos como las siguientes:
Carcter definicin
a Debe utilizar la letra a en minscula, cualquier letra que no precedida por una diagonal
invertida \, o parte de un rango, es un requerimiento para ese valor literal
1 Debe utilizar el nmero 1, cualquier nmero que no es precedido por una diagonal
invertida \, o parte de un rango, es un requerimiento para ese valor literal
? 0 un elemento
* 0 a muchos elementos
+ 1 N elementos (al menos 1)
[0-n] Rango de valor entero de 0 a N
{n} Longitud debe ser n caracteres
| Separacin de mltiples patrones vlidos
\ El siguiente carcter debe ser un carcter comando
\w Debe tener un carcter
\d Debe tener un nmero
\. Debe tener un punto
Con estos caracteres, se puede empezar a elaborar los patrones, como ejemplo sencillo se
puede hacer la validacin de un nmero de telfono con cdigo de rea que est entre
parntesis el cdigo de rea es de tres dgitos, puede usarse despus un guion y despus debe
introducirse un nmero telefnico de 7 dgitos.
Carcter definicin
\( Indica que se debe de usar un parntesis que abre
Entrada Descripcin
(12)1234567 Es incorrecto, porque el cdigo de rea solo tiene 2 elementos
(123)123456 Es incorrecto, porque el nmero telefnico tiene 6 elementos
(123)-123456 Es incorrecto, porque el nmero telefnico tiene 6 elementos
(123)1234567 Es correcto, porque no es necesario utilizar el guion
(123)-1234567 Es correcto, porque se puede utilizar el guion
Ejemplo:
Esta vez se realizar un ejemplo donde el dato que proporcione el usuario debe ser su email. Si
el email no tiene el formato correcto de una direccin de correo electrnico, mostrar el
mensaje de error. En caso que el email tenga el formato correcto, mostrar el xito de la
validacin.
4.6. ValidationSummary
Este control muestra un resumen de todos los errores de validacin que han aparecido en un
formulario; presenta el texto que ha sido introducido en la propiedad ErrorMessage de los
controles de validacin.
Estos mensajes los puede desplegar en forma de frase o en forma de lista con o sin vietas;
esto dependiendo del valor en el que se encuentre la propiedad DisplayMode del control
ValidationSummary
5.1. Introduccin
Un aspecto importante en la construccin de aplicaciones web es la navegacin entre
pginas y el uso de links, que en conjunto unen las pginas de nuestra aplicacin haciendo
de sta un todo. Si esto no fuera as, se tendran pginas aisladas que no se podran
comunicar entre s. En este artculo, se revisarn distintas tcnicas de navegacin, tanto
con cdigo a nivel del servidor como del cliente. Conocer estas tcnicas ser de gran
utilidad en el momento de disear una aplicacin Web.
Permite navegar hasta otra pgina, pero por cdigo. Es equivalente a la navegacin con el
control HiperLink. Para utilizar este mtodo, simplemente, introduce el siguiente cdigo en el
evento click de un control de servidor Button:
El mtodo Server.Transfer slo sirve para navegar entre pginas ASPX. Este mtodo termina la
ejecucin del Web Form que origina la llamada y navega hasta la pgina ASPX de destino. Si se
considera el comentario anterior, la utilizacin de este mtodo siempre va a generar una
excepcin del tipo ThreadAbortException, puesto que termina la ejecucin de la pgina de
origen. La sintaxis es la misma que para el mtodo Redirect:
'PaginaOrigen.aspx
Private Sub ImageButton1_Click(ByVal sender As System.Object, ByVal e As
System.Web.UI.ImageClickEventArgs)
Handles ImageButton1.Click
Server.Transfer("PaginaDestino.aspx", True)
End Sub
'PaginaDestino.aspx
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Dim pCollectionForm As System.Collections.Specialized.NameValueCollection
pCollectionForm = Request.Form
Label1.Text = pCollectionForm.Item("TextBox1")
End Sub
Esta tcnica permite navegar a pginas HTML ASPX. Como se trata de un script del lado del
cliente, a travs de este mtodo es posible controlar el aspecto y otras caractersticas propias
de la ventana de Internet Explorer, como por ejemplo el abrir el contenido en una nueva
ventana o en una ventana tipo popup. Desde los objetos del lado del servidor no es posible
controlar estas caractersticas, ya que este objeto de Internet Explorer slo existe en el lado
del cliente (DOM).
Hay varios mtodos para llamar a un script del lado del cliente desde cdigo del lado del
servidor. En esta ocasin, se abordar un mtodo para agregar cdigo de cliente en la pgina
HTML utilizando RegisterStartupScript. Este mtodo agrega secuencias de comandos al final
de la pgina HTML.
Agregaremos el script del cliente en el evento click de un control Button. Lo que har el cdigo
es agregar el script al final de la pgina de origen, lo que har que este se ejecute como si
siempre hubiese estado all.
Si en la aplicacin se redirige de una pgina Web ASP.NET a otra, a menudo desear pasar
informacin de la pgina de origen a la de destino.
La informacin se puede pasar entre pginas de varias formas:
Utilice una cadena de consulta que anexe la informacin a la direccin URL de la pgina de
destino, a partir de la propiedad QueryString.
En la pgina de destino, lea directamente en la pgina de origen los valores de los controles y
los valores de las propiedades pblicas utilizando la propiedad PreviousPage de la clase Page.
6.1. USO DEL QUERYSTRING
La propiedad QueryString o HttpRequest.QueryString obtiene la coleccin de variables de tipo
cadena de consulta HTTP.
El siguiente cdigo demuestra cmo pasar dos parmetros: nombre e ID en una QueryString a
una pgina Web: Default2.aspx utilizando Server.Transfer:
Server.Transfer("Default2.aspx?ID=123&nombre=ipod")
LABORATORIO 1.1
Tema: Validacin de entrada de datos y tcnica de navegacin del lado del cliente
Disee un WebForm mediante el cual un cliente pueda registrarse para poder realizar sus
compras y enve sus datos a otro WebForm donde se confirmen el envo de stos. Use
controles de validacin para el respectivo ingreso.
PageRegistro.aspx
RequiredFieldValidaror1:
ControlToValidate: txtNombre
ErrorMessage: Ingrese su nombre
Text: *
RequiredFieldValidaror2:
ControlToValidate: txtApellidos
ErrorMessage: Ingrese sus apellidos
Text: *
RequiredFieldValidaror3:
ControlToValidate: txtEmail
ErrorMessage: Ingrese su email
Text: *
RegularExpressionValidator1:
ControlToValidate: txtEmail
ErrorMessage: Email no vlido
Text: *
ValidationExpression: \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
CompareValidator1:
ControlToValidate: txtEmail2
ErrorMessage: Email no vlido
Text: *
ControlToCompare: txtEmail
Operator: Equals
Type: String
CustomValidator1:
ControlToValidate: txtFecha
ErrorMessage: Edad no permitida
Text: *
ClientValidationFunction: FuncionEdad
RegularExpressionValidator2:
ControlToValidate: txtTelefono
ErrorMessage: Telfono no valido
Text: *
ValidationExpression: \(\d{3}\)-(\d{7})
Programacin:
PageConfirmacion.aspx
Programacin:
LABORATORIO 1.2
Tema: Validacin de entrada de datos y tcnica de navegacin del lado del servidor
PageProductos.aspx
Para programar las clases de una forma ms rpida, digite la palabra Property y presione la
tecla Tab. Se dar cuenta que se debe crear una estructura de cdigo para que defina su
atributo privado y su propiedad. Con la tecla Tab, puede moverse a travs de toda la
estructura creada. De esta forma, la programacin es mucho ms rpida.
Programacin:
Dim ProductosList As New List(Of Producto)
PageRecepcion.aspx
Programacin:
Autoevaluacin
1. Cules son los tipos de sitios web que trabaja en Visual Studio 2010?
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
4. Cules son las tcnicas para poder navegar entre las pginas de un sitio web?
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
6. Qu es un QueryString?
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
Resumen
Cuando crea pginas Web ASP.NET, puede utilizar estos tipos de controles:
o Controles de servidor HTML: elementos HTML expuestos al servidor para que
se puedan programar.
o Controles de servidor Web: cuentan con ms funciones incorporadas que los
del servidor HTML.
o Controles de validacin: incorporan lgica para permitirle comprobar los
controles de entrada de los usuarios.
o Controles de usuario: controles que crea como pginas web ASP.NET. Se
pueden incrustar controles de usuario de ASP.NET en otras pginas
Para agregar controles a una pgina web, puede utilizar un diseador visual o bien,
puede escribir el elemento que representa el control en el marcado de la pgina.
ASP.NET es una tecnologa basada en servidor y, por lo tanto, no interacta
directamente con el explorador. Para interactuar con el explorador, se controla mejor
con secuencias de comandos de cliente escritas en JavaScript o Jscript.
A menudo, resulta til saber cmo se ha invocado una pgina web: si se ha invocado
mediante una solicitud original (HTTP GET), una devolucin de datos (HTTP POST), un
envo a travs de pginas desde otra pgina (HTTP POST) o una transferencia de otra
pgina utilizando el mtodo Transfer, o usando una devolucin de llamada del
explorador.
o Para determinar cmo se ha invocado una pgina web:
o IsPostBack: obtiene un valor que indica si la pgina se est cargando como
respuesta a un valor devuelto por el cliente o si es la primera vez que se carga.
o PreviousPage: obtiene un valor que indica la pgina que transfiri el control a
la pgina actual.
o IsCrossPagePostBack: indica si la pgina participa en una devolucin de datos
entre stas.
o IsCallback: obtiene un valor que indica si la solicitud de la pgina es el
resultado de una devolucin de llamada.
La clase Page expone una propiedad denominada PreviousPage. Si la pgina de origen
y la de destino se encuentran en la misma aplicacin ASP.NET, la propiedad
PreviousPage de la pgina de destino contiene una referencia a la de origen.
Referencias
http://msdn.microsoft.com/es-es/library/bb386451.aspx
Pgina referente a trabajar con controles en asp.net
http://msdn.microsoft.com/es-es/library/bb386451.aspx
Pgina referente a los controles de validacin
Bibliografa especializada:
http://www.macoratti.net
http://www.willydev.net
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos, utilizando las tcnicas explicadas en clase y los controles
que proporciona el Framework 4.0, construyen el diseo de pginas web con coherencia
utilizando Master Pages, adems de manejar las diferentes tcnicas de administracin de
estados de una aplicacin web.
TEMARIO
ACTIVIDADES PROPUESTAS
2.1.4. Cookies
Una cookie es una cantidad pequea de datos que se almacena en un archivo de texto en el
sistema de archivos del cliente o que se mantiene en la memoria durante la sesin del
explorador cliente. Contiene informacin especfica del sitio que el servidor enva al cliente
junto con el resultado de la pgina.
Para leer los nombres y los valores de todas las cookies disponibles para la pgina, puede
recorrer la coleccin Cookies mediante cdigo como el siguiente.
Dim output As System.Text.StringBuilder = New System.Text.StringBuilder
Dim aCookie As HttpCookie
For i as Integer= 0 to Request.Cookies.Count - 1
aCookie = Request.Cookies(i)
output.Append("<br/>")
output.Append("Name=" & Server.HtmlEncode(aCookie.Name) & "<br />")
output.Append("Value=" & Server.HtmlEncode(aCookie.Value) & "<br />")
Next
Label1.Text = output.ToString()
5.1.1. Session_OnStart
Se ejecuta al principio de una solicitud, si sta inicia una nueva sesin. Se utiliza para inicializar
las variables de sesin, as como para realizar el seguimiento de la informacin relacionada con
la sesin.
5.1.2. Session_OnEnd
Se ejecuta cuando se llama al mtodo Abandon o cuando la sesin ha caducado. Una sesin
caduca cuando el nmero de minutos especificado por la propiedad Timeout transcurre sin
que se haya creado ninguna solicitud para la sesin.
Si la propiedad Mode del objeto Session es StateServer o SQLServer, se omite el evento
Session_OnEnd en el archivo Global.asax. Puede utilizar el evento Session_OnEnd para limpiar
la informacin relacionada con la sesin.
El estado de aplicacin es un repositorio de datos disponible para todas las clases de una
aplicacin ASP.NET. El estado de aplicacin se almacena en la memoria del servidor y ofrece
ms rapidez que el almacenamiento y la recuperacin de informacin de una base de datos.
El estado de aplicacin se almacena en una instancia de la clase HttpApplicationState. Esta
expone un diccionario de objetos con valores y claves. La instancia de HttpApplicationState se
crea la primera vez que el usuario tiene acceso a cualquier recurso de direccin URL de la
aplicacin.
System.Web.Caching.CacheItemPriority.Default, Nothing))
LABORATORIO 2.1
Tema: Diseo con Master Pages
En la vista de cdigo, podr ver lo que se genera y apreciar la etiqueta ContentPlaceHolder. Esa
debe ser el rea del Master Page que debe quedar vaco para que sea llenado en las pginas de
contenido.
LABORATORIO 2.2
Tema: Creacin de pginas de Contenido y Manejo de Cookies
Disee un WebForm donde el usuario pueda acceder al sitio web usando su usuario y
password. El login del usuario debe almacenarse en una cookie y luego al cargarse la
pgina de compras debe mostrarse el login del usuario, leyndose desde la cookie
creada. Esta pgina no es de contenido.
Login.aspx
Agregue otro WebForm y, en este caso, s ser una pgina de contenido que heredar
el diseo del Master Page creado. Seleccione la casilla que dice Seleccionar pgina
maestra
PageCompras.aspx
Programacin: (Login.aspx)
Protected Sub btnIngresar_Click(ByVal sender )
Dim aceptado As Boolean = False
Select Case txtUsuario.Text.ToLower
Case "pepe"
If txtPassword.Text = "Jose" Then
aceptado = True
End If
Case "rafa"
If txtPassword.Text = "Rafael" Then
aceptado = True
End If
Case "pili"
If txtPassword.Text = "Pilar" Then
aceptado = True
End If
Case "guille"
If txtPassword.Text = "Guillermo" Then
aceptado = True
End If
Case Else
aceptado = False
End Select
If aceptado Then
Response.Cookies("datos").Values.Add("usuario", txtUsuario.Text)
Response.Redirect("PageCompras.aspx")
Else
Response.Write("<font color=red><b>" & "Usuario no autorizado" & _
"</b></font>")
End If
End Sub
LABORATORIO 2.3
Tema: Administracin de estados usando ViewState
Programacin: (PageCompras.aspx)
Function CrearCarro() As DataTable
Dim tabla As New DataTable
With tabla.Columns
.Add("Producto", Type.GetType("System.String"))
.Add("Precio", Type.GetType("System.Double"))
.Add("Cantidad", Type.GetType("System.Int32"))
.Add("SubTotal", Type.GetType("System.Double"), "Precio*Cantidad")
End With
Return tabla
End Function
Autoevaluacin
1. Defina cada una de las opciones para administrar el estado en el cliente
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
4. Cmo escribir una cookie? Se puede definir una cookie con varios valores?
Explique.
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
Resumen
El estado de vista es el mtodo que utiliza el marco de trabajo de la pgina ASP.NET
para conservar los valores de pgina y control entre acciones de ida y vuelta. La
propiedad ViewState es un diccionario que contiene pares clave/valor con los datos
del estado de vista.
El estado de sesin de ASP.NET permite almacenar y recuperar los valores de un
usuario cuando el usuario explora diferentes pginas ASP.NET que conforman una
aplicacin Web. El estado de sesin de ASP.NET identifica las solicitudes recibidas
desde el mismo explorador durante un perodo limitado de tiempo como una sesin y
conserva los valores de las variables durante la duracin de esa sesin. ASP.NET
proporciona dos eventos que ayudan a administrar las sesiones de usuario:
Session_OnStart se desencadena cuando comienza una nueva sesin, y
Session_OnEnd se desencadena cuando se abandona o caduca una sesin.
El estado de aplicacin es un repositorio de datos disponible para todas las clases de
una aplicacin ASP.NET. El estado de aplicacin se almacena en la memoria del
servidor y ofrece ms rapidez que el almacenamiento y la recuperacin de informacin
de una base de datos.
La cach de aplicaciones permite almacenar, en memoria, datos arbitrarios mediante
programacin utilizando pares de clave y valor. La cach de aplicaciones son voltiles,
lo que significa que no se almacenan en memoria durante toda la duracin de la
aplicacin.
Un Master Page es un archivo de ASP.NET con la extensin .master que tiene un diseo
predefinido que puede incluir texto esttico, elementos HTML y controles de servidor.
El Master Page se identifica mediante una directiva @Master que reemplaza la
directiva @Page utilizadas en las pginas aspx.
Para definir el contenido de los controles de la pgina principal, cree pginas de
contenido individuales, que son pginas ASP.NET (archivos .aspx y, opcionalmente,
archivos de cdigo subyacente) que estn enlazadas a una pgina principal concreta. El
enlace se establece en la directiva @ Page de la pgina de contenido al incluir un
atributo MasterPageFile que apunta a la pgina principal que se va a utilizar.
Puede adjuntar pginas de contenido a un Master Page en tres niveles:
o En el nivel de la pgina, puede utilizar una directiva de pgina en cada pgina
de contenido para enlazarla a una pgina principal.
o En el nivel de la aplicacin, en el Web.config, puede especificar todas las
pginas de ASP.NET (archivos .aspx) de la aplicacin que se van a enlazar.
o En el nivel de la carpeta, la configuracin se define en un archivo Web.config
en una nica carpeta.
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos, utilizando las tcnicas explicadas en clase y los controles
que proporciona el Framework 4.0, construyen el diseo de controles de Usuario Web para
reutilizar el cdigo en un Sitio Web, adems de realizar un desarrollo mucho ms rpido
trabajando de esta manera. Tambin, desarrollan controles de asistente para un Sitio Web.
TEMARIO
ACTIVIDADES PROPUESTAS
Aunque debe elegir un nico lenguaje cuando crea un control de usuario, puede incluir
diversos, cada uno de ellos creado con un lenguaje diferente, en una misma pgina Web
ASP.NET. Por ejemplo, puede crear con Visual Basic un control de usuario que importe datos
de un archivo XML y crear con C# otro que contenga un formulario de pedido, y puede incluir
ambos controles en la misma pgina Web ASP.NET.
En ocasiones, es posible que necesite cierta funcionalidad en un control que no est incluida
en los controles de servidor Web ASP.NET integrados. En estos casos, puede crear sus propios
controles. Dispone de dos opciones. Puede crear lo siguiente:
Los controles de usuario son mucho ms fciles de crear que los controles personalizados, ya
que es posible reutilizar los ya existentes. Esto permite crear con facilidad controles con
elementos de interfaz de usuario complejos.
Un control de usuario se diferencia de una pgina Web ASP.NET en los siguientes aspectos:
En un control de usuario puede utilizar los mismos elementos HTML (excepto html, body y
form) y controles Web que en una pgina Web ASP.NET. Por ejemplo, si est creando un
control de usuario para utilizar una barra de herramientas, puede colocar una serie de
controles de servidor Web Button en el control y crear controladores de eventos para los
botones.
Tenga en cuenta que el control de usuario es muy similar a una pgina ASP.NET, ya que
contiene varios (un control TextBox y dos Button) y un cdigo que dirige los eventos Click de
los botones y el evento Load de la pgina. Sin embargo, el control no contiene ningn formato,
excepto para los controles, y en lugar de una directiva @Page contiene una directiva
@Control.
LABORATORIO 3.1
Tema: Creacin de un Control Wizard. Este control nos permite configurar pasos para
poder ejecutar alguna tarea.
Haga Click en el link que dice Step 1 y agregue un texto que diga Nombre y al lado un control
TextBox.
Haga Click en el link que dice Step 2 y agregue un texto que diga Email y al lado un control
TextBox.
Haga Click en el Botn Agregar y agregue un paso que Diga en el Title Finalizado y en su
propiedad StepType=Complete.
De las tareas de Wizard seleccione en la opcin Paso = Finalizado y haga el siguiente diseo:
Programacin:
De las Tareas de Wizard, seleccione el Paso 1. Compile con Ctrl + F5 y pruebe la aplicacin.
LABORATORIO 3.2
Tema: Creacin de un Web Control de Usuario
Programacin:
Protected Sub AddItem(ByVal li As ListItem)
TargetList.SelectedIndex = -1
TargetList.Items.Add(li)
End Sub
juntos especifican cmo se declara el control de usuario en la pgina. El atributo Src especifica
el archivo y, si es necesario, la ruta de acceso donde est ubicado el archivo de cdigo fuente.
1. Presione CTRL+F5 para ejecutar la pgina. La pgina aparece en el explorador con las
dos listas y tres botones que constituyen su control de usuario.
2. Haga clic en el botn >> (AddAll). Todos los valores de la lista SourceList se copian en
la lista TargetList.
3. Haga clic en cada elemento de la lista TargetList, de uno en uno, y luego haga clic en el
botn X (Remove) hasta que haya quitado todos los elementos.
4. Seleccione un valor nico en la lista SourceList y, a continuacin, haga clic el botn >
(AddOne).
El valor nico se copia en la lista TargetList.
5. Si lo desea, experimente ms con el control hasta que est seguro de que funciona
como esperaba.
6. Cuando finalice, cierre el explorador.
LABORATORIO 3.3
Tema: Agregar propiedades y mtodos personalizados al control de usuario.
Ahora, el control de usuario funciona, pero no es todava til como un control de uso general.
Una versin ms prctica del control de usuario le permitira hacer lo siguiente:
La realizacin de estas tareas requiere que la pgina host pueda comunicarse con el control de
usuario para compartir valores (establecer y leer propiedades) y emitir comandos (llamar a
mtodos). En esta parte, se cambiar el control de usuario y se le agregar algunos miembros
(propiedades y mtodos).
Ahora, tiene las propiedades definidas. Sin embargo, todava debe modificar el cdigo
existente en el control de usuario para aprovechar el valor de la propiedad AllowDuplicates.
El cdigo realiza la misma funcin que antes (agrega un elemento a la lista TargetList), pero
ahora tambin comprueba si la propiedad AllowDuplicate est establecida en true. Si la
propiedad AllowDuplicate se establece en true, el elemento se agrega. Si la propiedad
AllowDuplicate se establece en false, el cdigo busca un elemento existente que tenga el
mismo valor que el nuevo elemento propuesto y, a continuacin, agrega el nuevo elemento si
no encuentra ningn elemento existente.
Como va a establecer el contenido de la lista SourceList utilizando una propiedad, puede quitar
los datos de prueba que introdujo A, B, C.
Este mtodo me ayudara establecer cul ser el origen de datos del control SourceList:
Programacin:
LABORATORIO 3.4
Tema: Reutilizando un Control de Usuario en distintos Web Forms.
Programacion
Autoevaluacin
1. Cules son los tipos de controles de usuario que se pueden desarrollar?
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
Resumen
Aunque debe elegir un nico lenguaje cuando crea un control de usuario, puede incluir
diversos controles de usuario, cada uno de ellos creado con un lenguaje diferente, en
una misma pgina Web ASP.NET. Por ejemplo, puede crear con Visual Basic un control
de usuario que importe datos de un archivo XML y crear con C# otro que contenga un
formulario de pedido, y puede incluir ambos controles en la misma pgina Web
ASP.NET.
Puede almacenar en cach el resultado de un control de usuario independientemente
del resto de la pgina Web ASP.NET en que est incluido. Esta tcnica, denominada
almacenamiento en cach de fragmentos, puede mejorar el rendimiento del sitio. Por
ejemplo, si el control de usuario contiene un control de servidor ASP.NET que realiza
una solicitud a la base de datos, pero el resto de la pgina solo contiene texto literal y
cdigo simple que se ejecuta en el servidor, puede utilizar en el control de usuario el
almacenamiento en cach de fragmentos para mejorar el rendimiento de la aplicacin
En ocasiones, es posible que necesite cierta funcionalidad en un control que no est incluida
en los controles de servidor Web ASP.NET integrados. En estos casos, puede crear sus propios
controles. Dispone de dos opciones. Puede crear:
Los controles de usuario son mucho ms fciles de crear que los controles personalizados, ya
que es posible reutilizar los ya existentes. Esto permite crear con facilidad controles con
elementos de interfaz de usuario complejos.
Bibliografa especializada:
http://www.macoratti.net
http://www.willydev.net
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos elaboran aplicaciones Web que acceden a un origen de datos
usando el modelo de objetos ADO.NET.
TEMARIO
El modelo de objetos ADO.NET
Manejo de datos utilizando DataSet y DataReader
Manejo de controles de datos: GridView, DataList, DropDownList
Manejo de controles DataSource: SqlDataSource, ObjectDataSource y XmlDataSource,
LinqDataSource
ACTIVIDADES PROPUESTAS
Los alumnos manejan la conexin a la base de datos de un origen de datos.
Los alumnos consultan y actualizan los datos desde un origen de datos
Los alumnos configurar los controles enlazados a los datos para realizar operaciones de
consultas y actualizacin.
La mayora de las aplicaciones se escriben para que procesen informacin que est
almacenada o lo estar en un soporte concreto: una base de datos o un RDBMS. Es
fundamental contar con servicios que hagan posible conectar con esos recursos y transferir la
informacin desde y hacia la aplicacin.
Estos servicios reciben la denominacin genrica de ADO.NET. Esta nueva iteracin aporta una
serie de interfaces y objetos, as como nuevos controles y mejoras en las clases ya existentes y,
tambin, en el propio motor que se encarga de la manipulacin de los datos en el cliente.
ADO.NET incorpora varios proveedores de datos, entre ellos dos que permiten conectar con
SQL Server y Oracle, as como otros que facilitan el uso de controladores ODBC
2.1.1 El DataSet
Est diseado para el acceso a datos independientemente del origen de datos. Como
resultado, se puede utilizar con mltiples y distintos orgenes de datos, con datos XML o para
administrar datos locales de la aplicacin. El DataSet contiene una coleccin de uno o ms
objetos DataTable formados por filas y columnas de datos, as como informacin sobre claves
principales, claves externas, restricciones y relaciones relativas a los datos incluidos en los
objetos DataTable
Proveedor de Datos
System.Data.SqlClient: acceso a datos para SQL Server 7.0 o posterior
System.Data.OleDb: origen de datos que se exponen mediante OLE DB
System.Data.Odbc: origen de datos que se exponen mediante ODBC
System.Data.OracleClient: acceso a datos de Oracle 8.1.7 o posterior
Los proveedores de datos de .NET Framework tambin incluyen las que se enumeran a
continuacin:
Esta seccin describe stas y otras caractersticas del acceso a datos en ASP.NET 4.0.
Prcticamente, todas las aplicaciones Web dinmicas realizan algn tipo de acceso a datos y,
afortunadamente, ASP.NET 4.0 facilita mucho esta accin. A diferencia de versiones
anteriores, que requera que los desarrolladores escribieran cdigo personalizado para
recuperar y enlazar los datos a controles de servidor, ASP.NET 4.0 permite una solucin
declarativa para el enlazado a datos que requiere poco cdigo para los escenarios de datos
ms comunes, como por ejemplo:
ASP.NET 4.0 tiene dos tipos de controles de servidor que participan en este modelo declarativo
de enlazado a datos. Estos manejan toda la complejidad del modelo Web para escenarios de
datos, de forma que los desarrolladores no tienen que entender los eventos del ciclo de vida
de las peticiones para realizar el enlazado de los datos. Otro beneficio es que se puede
extender de forma sencilla para soportar el acceso a datos de otros proveedores.
Nombre Descripcin
SqlDataSource Permite enlazar a una base de datos SQL representada por un proveedor
ADO.NET, como por ejemplo Microsoft SQL Server.
ObjectDataSource Permite enlazar a un objeto de capa intermedia como los de capa de
acceso a datos o un componente de negocios.
AccessDataSource Permite enlazar a una base de datos Microsoft Access (Jet).
SiteMapDataSource Permite enlazar a la jerarqua mostrada por un proveedor de navegacin
de sites de ASP.NET 4.0.
LinqDataSource Permite el uso de Language-Integrated Query (LINQ) en una pgina web
ASP.NET a travs de texto de marcado para recuperar y modificar los
datos de un objeto de datos.
XmlDataSource Permite enlazar a un fichero o documento XML.
Nombre Descripcin
GridView Presenta los datos en formato de "rejilla" (grid). Es una evolucin del control
DataGrid, y puede aprovechar automticamente las caractersticas de la fuente de
datos.
DetailsView Presenta un slo elemento en una tabla de parejas etiqueta/valor, similar a la
vista de formulario de Microsoft Access. Este control tambin puede aprovechar
automticamente las caractersticas de la fuente de datos.
FormView Presenta de la forma definida en una platilla personalizada un slo elemento de
datos. Presenta un elemento en una tabla de parejas etiqueta/valor, similar a la
vista de formulario de Microsoft Access. Este control tambin puede aprovechar
automticamente las caractersticas de la fuente de datos.
TreeView Presenta los datos en una vista de rbol jerrquico de nodos expandibles.
Menu Presenta los datos en un men dinmico expandible (incluyendo flyouts).
LABORATORIO 4.1
Tema: Conectarse a una Base de Datos SQL Server
Haga Click de Tareas Comunes la opcin que dice Configure Data Source
Se abrir el siguiente cuadro de dilogo donde debe dar click en el Botn New Connection
Haga Click en el Botn Continue y llene los parmetros que muestra la figura a continuacin:
(el password en nuestro caso es sql)
Haga Click en el botn Siguiente o Next y debe colocar un nombre que usted elija para que la
cadena de conexin se guarde en el archivo de configuracin. En este caso, se le pondr Cn.
Haga Click en el botn Siguiente o Next. Seleccionar la tabla desde la que se van a consultar
los datos.
Haga Click en el botn Siguiente o Next. Seleccionar los campos que se van a consultar.
Haga Click en el botn Siguiente o Next y haga click en el botn Test Query.
Ahora, seleccione el control GridView y de Tareas Comunesy, luego, elija la opcin el Origen
de Datos o Data source as como se muestra en la figura:
Se puede agregar otras funcionalidades como Paginacin y Ordenacin siguiendo los pasos que
se muestran a continuacin:
Para cambiar la cantidad de registros por pgina, solo modifique la propiedad PageSize del
GridView y colquele el valor que necesite.
Finalmente, revise el archivo Web.Config que se debe haber creado, automticamente, donde
podr visualizar la cadena de conexin con nombre Cn. sta la puede reutilizar en otro
webForm.
LABORATORIO 4.2
Tema: Conectarse a un origen de Datos tipo Objeto.
2. Crear un objeto DataSet que ser donde se establecern los objetos de acceso a datos
mediante los TableAdapters.
3. De la Pantalla que aparece en el DataSet, haga click en el link que dice Server
Explorer
6. Seleccione la primera opcin del Asistente que aparece, ya que se crear una
sentencia SQL.
9. Haga Click en Siguiente y coloque los nombres de los mtodos, tal como lo muestra
la siguiente figura:
10. Haga Click en Siguiente y verifique que las sentencias se hayan generado con xito:
16. Haga Click en Finalizar y Configure el GridView para que se enlace con el
ObjectDatasource:
Pero se pidi que solo mostrara el nmero de factura, fecha de facturacin y Fecha de
cancelacin, para lo cual se va a configurar el GridView:
De la lista de Campos Seleccionados, eliminar todos, dejando solo aquellos que se han pedido:
LABORATORIO 4.3
Tema: Conectarse a un origen de Datos usando del modelo de Clases LINQ.
3. Haga Click en el link que dice Server Explorer y arrastre la tabla TB_FACTURA y
TB_CLIENTE para generar las 2 Clases.
11. Del siguiente cuadro de dilogo seleccione el TB_FACTURA y los campos que va a
mostrar. Luego, d Click en el botn WHERE:
12. Configure la sentencia WHERE, tal como aparece en la siguiente figura. Luego, haga
click en Agregar.
13. Luego, haga click en OK y se mostrar las siguiente figura. Se dar cuenta que ahora se
gener otro LinqDataSource.
14. Para finalizar de las Tareas Comunes del DropDownList, habilite la opcin que dice
Habilitar AutoPostBack:
Autoevaluacin
1. Cules son los tipos de controles de fuente de datos?
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
Resumen
ADO.NET incorpora varios proveedores de datos, entre ellos dos que permiten
conectar con SQL Server y Oracle, as como otros que facilitan el uso de controladores
ODBC y OLE DB para acceder a aquellos provenientes de Excel, Access, MySQL, etc.
Existen dos componentes de ADO .NET, que se pueden utilizar para obtener acceso a
datos y manipularlos: DataSet, Proveedores de datos de .NET FrameWork.
Proveedores de datos sirve para conectarse a una base de datos, ejecutar comandos y
recuperar resultados. Los proveedores de datos de .NET Framework crean un nivel
mnimo entre el origen de datos y su cdigo, con lo que aumenta el rendimiento sin
sacrificar su funcionalidad.
Los controles enlazados a datos representan datos como marcados al explorador que
realiz la solicitud. Se pueden enlazar a un control de origen de datos y buscar datos
automticamente en el momento apropiado del ciclo de vida de la solicitud de pgina.
UNIDAD DE
APRENDIZAJE
Arquitectura N Capas
Al trmino de la unidad, los alumnos elaboran aplicaciones Web que acceden a un origen de datos
usando el modelo de objetos ADO.NET bajo la arquitectura N Capas.
TEMARIO
Capa de entidades de negocio: Creacin de las clases, atributos y propiedades.
Capa de datos: Conexin a la Base de datos, clases y Mtodos de acceso a datos.
Capa de negocio: Clases y Mtodos que llamarn a los de la capa de datos.
Capa de presentacin: Diseo de GUI Web Forms
ACTIVIDADES PROPUESTAS
Los alumnos manejan la conexin y operaciones a la base de datos desde la Capa de
Datos a travs de los mtodos que se implementan.
Los alumnos usan Entidades de Negocio para actualizar datos pasando la informacin
desde la Capa de Presentacin a la Capa de Datos.
Los alumnos configuran los controles enlazados a los datos utilizando los mtodos de
la Capa de Negocio.
1. Arquitectura N Capas
Esta forma de desarrollo se ha implementado hace varios aos con el objetivo principal de
reutilizar cdigo y que el mantenimiento de las aplicaciones sea mucho ms rpido y
ordenado. El manejo de Capas permite agrupar ciertas funciones que cumplen un objetivo
especfico. Por ejemplo si yo quiero registrar, modificar o eliminar Clientes, tendr una Clase
Cliente, donde irn todos esos mtodos, los cuales tendrn como objetivo manipular o
actualizar los datos de un cliente.
Los componentes que realizan tipos de funciones similares se pueden agrupar en capas, que
en muchos casos estn organizados en forma de apilamiento para que los componentes que se
encuentran por "encima" de una capa determinada utilicen los servicios proporcionados por
sta, y un componente especifico utilizar la funcionalidad proporcionada por otros
componentes de su propia capa, y otras capas "inferiores", para realizar su trabajo.
Desde un punto de vista de alto nivel, se puede considerar que la solucin basada en servicios
est formada por varios servicios, los cuales se comunican entre s pasando mensajes. Desde el
punto de vista conceptual, los servicios se pueden considerar como componentes de la
solucin global. Sin embargo, internamente, el servicio est formado por componentes de
software, al igual que cualquier otra aplicacin, los cuales se pueden agrupar de forma lgica
en servicios de presentacin, empresariales y de datos.
Laboratorio 5.1
Tema: Capa de Entidades de Negocio
Laboratorio 5.2
Tema: Capa de Acceso a Datos
Agregar un Proyecto de tipo Librera de Clases llamado DataLayer. Este tipo genera archivos
DLL que pueden ser reutilizados luego en otros.
Imports System.Data
Imports System.Data.SqlClient
Imports BusinessEntityLayer
Public Class ProveedorDAO
Imports System.Data
Imports System.Data.SqlClient
Imports BusinessEntityLayer
Laboratorio 5.3
Tema: Capa de Negocio
Agregar un Proyecto de tipo Librera de Clases llamado BusinessLayer. Este genera archivos
DLL que pueden ser reutilizados luego en otros proyectos.
Imports BusinessEntityLayer
Imports DataLayer
Public Class ProveedorBL
Private objProDAO As New ProveedorDAO
Function getProveedores() As DataTable
Return objProDAO.getProveedores
End Function
Function RegistrarProveedor(ByVal objPro As ProveedorBE) As String
Return objProDAO.RegistrarProveedor(objPro)
End Function
Function ActualizarProveedor(ByVal objPro As ProveedorBE) As String
Return objProDAO.ActualizarProveedor(objPro)
End Function
End Class
Imports BusinessEntityLayer
Imports DataLayer
Public Class DistritoBL
Private objDisDAO As New DistritoDAO
Laboratorio 5.4
Tema: Capa de Presentacin
Imports BusinessEntityLayer
Imports BusinessLayer
With gvProveedores
.DataSource = objProBL.getProveedores
.DataBind()
End With
End If
End Sub
Sub LLenarPropiedades()
With objProBE
.Codigo = txtCod.Text
.Razon = txtRaz.Text
.Direccion = txtDir.Text
.Telefono = txtTel.Text
.Distrito = ddlDistritos.SelectedValue
.Representante = txtRep.Text
End With
End Sub
Agregue la opcin al GridView para que se pueda seleccionar los datos siguiendo los
siguientes pasos:
a. Seleccionar de las Tareas Comunes la opcin Editar Columnas
6. Agregar el siguiente cdigo para que al seleccionar los datos del GridView se coloquen
en los controles de la parte superior y se pueda modificar los datos del proveedor.
Autoevaluacin
1. Cules son los componentes de una arquitectura en N Capas?
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
Resumen
La programacin por capas es un estilo de programacin en el que el objetivo
primordial es la separacin de la lgica de negocios de la lgica de diseo; un ejemplo
bsico de esto consiste en separar la capa de datos de la capa de presentacin al
usuario.
La ventaja principal de este estilo es que el desarrollo se puede llevar a cabo en varios
niveles y, en caso de que sobrevenga algn cambio, slo se ataca al nivel requerido sin
tener que revisar entre cdigo mezclado.
Adems, permite distribuir el trabajo de creacin de una aplicacin por niveles; de este
modo, cada grupo de trabajo est totalmente abstrado del resto de niveles, de forma
que basta con conocer la API que existe entre niveles.
Capa de negocio: es donde residen los programas que se ejecutan, se reciben las
peticiones del usuario y se envan las respuestas tras el proceso. Se denomina capa de
negocio (e incluso de lgica del negocio) porque es aqu donde se establecen todas las
reglas que deben cumplirse. sta se comunica con la capa de presentacin, para recibir
las solicitudes y presentar los resultados, y con la de datos, para solicitar al gestor de
base de datos almacenar o recuperar datos de l. Tambin, se consideran aqu los
programas de aplicacin.
Capa de datos: es donde residen los datos y es la encargada de acceder a los mismos.
Est formada por uno o ms gestores de bases de datos que realizan todo el
almacenamiento de datos, reciben solicitudes de almacenamiento o recuperacin de
informacin desde la capa de negocio.
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos elaboran un carro de compras como un proceso de una tienda
virtual.
TEMARIO
Definicin de Objetos de Sesin en el Global.asax
Diseo de las GUI para la tienda Virtual usando Master Pages.
Configurar controles para mostrar imgenes de los productos.
Definicin de Mtodos para consulta de productos y vista del Carro de Compras
Proceso de Compra: Manejo de Transacciones para actualizar la Base de Datos
ACTIVIDADES PROPUESTAS
Los alumnos definen objetos de Session en el archivo de configuracin global llamado
Global.asax.
Los alumnos disean los Master Pages y WebForms para el proceso de Carro de
Compra de la tienda virtual.
Los alumnos configuran los controles para mostrar las imgenes de los productos.
Los alumnos programan los WebForms para el proceso de Carro de Compras.
4. Al Dar Click en Ver el Carro de Compra, mostrar el Carro de Compra como muestra
la siguiente figura:
5. Al darle Click en Comprar, pedir que ingrese al sistema, ya que se supone que estoy
registrado como cliente de esa empresa.
8. Esto culmina el proceso de compra. Ahora, se pasar a ver, a travs de los laboratorios,
el desarrollo paso a paso de este carro de compra.
LABORATORIO 01
Tema: Desarrollo de las GUIs para el proceso de Carro de Compras
1. Disear el siguiente master page llamado Principal.master, en la cual hay una tabla
con 2 filas: en la primera se coloca la imagen Ventas On Line, y en la segunda fila se
deja libre el ContentPlaceHolder.
Para que se puedan mostrar imgenes de los productos en el GridView, siga los
siguientes pasos:
2. Tal como muestra la figura anterior, se debe agregar esas columnas que
aparecen en Campos Seleccionados, pero, adicionalmente, colocar al final un
campo de Tipo ImageField y configurar las propiedades que se muestran y se
detallan a continuacin:
HeaderText: Foto
DataImageUrlField: COD_PRO
DataImageUrlFormatString: imagenes\{0}.jpg
ControlStyle:
Height: 50px
Width: 50px
Todas las imgenes son controles ImageButton y tambin cuenta con un control
Image al lado derecho para mostrar la imagen del producto de una forma ms grande
y detallada.
LABORATORIO 02
Tema: Desarrollo de las Clases para el manejo del proceso de Carro de Compras
Crearemos un objeto de Session para el Carro de Compras. Agregaremos al Proyecto una Clase
de Aplicacin Global llamado Global.asax
Global.asax
Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
'Cdigo que se ejecuta cuando se inicia una nueva sesin
Dim tabla As New Data.DataTable
tabla.Columns.Add("codigo", Type.GetType("System.String"))
tabla.Columns.Add("Descripcion", Type.GetType("System.String"))
tabla.Columns.Add("Precio", Type.GetType("System.Double"))
tabla.Columns.Add("Cantidad", Type.GetType("System.Int32"))
tabla.Columns.Add("Monto", Type.GetType("System.Double"), "Precio*Cantidad")
Session("carrito") = tabla
End Sub
Clase Categora:
En esta Clase, se define un mtodo que cargue las categoras ordenadas por su descripcin.
Public Class Categoria
Private cn As New Conexion
Dim objCn As SqlConnection = cn.conectar
Clase Producto:
En esta Clase, se definen los siguientes mtodos.
1. getProductos: devuelve todos los productos de la Base de Datos.
2. getProductosCategoria: devuelve los productos filtrados por la Categora.
3. BuscarProducto: devuelve los datos de un producto buscado por el cdigo.
Clase Cliente:
En esta Clase, se definen los siguientes mtodos.
1. ValidarCliente: mtodo para validar el acceso al sistema.
2. getDatosCliente: devuelve los datos de un cliente filtrado por email.
Clase Pedido:
LABORATORIO 03:
Tema: Programacin de los Web Forms para ejecutar el proceso de Carro de Compras
Default.aspx
Partial Class _Default
Inherits System.Web.UI.Page
Dim objpro As New Producto
Dim objCat As New Categoria
Protected Sub Page_Load(ByVal sender )
If Not Page.IsPostBack Then
With gvProductos
.DataSource = objpro.getProductos
.DataBind()
End With
With gvCategorias
.DataSource = objCat.getCategorias
.DataBind()
End With
End If
End Sub
Protected Sub gvCategorias_SelectedIndexChanged(ByVal sender As )
Dim i As Integer = gvCategorias.SelectedIndex
Dim cod As String = gvCategorias.Rows(i).Cells(1).Text
With gvProductos
.DataSource = objpro.getProductosLinea(cod)
.DataBind()
End With
End Sub
Page_Producto.aspx
Partial Class Page_Producto
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender )
If Not Page.IsPostBack Then
If Not Request.QueryString("cod") Is Nothing Then
Dim cod As String = Request.QueryString("cod")
Dim objPro As New Producto
Dim f As DataRow = objPro.BuscarProducto(cod)
If Not f Is Nothing Then
Me.lblCodigo.Text = f("cod_pro")
Me.lblDescripcion.Text = f("des_pro")
Me.lblCategoria.Text = f("des_cat")
Me.lblPrecio.Text = f("Pre_pro")
Me.lblStock.Text = f("stk_pro")
Me.ImgFoto.ImageUrl = "imagenes\" + lblCodigo.Text.Trim + ".jpg"
End If
End If
End If
End Sub
CarroCompras.aspx
Partial Class CarroCompras
Inherits System.Web.UI.Page
Private Sub Listado()
Dim tabla As DataTable = CType(Session("carrito"), DataTable)
Me.gvCarro.DataSource = tabla
Me.gvCarro.DataBind()
If tabla.Rows.Count > 0 Then
Me.lblMonto.Text = tabla.Compute("Sum(Monto)", "")
Else
Me.lblMonto.Text = 0
End If
End Sub
Protected Sub Page_Load(ByVal sender As )
If Not Page.IsPostBack Then
If Not Session("carrito") Is Nothing Then
Listado()
End If
End If
End Sub
Protected Sub gvCarro_RowDeleting(ByVal sender As Object, )
Dim f As Integer = e.RowIndex
Dim cod As String = gvCarro.Rows(f).Cells(1).Text
Dim tabla As DataTable = CType(Session("carrito"), DataTable)
For Each fila As DataRow In tabla.Rows
If fila(0) = cod Then
fila.Delete()
Exit For
End If
Next
Listado()
End Sub
Login.aspx
Partial Class Login
Inherits System.Web.UI.Page
Dim objCli As New Cliente
Protected Sub btnIngresar_Click(ByVal sender As )
If objCli.ValidarCliente(txtEmail.Text, txtPassword.Text) = True Then
Response.Redirect("Compra.aspx?email=" + txtEmail.Text)
Else
lblMensaje.Text = "Cliente no registrado"
End If
End Sub
End Class
Compra.aspx
Partial Class Compra
Inherits System.Web.UI.Page
Dim objCli As New Cliente
Dim tablaDet As New DataTable
Dim objPed As New Pedido
Autoevaluacin
1. Para qu sirve la Clase de aplicacin global Global.asax?
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
Resumen
El objeto Session permite tener valores almacenados de forma global dentro de la
aplicacin Web. Desde el punto de vista del cliente, estos objetos se mantienen
vivos hasta que se permanece un tiempo inactivos o se cierra la sesin con el
navegador web.
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos elaboran aplicaciones Web que acceden a un origen de datos
utilizando servicios Web y WFC (Windows Comuncation Foundation).
TEMARIO
Llamar a un servicio Windows Communication Foundation (WCF)
Llamar a un servicio Web desde una pgina Web ASP.NET
ACTIVIDADES PROPUESTAS
Los alumnos invocan un servicio WCF desde ASP.NET para realizar operaciones de
consulta y actualizacin.
Los alumnos invocan un servicio Web desde una aplicacin ASP.NET para realizar
operaciones de consulta y actualizacin de datos.
1.1 INTRODUCCIN
Windows Communication Foundation o WCF (tambin conocido como Indigo) es la nueva
plataforma de mensajera que forma parte de la API de la Plataforma .NET 4.0 (antes conocida
como WinFX, y que no son ms que extensiones para la versin 2.0). Se encuentra basada en la
Plataforma .NET 2.0 y de forma predeterminada se incluye en el Sistema Operativo Microsoft
Windows Vista.
Windows Communication Foundation es un conjunto de tecnologas .NET para la creacin y
puesta en marcha de sistemas interconectados. Es una nueva generacin de infraestructura de
comunicaciones que gira en torno a la arquitectura de servicios Web. El soporte para servicios
Web avanzados en Windows Communication Foundation proporciona una mensajera segura,
fiable y organizada en transacciones, adems de interoperabilidad.
El modelo de programacin orientado a servicios de Windows Communication Foundation se
basa en Microsoft .NET Framework y simplifica el desarrollo de sistemas interconectados.
Windows Communication Foundation unifica una gran variedad de funcionalidades de
sistemas distribuidos en una arquitectura organizable y extensible, que abarca transportes,
sistemas de seguridad, patrones de mensajera, sistemas de codificacin, topologas de red y
modelos de alojamiento. Asimismo, estar disponible en Windows Vista (antes conocido
como "Longhorn") y para Windows XP y Windows Server 2003.
2.1 ENDPOINTS
Un Endpoint de un Servicio est compuesto por una Address (Direccin), un Binding
(Enlace) y un Contract (Contrato).
La direccin de un Endpoint es una direccin de red donde reside dicho Endpoint.
El binding de un Endpoint especifica cmo se comunica dicho Endpoint con el resto del
mundo, incluyendo aspectos como el protocolo de transporte (p.e. TCP, http, etc.), tipo de
codificacin (p.e. texto, binario), y requerimientos de seguridad (p.e. SSL, seguridad basada en
mensajes SOAP, etc.). La clase Binding representa un binding de WCF.
El contrato de un endpoint especifica qu comunica dicho endpoint y bsicamente est
compuesto por una coleccin de mensajes organizados internamente en operaciones que
tienen un patrn de intercambio de mensajes (Message Exchange Patterns o MEPs), como
one-way (un sentido), dplex y request/reply (peticin/respuesta). La clase
ContractDescription representa un contrato WCF.
La clase ServiceEndpoint representa un Endpoint y tiene un EndpointAddress, un Binding y un
ContractDescription que corresponden a la direccin del endpoint, al enlace y al contrato,
respectivamente.
Serve
ABC
2.4 MENSAJE
Un mensaje es, bsicamente, una representacin en memoria de un InfoSet mensaje SOAP.
Hay que destacar que un mensaje (en lo relativo a su comunicacin por la red) no est ligado a
texto XML. Por el contrario, dependiendo de qu mecanismo de encoding se utilice, un
mensaje puede serializarse basado en el formato binario de WCF, texto XML o cualquier otro
formato propio.
2.6 ENDPOINTLISTENER
Un EndPointListener es el runtime equivalente a un ServiceEndpoint. El EndPointAddress,
Contrato y Binding de un ServiceEndpoint (representando el donde, qu y como), corresponde
a la direccin de escucha del EndpointListener, filtrado de mensajes, entrega, y pila de canales,
respectivamente. Contiene la pila de canales que es responsable del envo y recepcin de
mensajes.
en cartelera, y luego mostrarlos en tu sitio. Imposible, no? Claro, es imposible acceder a una
base de datos de otro sitio como si fuese nuestra; pero, cada teatro podra tener un servicio
web que hara de intermediario entre la base de datos del teatro con los espectculos y tu
sitio.
Primero, tu visitante pide los tickets disponibles a la pgina ASP.net, la pgina ASP.net se
conecta al servicio. Luego, el servicio busca en su base de datos los espectculos en cartelera y
les manda los datos en forma de DataSet en cdigo de XML. La pgina recibe el DataSet y lo
procesa, puede mostrar parte s, parte no; en fin, hace lo que quiera con los datos y se los
muestra al usuario.
En el ncleo de los servicios Web, se encuentra el protocolo simple de acceso a datos SOAP
que proporciona un mecanismo estndar de empaquetar mensajes. SOAP ha recibido gran
atencin debido a que facilita una comunicacin del estilo RPC entre un cliente y un servidor
remoto. Pero existen multitud de protocolos creados para facilitar la comunicacin entre
aplicaciones, incluyendo RPC de Sum, DCE de Microsoft, RMI de Java y ORPC de CORBA. Por
qu se presta tanta atencin a SOAP?
Una de las razones principales es que SOAP ha recibido un increble apoyo por parte de la
industria. Es el primer protocolo de su tipo que ha sido aceptado, prcticamente, por todas las
grandes compaas de software del mundo, que en raras ocasiones cooperan entre s y
ofrecen su apoyo a este protocolo. Algunas de las mayores compaas que soportan SOAP son
Microsoft, IBM, SUN, Microsystems, SAP y Ariba.
El elemento raz del documento es el elemento Envelope. El ejemplo contiene dos sub
elementos, Body y Header. Un ejemplo de SOAP vlido, tambin, puede contener otros
elementos hijo en el sobre.
El sobre puede contener un elemento Header opcional que contiene informacin sobre el
mensaje. En el ejemplo anterior, la cabecera contiene dos elementos que describen a quien
compuso el mensaje y posible receptor del mismo.
El sobre debe contener un elemento body (cuerpo). ste contiene la carga de datos del
mensaje. En el ejemplo, el cuerpo contiene una simple cadena de caracteres.
Un mensaje debe estar dentro de sobre de SOAP bien construido. Un sobre se compone de un
nico elemento envelope, el sobre puede contener un elemento Header y un elemento body.
Si existe la cabecera debe ser el elemento hijo inmediato del sobre, con el cuerpo siguiendo
inmediatamente a la cabecera.
El cuerpo contiene la carga de datos del mensaje y la cabecera contiene los datos adicionales
que no pertenecen necesariamente al cuerpo del mensaje.
El cliente puede solicitar una respuesta WSDL de una instancia de SQL Server y utilizarla para
generar solicitudes de lotes RPC y SQL que enviar al servidor a travs de los extremos HTTP
configurados para asegurar la compatibilidad con los tipos WSDL. La respuesta WSDL es un
documento XML generado, dinmicamente, a partir de las funciones RPC asociadas al extremo
en el momento de generar la solicitud.
CONTENIDO DE WSDL
Una instancia del Lenguaje de definicin de servicios Web (WSDL) es un documento XML con
un elemento <definitions> raz en el que se especifica el espacio de nombres WSDL
(http://schemas.xmlsoap.org/wsdl) y se define un conjunto de servicios Web como coleccin
Laboratorio 9.1
Tema: Consulta de Datos consumiendo un WCF?
Implementar un servicio WCF (Windows Communication Foundation) que permita mostrar los
productos, utilizando el modelo de datos LINQ to SQL.
2. Agregue un nuevo elemento al proyecto Web. En este caso, ser un dataContext que
es propio del nuevo control de acceso a datos LINQ. Entonces, se escoge LINQ to SQL
Clases y colocamos el nombre de DataVentas.dbml
Laboratorio 9.2
Tema: Consulta de Datos consumiendo un servicio web
Implemente una consulta de productos por una categora seleccionada. En dicho proceso, se
deber consumir un servicio web para realizar la configuracin de las categoras a un control
de seleccin (DropDownList1) y listar los productos por categora seleccionada.?
2. Agregue un nuevo elemento al proyecto Web que tenemos. En este caso, ser un
dataContext que es propio del nuevo control de acceso a datos LINQ. Escogemos LINQ
to SQL Clases y colocamos el nombre de DataVentas.dbml
12. El proyecto debe tener una nueva carpeta que dice App_WebReferences
Autoevaluacin
1. Qu es WCF?
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
Resumen
Windows Communication Foundation es un conjunto de tecnologas .NET para la
creacin y puesta en marcha de sistemas interconectados. Es una nueva generacin de
infraestructura de comunicaciones que gira en torno a la arquitectura de servicios
Web. El soporte para servicios Web avanzados en Windows Communication
Foundation proporciona una mensajera segura, fiable y organizada en transacciones,
adems de interoperabilidad.
Los servicios Web XML son servicios que se prestan desde tu sitio a otro sitio, no a un
visitante.
Si desea consultar:
http://geeks.ms/blogs/jnunez/archive/2007/08/10/tutorial-wcf-2-de-5.aspx
Pgina referente al tutorial del WCF
http://burbujasnet.blogspot.com/2008/09/wcf-hospedando-servicios.html
Pgina referente a hospedar un servicio web
http://www.elguille.info/NET/ASPNET/crearServicioWeb.aspx
Pgina referente a como crear un servicio Web
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos elaboran aplicaciones Web que acceden a un origen de datos
usando el modelo de objetos ADO.NET manejando la seguridad de ASP. Net haciendo uso de los
conceptos de autorizacin y autenticacin.
TEMARIO
Seguridad en las aplicaciones Web en ASP.Net
Arquitectura de la seguridad en aplicaciones ASP.Net
Autenticacin y Autorizacin en ASP.Net
Controles de Inicio de Sesin ASP.Net
ACTIVIDADES PROPUESTAS
Los alumnos manejan la conexin y operaciones a la base de datos utilizando la
autenticacin basada en Formularios.
Los alumnos manejan los controles de Inicio de Sesin mediante los cuales pueden
acceder al sistema, registrar nuevos usuarios, y recuperar o cambiar su password.
Funcin de Descripcin
seguridad
Autenticacin Ayuda a comprobar que el usuario es precisamente quien dice ser. La
aplicacin obtiene las credenciales (diversas formas de identificacin, como
nombre y contrasea) de un usuario, y las valida consultando a una autoridad
determinada. Si las credenciales son vlidas, se considera a la entidad que ha
enviado las credenciales como una entidad autenticada.
Autorizacin Limita los derechos de acceso mediante la concesin o negacin de permisos
especficos a una identidad autenticada.
Adems, Internet Information Services (IIS) puede conceder o negar el acceso en funcin de la
direccin IP o del nombre de host del usuario. Cualquier autorizacin de acceso posterior se
realiza mediante la autorizacin de la direccin URL del permiso de acceso al sistema de
archivos NTFS.
Es importante entender cmo interactan todos los diversos subsistemas de seguridad. Puesto
que ASP.NET se basa en Microsoft .NET Framework, el desarrollador de aplicaciones ASP.NET
tambin tiene acceso a todas las caractersticas de seguridad integradas de .NET Framework,
como la seguridad de acceso a cdigo y la seguridad de acceso basada en funciones.
Como se muestra en la ilustracin, todos los clientes Web se comunican con las aplicaciones
ASP.NET a travs de Microsoft Internet Information Services (IIS). IIS autentica la solicitud si
fuera necesario y, a continuacin, busca el recurso solicitado (como una aplicacin ASP.NET). Si
el cliente est autorizado, el recurso estar disponible.
<authorization>
<allow users="comma-separated list of users"
roles="comma-separated list of roles" />
<deny users="comma-separated list of users"
roles="comma-separated list of roles" />
</authorization>
<trust level="[Full|High|Medium|Low|Minimal]"
originUrl=""/>
<securityPolicy>
<trustLevel name="Full" policyFile="internal"/>
<trustLevel name="High" policyFile="web_hightrust.config"/>
<trustLevel name="Medium" policyFile="web_mediumtrust.config"/>
<trustLevel name="Low" policyFile="web_lowtrust.config"/>
<trustLevel name="Minimal" policyFile="web_minimaltrust.config"/>
</securityPolicy>
<allow roles="" /> Una cadena vaca que indica que se permiten
todas las funciones de forma predeterminada.
<allow users="*" /> Una cadena vaca que indica que todos los
usuarios tienen acceso (no se requiere ninguna
autenticacin).
<authentication mode="Windows" /> El tipo de autenticacin que determina el
origen del valor User actual. El valor
predeterminado es Windows.
<credentials passwordFormat="SHA1" /> El algoritmo hash que se utiliza en las
contraseas. El valor predeterminado es SHA1.
<deny roles="" /> Una cadena vaca que indica que no se deniega
3. Autenticacin de ASP.NET
Trmino Definicin
<system.web>
<authentication mode="Windows"/>
</system.web>
<system.web>
<authentication mode="Windows"/>
<identity impersonate="true"/>
</system.web>
<authentication mode="Forms">
<forms name="SavingsPlan" loginUrl="/Login.aspx">
<credentials passwordFormat="SHA1">
<user name="Kim"
password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/>
<user name="John"
password="BA56E5E0366D003E98EA1C7F04ABF8FCB3753889"/>
</credentials>
</forms>
</authentication>
Las credenciales de autenticacin mediante formularios que se utilizan para validar usuarios en
el inicio de sesin se pueden almacenar en un origen de datos externo o en el archivo de
configuracin de aplicaciones.
Cuando se utiliza la autenticacin mediante formularios, se pueden validar los usuarios a partir
de los pares de usuario y contrasea en la seccin de credenciales del archivo de configuracin
del sitio Web. Se puede utilizar el mtodo Authenticate para comparar las credenciales
recopiladas del usuario con la lista de pares de usuario y contrasea de la seccin de
credenciales para determinar si se debe conceder el acceso. En el ejemplo siguiente, los
usuarios Kim y John pueden iniciar una sesin si proporcionan la contrasea correcta.
Los pares de credenciales del ejemplo se cifran utilizando el formato hash de contraseas
SHA1 (Secure Hash Algorithm-1). El atributo PasswordFormat es necesario. Los valores para
esta propiedad se muestran en la tabla siguiente:
Valor Descripcin
.NET Framework incluye clases y mtodos que facilitan la creacin de valores hash mediante
programacin para su almacenamiento permanente. FormsAuthentication es una clase que
puede resultar til para la programacin de esta tarea. Su mtodo
HashPasswordForStoringInConfigFile puede obtener una clave hash. Para que el control sea
ms preciso, tambin se pueden utilizar las clases System.Security.Cryptography.
Las contraseas con valores hash almacenadas en un archivo de texto no se pueden utilizar
para regenerar la contrasea original, pero son potencialmente vulnerables a un ataque de
diccionario. En este tipo de ataque, el agresor, tras obtener acceso al archivo de contraseas,
intenta adivinar las contraseas mediante software con el fin de generar de manera iterativa
un valor hash para todas las palabras en un diccionario de gran tamao y comparar los valores
hash generados con los almacenados. Si almacena las contraseas con valores hash en algn
medio, debe notificar a los usuarios que elijan contraseas que no sean palabras comunes y
que contengan nmeros y caracteres no alfanumricos para evitar los ataques de diccionario.
Adems, puede facilitar la administracin de las credenciales almacenndolas mediante la
pertenencia a ASP.NET
4. Autorizacin de ASP.NET
puede utilizar para permitir o denegar de forma selectiva el acceso a las partes
arbitrarias de una aplicacin (normalmente los directorios) para usuarios concretos o
funciones.
<authorization>
<[allow|deny] users roles verbs />
</authorization>
Se requiere el elemento allow o deny. Debe especificar el atributo users o roles. Se pueden
incluir los dos atributos, aunque no es necesario. El atributo verbs es opcional.
Los elementos allow y deny conceden y revocan el acceso, respectivamente. Cada elemento
admite los atributos mostrados en la tabla siguiente:
Atributo Descripcin
users Identifica las identidades (cuentas de usuario) a las que se destina el elemento.
Los usuarios annimos se identifican mediante un signo de interrogacin (?). Puede
especificar todos los usuarios autenticados mediante un asterisco (*).
roles Identifica una funcin (un objeto RolePrincipal) para la solicitud actual a la que se
permite o deniega el acceso al recurso. Para obtener ms informacin, vea
Administrar autorizaciones con roles.
verbs Define los verbos HTTP a los que se aplica la accin, como GET, HEAD y POST. El valor
predeterminado es "*" que especifica todos los verbos.
El siguiente ejemplo concede acceso a la identidad Kim y a los miembros de la funcin Admins,
y deniega el acceso a la identidad John (a menos que la identidad John est incluida en la
funcin Admins) y a todos los usuarios annimos:
<authorization>
<allow users="Kim"/>
<allow roles="Admins"/>
<deny users="John"/>
<deny users="?"/>
</authorization>
<authorization>
<allow users="John"/>
<deny users="*"/>
</authorization>
Puede especificar varias entidades para los atributos users y roles utilizando una lista separada
por comas, como se muestra en el ejemplo siguiente:
Tenga en cuenta que si especifica el nombre de una cuenta de dominio, el nombre debe incluir
tanto el dominio como el nombre de usuario (contoso\Jane).
El siguiente ejemplo permite a todos los usuarios utilizar el mtodo GET de HTTP para obtener
un recurso, pero solo permite a la identidad Kim realizar una operacin POST:
<authorization>
<allow verbs="GET" users="*"/>
<allow verbs="POST" users="Kim"/>
<deny verbs="POST" users="*"/>
</authorization>
ASP.NET proporciona una funcionalidad de inicio de sesin (autenticacin) segura para las
aplicaciones web ASP.NET sin necesidad de programacin. Las plantillas de proyecto
predeterminadas de Visual Studio para aplicaciones web y sitios web incluyen pginas ya
generadas que permiten que los usuarios se registren en una nueva cuenta, inicien una sesin
y cambien sus contraseas.
Tambin puede crear sus propias pginas a las que puede agregar controles de inicio de sesin
ASP.NET con el fin de agregar funcionalidad de inicio de sesin. Para utilizar los controles de
inicio de sesin, cree pginas web y, a continuacin, agregue los controles de inicio de sesin
en las pginas desde el Cuadro de herramientas.
Normalmente, restringe el acceso a las pginas ASP.NET colocndolas en una carpeta
protegida. A continuacin, configure la carpeta para denegar el acceso a los usuarios annimos
(usuarios que no estn registrados) y conceder acceso a los usuarios autenticados
(registrados). (La plantilla de proyecto predeterminada para proyectos web incluye una
carpeta denominada Cuentas que ya est configurada para permitir el acceso slo a los
usuarios que han iniciado la sesin.) Opcionalmente, puede asignar usuarios a roles y, a
continuacin, autorizar que los usuarios tengan acceso a pginas web concretas por rol.
De manera predeterminada, los controles de inicio de sesin se integran con la autenticacin
de pertenencia a ASP.NET y de formularios de ASP.NET para ayudar a automatizar la
autenticacin del usuario en un sitio web. Para obtener informacin sobre cmo utilizar la
autenticacin de pertenencia y de formularios de ASP.NET
De manera predeterminada, los controles de inicio de sesin de ASP.NET se transmiten en
forma de texto sin formato en HTTP. Si le preocupa la seguridad, utilice HTTPS con cifrado SSL.
Login.aspx Habilita a los usuarios que tienen una cuenta para iniciar sesin
proporcionndoles un nombre de usuario y contrasea. Esta
pgina incluye un vnculo a la pgina de registro. La pgina
Login.aspx es accesible a usuarios annimos.
Contiene el control Login.
En la siguiente ilustracin se muestra la pgina de inicio de
sesin en el explorador.
Register.aspx Habilita a los usuarios para registrarse y crear una nueva
cuenta. Esta pgina es accesible para los usuarios annimos y
los usuarios autenticados.
Contiene el control CreateUserWizard.
En la ilustracin siguiente se muestra la pgina para crear
nueva cuenta (registro) en el explorador.
ChangePassword.aspx Habilita a los usuarios registrados para cambiar sus
contraseas. Esta pgina slo es accesible para los usuarios
autenticados.
Contiene el control ChangePassword.
En la ilustracin siguiente se muestra la pgina de cambio de
contrasea en el explorador.
ChangePasswordSuccess.aspx Muestra un mensaje que indica que la contrasea se ha
cambiado correctamente. Esta pgina slo es accesible para los
usuarios autenticados.
Esta pgina no usa ningn control de inicio de sesin de
ASP.NET.
Web.config Contiene los valores que definen el acceso a las pginas en la
carpeta Cuenta
El control Login muestra una interfaz de usuario para la autenticacin de usuario. El control
Login contiene cuadros de texto para el nombre de usuario y la contrasea, y una casilla que
permite a los usuarios indicar si quieren que el servidor almacene su identidad utilizando la
pertenencia a ASP.NET y que los autentique automticamente la prxima vez que visiten el
sitio.
El control Login tiene propiedades para una presentacin personalizada, para mensajes
personalizados y para vnculos a otras pginas en las que los usuarios pueden cambiar su
contrasea o recuperarla si la han olvidado. El control Login se puede utilizar de forma
independiente en una pgina principal o puede utilizarlo en una pgina de inicio de sesin
dedicada.
Si utiliza el control Login con pertenencia a ASP.NET, no necesita escribir el cdigo para realizar
la autenticacin. Sin embargo, si desea crear su propia lgica de autenticacin, puede
controlar el evento Authenticate del control Login y agregar el cdigo de autenticacin
personalizado.
El control LoginView le permite mostrar informacin diferente a los usuarios annimos y a los
que han iniciado una sesin. El control muestra una de las dos plantillas: AnonymousTemplate
o LoggedInTemplate. En las plantillas puede agregar marcado y controles que muestren
informacin apropiada para usuarios annimos y usuarios autenticados, respectivamente.
El control LoginView tambin incluye eventos para ViewChanging y ViewChanged, que le
permiten escribir controladores para cuando el usuario inicie una sesin y cambie el estado.
El control LoginStatus muestra un vnculo de inicio de sesin para los usuarios que no estn
autenticados y un vnculo de cierre de sesin para los que estn autenticados. El vnculo de
inicio de sesin lleva al usuario a una pgina de inicio de sesin. El vnculo de cierre de sesin
restablece la identidad del usuario actual para que sea un usuario annimo.
Puede personalizar el aspecto del control LoginStatus estableciendo las propiedades LoginText
y LoginImageUrl.
Laboratorio 10.1
Tema: Cmo: Implementar la autenticacin de formularios simple
<?xml version="1.0"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
<system.web>
</system.web>
</configuration>
<system.web>
<authentication mode="Forms">
</authentication>
</system.web>
4. Dentro del elemento authentication, cree un elemento forms y establezca los atributos
siguientes:
1. loginUrl: Establezca este atributo en "Logon.aspx". Logon.aspx es la direccin
URL que se debe usar para la redireccin si ASP.NET no encuentra una cookie
de autenticacin con la solicitud.
2. name: Establezca este atributo en ".ASPXFORMSAUTH". De este modo se
establece el sufijo del nombre de la cookie que contiene el vale de
autenticacin.
<system.web>
<authentication mode="Forms">
<forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
</system.web>
<system.web>
<authentication mode="Forms">
<forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
<authorization>
</authorization>
</system.web>
<system.web>
<authentication mode="Forms">
<forms loginUrl="logon.aspx" name=".ASPXFORMSAUTH">
</forms>
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
Cuando los usuarios solicitan cualquier pgina del sitio web, y si previamente no se han
autenticado, se les redirige a una pgina denominada Logon.aspx. Especific este nombre de
archivo anteriormente en el archivo Web.config.
La pgina Logon.aspx recoge las credenciales del usuario (direccin de correo electrnico y
contrasea) y las autentica. Si el usuario es autenticado correctamente, la pgina de inicio de
sesin le redirige a la pgina solicitada originalmente.
<script runat="server">
Sub Logon_Click(ByVal sender As Object, ByVal e As EventArgs)
If ((UserEmail.Text = "jchen@contoso.com") And _
(UserPass.Text = "37Yj*99Ps")) Then
FormsAuthentication.RedirectFromLoginPage _
(UserEmail.Text, Persist.Checked)
Else
Msg.Text = "Invalid credentials. Please try again."
End If
End Sub
</script>
<html>
<head id="Head1" runat="server">
<title>Forms Authentication - Login</title>
</head>
<body>
<form id="form1" runat="server">
<h3>
Logon Page</h3>
<table>
<tr>
<td>
E-mail address:</td>
<td>
<asp:TextBox ID="UserEmail" runat="server" /></td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1"
ControlToValidate="UserEmail"
Display="Dynamic"
ErrorMessage="Cannot be empty."
runat="server" />
</td>
</tr>
<tr>
<td>
Password:</td>
<td>
<asp:TextBox ID="UserPass" TextMode="Password"
runat="server" />
</td>
<td>
<asp:RequiredFieldValidator ID="RequiredFieldValidator2"
ControlToValidate="UserPass"
ErrorMessage="Cannot be empty."
runat="server" />
</td>
</tr>
<tr>
<td>
Remember me?</td>
<td>
<asp:CheckBox ID="Persist" runat="server" /></td>
</tr>
</table>
<asp:Button ID="Submit1" OnClick="Logon_Click" Text="Log On"
runat="server" />
<p>
<asp:Label ID="Msg" ForeColor="red" runat="server" />
</p>
</form>
</body>
</html>
La pgina contiene controles de servidor ASP.NET que recogen informacin sobre el usuario y
una casilla en la que los usuarios pueden hacer clic para conservar sus credenciales de inicio de
sesin. El controlador de Click del botn Iniciar sesin contiene cdigo que comprueba la
direccin de correo electrnico y la contrasea del usuario utilizando como referencia los
valores incluidos en el cdigo. (La contrasea es una contrasea segura que contiene varios
caracteres no alfabticos y que tiene al menos ocho caracteres de longitud.) Si las credenciales
del usuario son correctas, el cdigo llama al mtodo RedirectFromLoginPage de la clase
FormsAuthentication, pasando el nombre del usuario y un valor booleano (derivado de la
casilla) que indica si se va conservar o no un vale de autenticacin como una cookie. El mtodo
redirige al usuario a la pgina solicitada originalmente. Si las credenciales del usuario no
coinciden, se muestra un mensaje de error. Observe que la pgina importa el espacio de
nombres System.Web.Security, que contiene la clase FormsAuthentication.
Para el ejemplo, crear una pgina ASP.NET en la carpeta raz de la aplicacin. Como especific
en el archivo de configuracin que se negara a todos los usuarios no autenticados el acceso a
los recursos de ASP.NET de la aplicacin (incluidos los archivos .aspx, pero no los archivos
estticos, como los archivos HTML o los archivos multimedia con imgenes, msica etc.),
cuando un usuario solicite la pgina, la autenticacin de formularios comprobar sus
credenciales y, si es necesario, le redirigir a la pgina de inicio de sesin. La pgina que cree
tambin permitir a los usuarios cerrar la sesin, borrando su vale de autenticacin
almacenado (cookie).
<script runat="server">
Sub Page_Load(ByVal Src As Object, ByVal e As EventArgs)
Welcome.Text = "Hello, " & Context.User.Identity.Name
End Sub
<body>
<h3>
Using Forms Authentication</h3>
<asp:Label ID="Welcome" runat="server" />
<form id="Form1" runat="server">
<asp:Button ID="Submit1" OnClick="Signout_Click"
Text="Sign Out" runat="server" /><p>
</form>
</body>
</html>
que llama al mtodo SignOut para borrar la identidad del usuario y quitar el vale de
autenticacin (cookie). A continuacin, redirige al usuario a la pgina de inicio de sesin.
Laboratorio 10.2
Tema: Crear un sitio web ASP.NET con inicio de sesin de usuario.
Muchos sitios web incluyen contenido que solo est disponible para las personas que han
iniciado sesin (es decir, que se han autenticado). De forma predeterminada, ASP.NET
proporciona plantillas de proyecto de sitio web que incluyen pginas que permiten realizar
tareas de autenticacin.
Este laboratorio muestra cmo utilizar una plantilla de proyecto web ASP.NET para crear un
sitio web con funcionalidad de inicio de sesin bsica.
Comenzar creando un nuevo proyecto de sitio web ASP.NET. La plantilla de proyecto que
usar incluye muchos de los elementos necesarios para crear un sitio que admita la
autenticacin.
En esta seccin crear una pgina solo para miembros. Solo podrn obtener acceso a esta
pgina los usuarios que hayan iniciado sesin (usuarios autenticados). Agregar un control
HyperLink a la pgina maestra para redirigir a los usuarios autenticados a la pgina solo para
miembros. Cuando los usuarios que no hayan iniciado sesin (usuarios annimos) hagan clic en
el hipervnculo solo para miembros, se les redirigir a la pgina de inicio de sesin donde
podrn iniciar sesin o crear una cuenta.
Por ejemplo, puede agregar "Welcome to the members-only page. You have
successfully logged in".
Adems de la pgina que ha creado, la carpeta Cuenta contiene las siguientes pginas y
archivos:
Register.aspx. Esta pgina permite a los nuevos usuarios crear una cuenta.
Pgina Login.aspx. Solicita un nombre de usuario y una contrasea.
ChangePassword.aspx. Esta pgina permite que los usuarios registrados cambien su
contrasea.
ChangePasswordSuccess.aspx. Esta pgina se muestra cuando los usuarios cambian
correctamente su contrasea.
Un archivo Web.config.
De forma predeterminada, los usuarios annimos no tienen acceso a las pginas de la carpeta
Cuenta, excepto las pginas Register.aspx y Login.aspx. Los valores que definen el acceso a las
pginas de la carpeta Cuenta se configuran en el archivo Web.config de esta carpeta. Los
valores que definen el acceso a la pgina de inicio de sesin se configuran en el archivo
Web.config raz.
Dado que todava no tiene una cuenta, tiene que registrarse para iniciar sesin y obtener
acceso a la pgina solo para miembros. Los usuarios annimos pueden tener acceso a la pgina
principal (Default.aspx) y la pgina About, pero no al contenido de la pgina maestra para
usuarios autenticados. Tampoco est disponible para los usuarios annimos el contenido de la
carpeta Cuenta (excepto la pgina de registro y la pgina de inicio de sesin). Si los usuarios
annimos intentan tener acceso a contenido protegido, se les redirige a la pgina de inicio de
sesin.
Al terminar el registro para una nueva cuenta, se le redirige a la pgina solo para
miembros. Observe que su nombre de usuario se muestra junto a Cerrar sesin.
7. Cierre el explorador.
Cambiar la contrasea
En esta seccin crear un hipervnculo en la pgina principal para redirigir a los usuarios a la
pgina de cambio de contrasea. Utilizar esta pgina para cambiar la contrasea despus de
iniciar sesin.
A continuacin, modificar el hipervnculo Cambiar contrasea para que solo tengan acceso a
l los usuarios que hayan iniciado sesin. Para esto agregar el hipervnculo al control
HeadLoginView en la pgina maestra.
Para que el vnculo de cambio de contrasea solo est disponible para los usuarios que
inicien sesin
A continuacin utilizar su nueva contrasea para volver a iniciar sesin y obtener acceso a la
pgina solo para miembros.
1. Haga clic en Cerrar sesin. Se le redirigir a la pgina principal que ven los usuarios
annimos.
2. Haga clic en Iniciar sesin.
3. Escriba su nombre de usuario y la nueva contrasea y, a continuacin, haga clic en
Iniciar sesin.
Se le redirige a la pgina principal. Ahora puede obtener acceso al contenido que est
disponible para los usuarios autenticados. .
5. Cierre el explorador.
En este laboratorio, utiliz pginas que forman parte de la plantilla de proyecto de sitio web
ASP.NET para crear un sitio web que autentica a los usuarios. Si lo prefiere, tambin puede
crear sus propias pginas de inicio de sesin para proporcionar la misma funcionalidad que se
muestra en este laboratorio
Autoevaluacin
1. Defina por qu es importante la seguridad en un Sitio Web
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
2. Defina qu es Autenticacin
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
3. Qu es Autorizacin?
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
Resumen
ASP.NET, conjuntamente con Microsoft Internet Information Services (IIS), puede autenticar
las credenciales del usuario como nombres y contraseas mediante los mtodos de
autenticacin siguientes:
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos elaboran aplicaciones Web que acceden a un origen de datos
usando el modelo de objetos ADO.NET usando los controles que nos proporciona AJAX haciendo
que las aplicaciones se ejecuten de una forma ms rpida y dinmica.
TEMARIO
Controles Principales AJAX.
Control ScriptManager para administrar los scripts del lado del cliente.
Control UpdatePanel para cargar parcialmente las pginas de forma dinmica.
Control Timer para ejecutar tareas en intervalos de tiempo.
ACTIVIDADES PROPUESTAS
Los alumnos manejan la conexin y operaciones a la base de datos utilizando los
controles de AJAX principalmente del ScriptManager y UpdatePanel.
Los alumnos trabajan con controles complementarios de AJAX como el control Timer
para poder ejecutar tareas en intervalos de tiempo.
1. ScriptManager (control) Administra el script de cliente para las pginas web ASP.NET
habilitadas para AJAX.
2. ScriptManagerProxy (control) Permite a los complementos anidados, como las
pginas de contenido y los controles de usuario, agregar referencias de servicios y
scripts a pginas cuando ya hay un control ScriptManager definido en un elemento
primario.
3. Timer (control) Realiza devoluciones a intervalos definidos. Si se usa el control Timer
con un control UpdatePanel, se pueden habilitar actualizaciones parciales de pginas a
un intervalo definido. El control Timer tambin permite enviar la pgina completa.
4. UpdatePanel (control) Permite crear aplicaciones web enriquecidas y centradas en
clientes. Con los controles UpdatePanel, puede realizar una actualizacin parcial de
pginas.
5. UpdateProgress (control) Proporciona informacin de estado acerca de las
actualizaciones parciales de pginas en los controles UpdatePanel.
Todos los controles ASP.NET AJAX requieren una configuracin especfica en un archivo
web.config para funcionar correctamente. Si trata de trabajar con uno de estos controles, y el
sitio web no contiene el archivo web.config necesario, aparecen errores en la vista Diseo de
la pgina donde habra aparecido el control. En la vista Diseo, si hace clic en un control que
est en ese estado, Microsoft Expression Web le ofrecer la opcin de crear un nuevo archivo
web.config o actualizar el existente.
2. ScriptManager (control)
El control ScriptManager administra el script de cliente para las pginas web habilitadas para
ASP.NET AJAX. De forma predeterminada, el control ScriptManager registra el script para
Microsoft AJAX Library con la pgina. Esto permite a los script de cliente usar las extensiones
del sistema tipo y admitir algunas caractersticas, como la representacin parcial de pginas y
las llamadas de servicio web.
Debe usar un control ScriptManager en una pgina para habilitar las siguientes caractersticas
AJAX de ASP.NET:
Slo se puede agregar una instancia del control ScriptManager a una pgina. La pgina puede
incluir el control directamente, o de forma indirecta dentro de un componente anidado como
un control de usuario, una pgina de contenido para una pgina maestra o una pgina maestra
anidada. Si una pgina contiene un control ScriptManager, pero un componente primario o
anidado necesita caractersticas adicionales del control ScriptManager, el componente puede
incluir un control ScriptManagerProxy. Por ejemplo, el control ScriptManagerProxy permite
agregar scripts y servicios que son especficos de los componentes anidados.
3. UpdatePanel (control)
Los controles de ASP.NET UpdatePanel permiten generar aplicaciones web enriquecidas y
centradas en el cliente. Mediante el uso de los controles UpdatePanel, se pueden actualizar
partes seleccionadas de la pgina en lugar de actualizar toda la pgina con una devolucin de
datos. Esto se conoce como actualizacin parcial de la pgina. Una pgina web ASP.NET que
contiene un control ScriptManager y uno o varios controles UpdatePanel puede participar
automticamente en las actualizaciones parciales de la pgina, sin un script de cliente
personalizado.
El control UpdatePanel es un control de servidor que ayuda a desarrollar pginas web con un
comportamiento de cliente complejo que hace que una pgina web parezca ms interactiva al
usuario final. Normalmente, escribir cdigo que se coordine entre el servidor y el cliente para
actualizar slo las partes especificadas de una pgina web requiere un conocimiento detallado
de ECMAScript (JavaScript). Sin embargo, mediante el uso del control UpdatePanel, puede
hacer que una pgina web participe en las actualizaciones parciales de pgina sin necesidad de
escribir ningn script de cliente. Si lo desea, puede agregar el script de cliente personalizado
para mejorar la experiencia del usuario cliente. Cuando se usa un control UpdatePanel, el
comportamiento de la pgina es independiente del explorador y puede reducir la cantidad de
datos que se transfieren entre el cliente y el servidor.
Los controles UpdatePanel trabajan especificando las regiones de una pgina que se pueden
actualizar sin actualizar la pgina entera. Este proceso se coordina mediante el control de
servidor ScriptManager y la clase de cliente PageRequestManager. Cuando las actualizaciones
parciales de la pgina estn habilitadas, los controles pueden enviar al servidor de forma
asincrnica. Una devolucin de datos asincrnica se comporta como una devolucin de datos
normal en cuanto que la pgina de servidor resultante ejecuta la pgina completa y controla el
ciclo de vida. Sin embargo, con una devolucin de datos asincrnica, las actualizaciones de la
pgina se limitan a las regiones de la pgina que estn incluidas en los controles UpdatePanel y
que estn marcadas para actualizarse. El servidor enva el marcado HTML al explorador slo
para los elementos implicados.
Cuando se representa por primera vez una pgina que contiene uno o varios controles
UpdatePanel, se representa todo el contenido de los controles UpdatePanel y se enva al
explorador. En las devoluciones de datos asincrnicas posteriores, el contenido de los
controles UpdatePanel individuales podra actualizarse. Las actualizaciones dependen de las
opciones de configuracin del panel, de qu elemento produjo la devolucin de datos y del
cdigo especfico de cada panel.
En la lista siguiente se describen los valores de las propiedades del control UpdatePanel que
determinan cundo se actualiza el contenido de un panel durante la representacin parcial de
la pgina:
Los controles UpdatePanel se pueden anidar. Si se actualiza el panel primario, todos los
paneles anidados tambin se actualizarn. Si se actualiza un panel secundarios, se actualiza
slo el panel secundario.
Los controles ASP.NET siguientes no son compatibles con las actualizaciones parciales de la
pgina y, por consiguiente, no estn diseados para funcionar dentro de un control
UpdatePanel:
3.7. Usar los controles de elemento web dentro los controles UpdatePanel
Los elementos web ASP.NET son un conjunto integrado de controles para crear sitios web que
permiten a los usuarios finales modificar el contenido, la apariencia y el comportamiento de
las pginas web directamente desde un explorador. Puede usar controles de elementos web
dentro los controles UpdatePanel con las siguientes restricciones:
Todos los controles WebPartZone deben estar dentro del mismo control UpdatePanel.
Por ejemplo, no puede tener dos controles UpdatePanel en la pgina, cada uno de
ellos con su propio control WebPartZone.
4. ScriptManagerProxy (control)
El control ScriptManagerProxy permite que los componentes anidados, como pginas de
contenido y controles de usuario, agreguen a las pginas referencias a scripts y servicios
cuando ya se ha definido un control ScriptManager en un elemento primario.
Una pgina web slo puede contener un control ScriptManager, bien de forma directa en la
propia pgina, o de forma indirecta en un componente anidado o primario. El control
ScriptManagerProxy permite agregar scripts y servicios a pginas de contenido y controles de
usuario donde la pgina maestra o la pgina host ya contienen un control ScriptManager.
5. Timer (control)
El control Timer de ASP.NET AJAX realiza devoluciones de datos a intervalos definidos. Si se usa
el control Timer con un control UpdatePanel, se pueden habilitar actualizaciones parciales de
pginas a un intervalo definido. El control Timer tambin permite enviar la pgina completa.
El control Timer requiere una configuracin especfica en un archivo web.config para funcionar
correctamente. Si trata de trabajar con este control y el sitio web no contiene el archivo
web.config necesario, aparecen errores en la vista Diseo de la pgina donde habra aparecido
el control. En la vista Diseo, si hace clic en el control que est en ese estado, Microsoft
Expression Web le ofrecer la opcin de crear un nuevo archivo web.config o actualizar el
existente.
Cuando se usa el control Timer, se debe incluir una instancia de la clase ScriptManager en la
pgina web.
Cuando el control Timer inicia una devolucin de datos, se genera el evento Tick en el servidor.
Se puede crear un controlador de eventos para el evento Tick de forma que realice acciones
cuando la pgina se enve al servidor.
La propiedad Interval se usa para especificar la frecuencia con la que se producirn las
devoluciones y la propiedad Enabled para activar o desactivar el control Timer. La propiedad
Interval se define en milisegundos y tiene un valor predeterminado de 60.000 milisegundos (60
segundos).
6. UpdateProgress (control)
El control UpdateProgress proporciona informacin de estado acerca de las actualizaciones
parciales de pginas en los controles UpdatePanel. Puede personalizar el contenido
predeterminado y el diseo del control UpdateProgress. Para evitar que se produzcan
intermitencias cuando una actualizacin parcial de pginas es muy rpida, puede especificar
un retraso antes de que se muestre el control UpdateProgress.
El control UpdateProgress ayuda a disear una interfaz de usuario ms intuitiva cuando una
pgina web contiene uno o ms controles UpdatePanel de representacin parcial de pginas.
Si una actualizacin parcial de pginas es lenta, puede usar el control UpdateProgress para
proporcionar comentarios visuales acerca del estado de la actualizacin. Puede colocar varios
controles UpdateProgress en una pgina, cada uno de ellos asociado con un control
UpdatePanel distinto. Como alternativa, puede usar un control UpdateProgress y asociarlo con
todos los controles UpdatePanel de la pgina.
Para especificar el mensaje que muestra un control UpdateProgress, coloque el contenido que
desee en el panel de la vista Diseo. Por ejemplo, puede arrastrar otros controles ASP.NET y
HTML al panel y, a continuacin, colocar el cursor en el panel y escribir directamente en l. Al
agregar un mensaje a un control UpdateProgress en la vista Diseo, se agregan
automticamente las etiquetas <ProgressTemplate> necesarias alrededor del contenido. Si
agrega contenido a un control UpdateProgress en la vista Cdigo en lugar de hacerlo en la vista
Diseo, debe agregar manualmente las etiquetas <ProgressTemplate></ProgressTemplate> si
an no existen; de lo contrario, el mensaje no se representar.
Los controles UpdateProgress pueden colocarse dentro o fuera de los controles UpdatePanel.
Un control UpdateProgress aparece cuando el control UpdatePanel con el que est asociado se
actualiza como resultado de una devolucin asincrnica. Esto se cumple aunque el control
UpdateProgress se encuentre dentro de otro control UpdatePanel.
Laboratorio 11.1
Tema: Crear una pgina con dos regiones con actualizacin independiente
En este apartado, aprender a trabajar con varios controles UpdatePanel en una pgina. Al
usar varios controles UpdatePanel en una pgina, puede actualizar regiones de la pgina de
forma incremental por separado o conjuntamente.
Para crear una pgina con dos regiones con actualizacin independiente
11. En la vista Cdigo de la pgina, antes de la etiqueta </head>, agregue siguiente cdigo:
<title>Untitled 2</title>
<script runat="server" type="text/vb">
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.
EventArgs)
Label1.Text = "Panel refreshed at " & _
DateTime.Now.ToString()
End Sub
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager runat="server" id="ScriptManager1">
</asp:ScriptManager>
<asp:UpdatePanel runat="server" id="UpdatePanel1" UpdateMode="Conditional"
>
<ContentTemplate>
<asp:Label runat="server" Text="Panel Created" id="Label1">
</asp:Label>
<asp:Button runat="server" Text="Refresh Panel" id="Button1" OnClick="Butt
on1_Click"/>
</ContentTemplate>
</asp:UpdatePanel>
<asp:UpdatePanel runat="server" id="UpdatePanel2" UpdateMode="Conditional"
>
<ContentTemplate>
<asp:Calendar runat="server" id="Calendar1">
</asp:Calendar>
</ContentTemplate>
</asp:UpdatePanel>
</form>
</body>
</html>
Laboratorio 11.2
Tema: Actualizar un control UpdatePanel en un intervalo de tiempo.
Este laboratorio presenta los conceptos bsicos para usar un control Timer y un control
UpdatePanel para habilitar las actualizaciones parciales de pginas. Debe agregar un control
ScriptManager a cualquier pgina que contenga un control UpdatePanel o un control Timer. De
manera predeterminada, un control Timer que se encuentre dentro del panel har que slo se
actualice el panel durante una devolucin de datos asincrnica. Un control Timer fuera de un
panel puede provocar que el control UpdatePanel se actualice si est configurado como un
desencadenador para el panel.
Autoevaluacin
1. Defina qu es AJAX
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
Resumen
La representacin parcial de pginas elimina la necesidad de actualizar la pgina por completo,
como resultado de una devolucin de datos. En su lugar, slo se actualizan las partes de la
pgina que hayan cambiado. De este modo, la pgina no se vuelve a cargar por completo en
cada devolucin de datos, lo que facilita la interaccin del usuario con la pgina web. ASP.NET
permite agregar la representacin parcial de pginas a pginas web ASP.NET nuevas o
existentes sin escribir un script de cliente.
Puede extender aplicaciones ASP.NET existentes y desarrollar otras nuevas que incorporen la
funcionalidad AJAX (JavaScript asincrnico y XML). Las caractersticas de AJAX de ASP.NET
permiten crear aplicaciones web enriquecidas que incorporan muchas ventajas sobre las
aplicaciones web basadas totalmente en servidor. Use las caractersticas de AJAX cuando
desee realizar alguna de las siguientes acciones:
Mejorar la experiencia del usuario con pginas web enriquecidas, que responden
mejor a las acciones de los usuarios y se comportan como aplicaciones clientes
tradicionales.
Reducir actualizaciones de pginas completas y evitar el parpadeo de pginas.
Habilitar la compatibilidad entre exploradores sin escribir scripts de cliente.
Realizar comunicaciones cliente/servidor de tipo AJAX sin escribir scripts de cliente.
Usar controles y componentes de ASP.NET AJAX Control Toolkit.
Desarrollar controles ASP.NET AJAX personalizados.
http://msdn.microsoft.com/es-es/library/cc295497.aspx
Pgina referente a Controles en AJAX
http://msdn.microsoft.com/es-es/library/bb386573.aspx
Pgina referente a representacin parcial de pginas.
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos elaboran aplicaciones Web que acceden a un origen de datos
usando el modelo de objetos ADO.NET usando los controles que nos proporciona AJAX Control
Toolkit.
TEMARIO
Definicin de AJAX Control Toolkit
Proceso de Instalacin del AJAX Control Toolkit
Controles ms utilizados: Accordion, ConfirmButton, FilteredTextBox,
NumericUpDown, PasswordStrength, Slider.
ACTIVIDADES PROPUESTAS
Los alumnos manejan la conexin y operaciones a la base de datos utilizando los
controles de AJAX Control Toolkit
Los alumnos trabajan consultas con las base de datos utilizando los controles del AJAX
Control Toolkit con lo que enriquece la Aplicacin Web.
Vamos a distinguir entre controles Web y extendedores, donde los primeros tienen una
entidad por s mismos, mientras que los segundos nicamente aaden un comportamiento a
un control Web existente.
Estos controles van desde un simple botn con una alerta asociada, hasta un complejo panel
que podemos arrastrar por la pantalla; en ambos casos, mandando y recogiendo informacin
entre el cliente y el servidor sin ningn tipo de recarga de pgina. Su uso har que nuestra
Web sea mucho ms atractiva y simptica al usuario a la par que potente y efectiva.
Una vez instalado el paquete de Atlas, ya estamos preparados para instalar nuestro ASP.NET
AJAX Control Toolkit.
Para ello acudiremos a la Web donde se centraliza el trabajo sobre el ASP.NET AJAX Control
Toolkit, en su apartado de descargas:
http://ajaxcontroltoolkit.codeplex.com/
Como observamos podemos elegir entre descargarnos o no el cdigo fuente junto con el resto
del Kit. Nosotros elegiremos la opcin en que s lo tiene. Seguiremos a continuacin los
siguientes pasos:
4.- Ahora iniciemos nuestro programa de la familia Visual Studio 2005, en nuestro caso el
Visual Web Developer.
6.- Ahora ya tenemos un proyecto totalmente preparado para trabajar con ASP.NET. A
continuacin vamos a aadir los controles del ASP.NET AJAX Control Toolkit a nuestra caja de
herramientas. Para ello, una vez dentro de cualquiera de nuestras pginas (por ejemplo
default.aspx), ubiquemos el ratn sobre nuestra caja de herramientas y presionamos el botn
derecho para elegir Add Tab.
Con ello, crearemos un tab especfico en nuestra caja de herramientas para el ASP.NET AJAX
Control Toolkit.
8.- A continuacin desplegamos nuestro nuevo tab, presionamos sobre ste el botn de la
derecha y elegimos Choose tems...
9.- Desde la pestaa en que nos encontramos (.NET Framework Components), hacemos clic
sobre el botn de Browse... y navegamos hacia la carpeta donde hemos instalado nuestro
ASP.NET AJAX Control Toolkit.
El control Web Accordion te permite ubicar mltiples paneles, de modo que nicamente uno
ser visible en cada momento. Dichos paneles son los AccordionPane, de los que debemos
definir la cabecera (Header) y el contenido (Content). El estado del Accordion es guardado, de
modo que el AccordionPane activo se mantendr visible a travs de los postbacks.
Propiedades
9 propiedades definen al Accordion:
SelectedIndex: Define el AccordionPane que estar activo por defecto, donde el primero
tiene como ndice 0. Es opcional y por defecto vale 0.
caso de ser false la transicin se realizar de modo normal. Es optativo y por defecto vale false.
AutoSize: define la restriccin en la altura del Accordion. Puede tomar tres valores:
DataSource: El DataSource a aplicar (totalmente optativo). Para una correcta aplicacin hay
que llamar a DataBind().
Ejemplo
padding: 4px;
margin-top: 4px;
cursor: pointer;
}
.accordionContenido
{
font-family: Sans-Serif;
background-color: #fff8ab;
border: 1px solid black;
border-top: none;
font-size: 12px;
padding: 7px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
</div>
</form>
</body>
</html>
Adems, y como es obvio, debern definirse las clases CSS tanto de la cabecera como del
contenido.
2.2. ConfirmButton
Propiedades
TargetControlID: ID del control al que aplicaremos el efecto el ConfirmButton.
ConfirmText: Texto que se mostrar al presionar sobre el control. Por ejemplo Realmente
desea ejecutar?
Ejemplo
Mostraremos un botn que se ocupar de recargar la pgina. Cuando se nos muestre la
ventana de confirmacin elegiremos si realmente deseamos recargarla o no.
2.3. FilteredTextBox
Propiedades
TargetControlID: ID del TextBox sobre el que vamos a actuar.
FilterType: Tipo de filtro de entre los que hemos definido previamente. Los combinaremos
separndolos en comas.
ValidChars: slo se le har caso si hemos elegido a Custom como FilterType. Ser un string
con los caracteres que consideraremos vlidos.
Ejemplo
En nuestro ejemplo vamos a permitir que en nuestro TextBox se escriban nicamente nmeros
y los signos matemticos +, -, * y /.
2.4. NumericUpDown
Podremos asignar botones para que hagan de incrementador/decrementador o dejar los que
hay por defecto.
Propiedades
TargetControlID: ID del TextBox sobre el que vamos a actuar.
Width: anchura combinada del TextBox y sus botones de arriba/abajo que vienen dados por
defecto (mnimo 25). Si elegimos que otros botones hagan esa funcin, est propiedad se
ignorar.
RefValues: listado de valores sobre los que querremos ir subiendo y bajando. Los daremos en
forma de string separado por punto y coma ;.
TargetButtonDownID/TargetButtonUpID: ID de los botones que har la funcin de
incrementar y decrementar.
ServiceDownPath/ServiceUpPath: path del servicio Web al que llamaremos cuando se
incremente o decremente. En caso de estar trabajando con mtodos de pgina no utilizaremos
esta propiedad.
ServiceDownMethod/ServiceUpMethod: mtodo que ser llamado para
incrementar/decrementar el TextBox. Deber tener la forma:
[WebMethod]
public int NextValue(int current, string tag)
{}
Tag: se corresponde con el segundo parmetro del mtodo al que llamaramos, y lo podemos
utilizar para distinguir qu elemento est llamando al mtodo.
Ejemplo
En nuestro sencillo ejemplo, vamos a viajar por los planetas del sistema solar, donde ya no
incluiremos a nuestro querido Plutn.
2.5. PasswordStrength
Podemos elegir y configurar los dos modos que tenemos de mostrar al usuario la fortaleza de
su password:
- Mediante texto 100% configurable.
- Mediante una barra que se ir rellenando.
Adems, podemos aadir la opcin de ayuda, donde explicar al usuario cmo debe ser su
contrasea.
Propiedades
TargetControlID: ID del TextBox sobre el que vamos a trabajar.
DisplayPosition: posicin relativa del indicador con respecto al TextBox. Puede tomar 6
valores: AboveLeft, AboveRight, BelowLeft, BelowRight, LeftSide, RightSide.
StrengthIndicatorType: tipo de indicador: Text o BarIndicator.
PreferredPasswordLength: longitud mnima que debera tener la contrasea.
PrefixText: prefijo a mostrar cuando estemos mostrando el texto que describa la fortaleza de
la contrasea. Tpicamente ser Fortaleza= .
TextCssClass: clase CSS que se aplicar al texto que describe la fortaleza de la contrasea.
MinimumNumericCharacters: cantidad mnima de caracteres numricos.
MinimumSymbolCharacters: cantidad mnima de signos (ej.: $ ^ *)
RequiresUpperAndLowerCaseCharacters: especificamos si exigimos la combinacin de
maysculas y minsculas.
TextStrengthDescriptions: listado de texto que se usar para describir la fortaleza de la
contrasea. Ir ordenado de dbil a fuerte y separado por punto y coma ;. Tendr un mnimo
de 2 textos y un mximo de 10. Por ejemplo: muy dbil;dbil;mejorable;buena;perfecta.
CalculationWeightings: listado de 4 valores numricos separados por ;, donde la suma de
ellos debe dar 100. Cada valor asigna un porcentaje de importancia a una caracterstica del
password; por ejemplo 40;25;15;20 significa que el 40% del peso de fortaleza viene de la
longitud de la contrasea, el 25% a la cantidad de nmeros, el 15% a maysculas/minsculas y
el 20% a la cantidad de caracteres no alfanumricos.
BarBorderCssClass: Clase CSS del borde de la barra indicadora.
BarIndicatorCssClass: Clase CSS del interior de la barra indicadora.
HelpStatusLabelID: ID de la Label que usaremos opcionalmente- para mostrar el texto de
ayuda.
HelpHandleCssClass: clase CSS del elemento que mostrar el texto de ayuda.
HelpHandlePosition: posicin relativa del elemento de ayuda con respecto al TextBox. Puede
tomar 6 valores: AboveLeft, AboveRight, BelowLeft, BelowRight, LeftSide, RightSide.
Ejemplo
Veamos qu fortaleza nos asigna este control:
2.6. Slider
Propiedades
Minimum: Valor inferior. Por defecto es 0.
Maximum: Valor superior. Por defecto 100.
Decimals: Cantidad de decimales. Por defecto no hay.
Steps: Cuando queramos un deslizamiento discreto, marcaremos la cantidad de pasos.
Value: Valor actual del deslizador.
EnableHandleAnimation: Activa la animacin.
HandleAnimationDuration: duracin en milisegundos de la animacin.
RailCssClass: Asigna una clase CSS a la va sobre la que se mueve el deslizador.
HandleCssClass: Asigna una clase CSS al deslizador.
HandleImageURL: opcionalmente podemos asignar una imagen al deslizador.
Length: Longitud del deslizador. Por defecto se coger la longitud del TextBox que estamos
extendiendo
BoundControlID: ID del TextBox o Label en el que estamos mostrando el valor del deslizador.
RaiseChangeOnlyOnMouseUp: Si se activa, lanza el evento change cuando se suelta el
botn izquierdo del ratn.
Ejemplo
Mostramos lo fcil que es crear un Slider.
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<ajaxToolkit:SliderExtender ID="SliderExtender1" runat="server"
TargetControlID="TextBox1"
BoundControlID="TextBox2" />
Laboratorio 12.1
Tema: Control ScriptManager y UpdatePanel conectados con Base de Datos.
<add name="Cn"
connectionString="server=(local);database=ventasdemo;uid=sa;pwd=sql"/>
3. Cree una clase Conexin donde se pueda establecer la conexin con la base de datos y
devolver un objeto configurado SqlConnection.
Imports System.Data.SqlClient
Imports System.Configuration.ConfigurationManager
Imports System.Data
Imports System.Data.SqlClient
6. Hasta este momento no hemos usado AJAX debido a que vemos que al seleccionar el
cliente aun hay postback, es decir, podemos apreciar como la pgina se vuelve ha
cargar, pero agregando un paso ms podremos apreciar como el postback se hace en
un segundo plano, es decir, que para el usuario es como que no hay postback, no se
recargar la pgina lo cual har que la consulta sea ms rpida. Para poder ver eso
hagamos lo siguiente:
Laboratorio 12.2
Tema: Ejemplo de configuracin de Controles de AJAX Control Toolkit
En este laboratorio desarrollaremos un ejemplo de como utilizar algunos de los controles del
AJAX Control Toolkit.
Para poder hacer que el password alcance el nivel de Perfecto debemos ingresar
como mnimo, a parte de todos los caracteres que queramos, 2 caracteres numricos y
2 simbolos, de otra forma no alcanzaremos en nivel perfecto.
El CalendarExtender tiene varias vistas: Por Das, por Meses, o por Aos. Eso lo puede
configurar con la propiedad DefaultView. Es importante tambin configurar la
propiedad Format para que al seleccionar la fecha, en el Textbox aparezca la fecha en
el formato que se desea.
En este ejemplo solo estamos seleccionando la propiedad FilterType como Numbers para
que el usuario solo pueda digitar nmeros, y para establecer la cantidad mxima de
caracteres a 8 solo configure la propiedad MaxLength del txtDni.
En este ejemplo estamos asumiendo que los usuarios no deben ser menores de edad por
tal razn el valor de Minimum es 18, y Maximum 80. Es importante configurar la
propiedad Width ya que de otra manera no se podr apreciar el NumericUpDown.
En este ejemplo configuramos este control para que cuando el usuario haga click aparezca
un mensaje que diga Esta Seguro del Registro?
Autoevaluacin
1. Defina qu es AJAX Control Toolkit
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
Resumen
El ASP.NET AJAX Control Toolkit nace como un proyecto conjunto entre la comunidad de
programadores y Microsoft. Est desarrollado en base a ASP.NET AJAX y contiene una serie de
controles Web y extendedores con los que podremos utilizar las avanzadas caractersticas de
ASP.NET AJAX sin ms que un arrastre de ratn. Del mismo modo, con su descarga disponemos
de ejemplos de uso as como del propio cdigo fuente de los controles. Y lo mejor de todo es
que es totalmente gratuito.
Vamos a distinguir entre controles Web y extendedores, donde los primeros tienen una
entidad por s mismos, mientras que los segundos nicamente aaden un comportamiento a
un control Web existente.
Estos controles van desde un simple botn con una alerta asociada, hasta un complejo panel
que podemos arrastrar por la pantalla; en ambos casos, mandando y recogiendo informacin
entre el cliente y el servidor sin ningn tipo de recarga de pgina. Su uso har que nuestra
Web sea mucho ms atractiva y simptica al usuario a la par que potente y efectiva.
http://msdn.microsoft.com/es-es/library/bb470455(v=vs.90).aspx
http://msdn.microsoft.com/es-es/library/bb470384(v=VS.90).aspx
UNIDAD DE
APRENDIZAJE
Al trmino de la unidad, los alumnos elaboran aplicaciones Web conectadas con base de datos
utilizando el modelo de ADO.Net cargando imgenes en el servidor y almacenandolas en la
base de datos.
TEMARIO
Explicacin del uso de LightBox2 en AJAX para crear una Galera de Imgenes.
ACTIVIDADES PROPUESTAS
Los alumnos desarrollan la aplicacin Web de Contactos conectandose con una base
de datos manejando imgenes.
En esta pantalla hay dos opciones de para mostrar galeras usando LigthBox 2
de AJAX: Una opcin es de imgenes individuales y la otra opcin es para
mostrar imgenes con opcin de avanzar y retroceder.
Laboratorio 13.1
Tema: Desarrollo de Aplicacin Web de Contactos con imgenes
2. Programe el siguiente cdigo en el cual veremos el registro de los datos del contacto
incluyendo la foto que se almacenar como binario y a su vez se subir el archivo de
imagen al servidor, es decir, a su proyecto y se almacenarn en la carpeta
DirectorioImagenes.
Imports System.Data.SqlClient
Imports System.IO
Try
connection.Open()
cmd.ExecuteNonQuery()
'redireccionar la pgina
Response.Redirect("ConfirmacionRegistro.aspx")
Finally
connection.Close()
End Try
End Sub
End Class
4. Programe el siguiente cdigo en el cual veremos la confirmacin de los datos del contacto
incluyendo la foto que se almacen en la carpeta DirectorioImagenes. Al presionar el
botn Aceptar regresar a la pgina de inicio.
Imports System.IO
Imports System.Data.SqlClient
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Data
Partial Class ConfirmacionRegistro
Inherits System.Web.UI.Page
connection.Open()
dr.Read()
lblEmail.Text = dr(3)
lblTelefono.Text = dr(4)
End Sub
Diseo del control DataList: Seleccione de Tareas Comunes la opcin Editar Plantillas
Para enlazar a datos al control Image seleccione de Tareas Comunes la opcin Edit
Databindings.
Para enlazar los labels a datos de Tareas Comunes seleccione la opcin Edit
DataBindins y escriba la siguiente expresin de enlace a datos.
Haga Click en OK. La siguiente figura muestra el acabado final del DataList:
6. Programe el siguiente cdigo para mostrar la informacin de todos los contactos y de los
filtrados:
Imports System.Data
Imports System.Data.SqlClient
Partial Class ListadoContactos
Inherits System.Web.UI.Page
Dim connection As New _
SqlConnection("server=LocalHost;database=dbContactos;uid=sa;pwd=sql")
Protected Sub Page_Load(ByVal sender As Object, )
If Not Page.IsPostBack Then
Dim da As New SqlDataAdapter( _
"select * from tb_contacto order by 3", connection)
Dim tabla As New DataTable
da.Fill(tabla)
With DataList1
.DataSource = tabla
.DataBind()
End With
End If
End Sub
Laboratorio 13.2
Tema: Desarrollo de Aplicacin Web de Galera de imgenes con LightBox 2 en AJAX.
http://www.huddletogether.com/projects/lightbox2/
2. Las carpetas de LightBox 2.04 que debe agregar a su Proyecto son las siguientes:
For i As Integer = 1 To 10
Response.Write("<a href=fotos/" + _
i.ToString + ".jpg rel=lightbox title='imagen" + i.ToString + _
"'>imagen " + i.ToString + "</a><br>")
Next
Response.Write( _
"<br><font name=Arial><b>Galeria de Imagenes con Opciones de Avanzar y
Retroceder</b></font><hr>")
For i As Integer = 1 To 10
Response.Write("<a href=fotos/" + _
i.ToString + ".jpg rel=lightbox[roadtrip]>image #" + _
i.ToString + "</a><br>")
Next
End Sub
Autoevaluacin
1. Cmo se puede almacenar imgenes en la base de datos?
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
Resumen
El manejo de imgenes en una aplicacin generalmente se hace de 2 formas: Almacenando la
imagen en formato binario en la misma base de datos, o se almacena solo la ruta en la base de
datos y los archivos de imagen se almacenan en una carpeta.
En las aplicaciones Web es importante tener las imgenes en el servidor, por ello es que
debemos subir los archivos de la imagen a nuestro proyecto para que sea ms fcil de
administrar y tambin el enlace de controles a datos sea ms prctico y rpido.
El control FileUpload es de gran utilidad no solo para cargar imgenes sino tambin para subir
cualquier tipo de archivo a nuestro servidor o aplicacin y se puede direccionar para que los
guarden en un directorio especfico.
Ligthbox 2.04 es un proyecto desarrollado en AJAX para poder ser reutilizado y crear una
galera de imgenes.
Puede extender aplicaciones ASP.NET existentes y desarrollar otras nuevas que incorporen la
funcionalidad AJAX (JavaScript asincrnico y XML). Las caractersticas de AJAX de ASP.NET
permiten crear aplicaciones web enriquecidas que incorporan muchas ventajas sobre las
aplicaciones web basadas totalmente en servidor. Use las caractersticas de AJAX cuando
desee realizar alguna de las siguientes acciones:
Mejorar la experiencia del usuario con pginas web enriquecidas, que responden
mejor a las acciones de los usuarios y se comportan como aplicaciones clientes
tradicionales.
Reducir actualizaciones de pginas completas y evitar el parpadeo de pginas.
Habilitar la compatibilidad entre exploradores sin escribir scripts de cliente.
Realizar comunicaciones cliente/servidor de tipo AJAX sin escribir scripts de cliente.
Usar controles y componentes de ASP.NET AJAX Control Toolkit.
Desarrollar controles ASP.NET AJAX personalizados.
Pgina de consulta
http://www.huddletogether.com/projects/lightbox2/
Pgina referente a LightBox 2.04
http://www.123aspx.com/redir.aspx?res=30249
Pgina referente a Carga de Imgenes desde Base de Datos.
UNIDAD DE
APRENDIZAJE
ASP.Net MVC
TEMARIO
Definicin de MVC
Ventajas de una aplicacin Web basada en MVC
Caractersticas del Marco MVC
Estructura de una aplicacin MVC
ACTIVIDADES PROPUESTAS
Los alumnos desarrollan aplicaciones utilizando el patrn de desarrollo MVC, utilizando
controllers y views.
Los alumnos desarrollan aplicaciones utilizando el patrn de desarrollo MVC
agregando funcionalidades con Controles AJAX.
1. ASP.NET MVC
El Model-View-Controller (MVC) separa la arquitectura de una aplicacin en tres
componentes principales: el modelo, la vista, y el controlador. El marco de ASP.NET
MVC proporciona una alternativa al modelo de formularios Web Forms ASP.NET para
crear aplicaciones web basadas en MVC. El marco de ASP.NET MVC es un marco
ligero, presentacin muy comprobable que (como con las aplicaciones de formularios
basados en Web) se integra con las caractersticas de ASP.NET, como pginas maestras
y la autenticacin basada en membresa. El framework MVC se define en el espacio de
nombres System.Web.Mvc y es un derecho fundamental, con el apoyo de parte del
espacio de nombres System.Web.
Puntos de vista. Las vistas son los componentes que muestran la aplicacin, su
interfaz de usuario (UI). Normalmente, esta interfaz de usuario es creado a partir de
los datos del modelo. Un ejemplo podra ser una vista de edicin de una tabla de
productos que muestra cuadros de texto, listas desplegables y las casillas de
verificacin basada en el estado actual de los productos objeto.
El patrn MVC le ayuda a crear aplicaciones que separan los diferentes aspectos de la
aplicacin (de entrada lgica, la lgica de negocio, y la lgica de la interfaz de usuario),
mientras que proporciona un acoplamiento entre estos elementos. El modelo especifica que
cada tipo de lgica debe estar ubicado en la solicitud. La lgica de la interfaz de usuario
pertenece a la vista. La lgica de entrada pertenece en el controlador. La lgica de negocio
pertenece al modelo. Esta separacin le ayuda a gestionar la complejidad al crear una
aplicacin, ya que le permite centrarse en un aspecto de la aplicacin a la vez. Por ejemplo,
usted puede concentrarse en el punto de vista, sin depender de la lgica de negocio.
Adems de gestionar la complejidad, el patrn MVC hace ms fcil para probar las
aplicaciones de lo que es prueba de una web basada en formularios aplicacin Web ASP.NET.
Por ejemplo, en una web basada en formularios de aplicaciones Web ASP.NET, una sola clase
se utiliza tanto para mostrar la salida y para responder a la entrada del usuario. Escribir
pruebas automatizadas para las aplicaciones ASP.NET Web Forms-basado puede ser complejo,
porque para probar una pgina individual, debe crear instancias de la clase de pgina, todos
sus controles secundarios, y ms dependiente de las clases en la aplicacin. Debido a que
muchas clases se crean instancias para ejecutar la pgina, puede ser difcil de escribir las
pruebas que se centran exclusivamente en las partes individuales de la solicitud. Las pruebas
de aplicaciones Web ASP.NET basada en formularios por lo tanto puede ser ms difcil de
aplicar que las pruebas en una aplicacin MVC. Por otra parte, los ensayos en una aplicacin
Web ASP.NET basada en formularios requiere un servidor Web. El framework MVC separa los
componentes y hace un uso intensivo de las interfaces, lo que permite probar los
componentes individuales de forma aislada del resto del marco.
El acoplamiento entre los tres principales componentes de una aplicacin MVC tambin
promueve el desarrollo paralelo. Por ejemplo, un desarrollador puede trabajar en la vista, un
segundo desarrollador puede trabajar en la lgica del controlador, y un tercer desarrollador
puede concentrarse en la lgica de negocio en el modelo.
Antes de decidirse a usar el framework MVC o el modelo de formularios Web Forms para un
sitio Web especfico, debe saber las ventajas de cada enfoque.
Es compatible con un modelo de eventos que preserve el estado a travs de HTTP, que
beneficia a la lnea de negocio de desarrollo de aplicaciones Web. La aplicacin Web
basada en formularios ofrece docenas de eventos que se apoyan en cientos de
controles de servidor.
Se utiliza un patrn Page Controller que aade funcionalidad a las pginas individuales.
Utiliza el estado de vista o formas basadas en servidor, que puede hacer ms fcil la
gestin de la informacin de estado.
Funciona bien para pequeos equipos de desarrolladores y diseadores Web que
quieran aprovechar el gran nmero de componentes disponibles para el desarrollo
rpido de aplicaciones.
Page En general, es menos complejo para el desarrollo de aplicaciones, ya que los
componentes (la clase Page, controles, etc) estn estrechamente integradas y por lo
general requiere menos cdigo que el modelo MVC.
El marco de MVC de ASP.NET asigna las direcciones URL al cdigo del servidor de manera
diferente que una pgina de formularios Web Forms de ASP.NET. En lugar de asignar las
direcciones URL a pginas o controladores de ASP.NET, el marco asigna las direcciones URL a
las clases de controlador. Las clases de controlador controlan las solicitudes entrantes, como
los datos e interacciones del usuario, y ejecuta la aplicacin y la lgica de datos
correspondientes en funcin de los datos proporcionados por el usuario. Normalmente, una
clase de controlador llama a un componente de vista independiente que genera una salida
HTML como respuesta.
El marco de MVC de ASP.NET separa los componentes del modelo, vista y controlador. El
modelo representa la lgica de negocio o dominio de la aplicacin, normalmente con los datos
proporcionados por una base de datos. El controlador selecciona la vista, que representa la
interfaz de usuario adecuada. De forma predeterminada, el marco de MVC de ASP.NET usa los
tipos existentes de pgina de ASP.NET (.aspx), pgina maestra (.master) y control de usuario
(.ascx) para la representacin en el explorador. El controlador busca el mtodo de accin
adecuado en el controlador, obtiene los valores que se usarn como argumentos del mtodo
de accin y administra los errores que se pudieran producir cuando se ejecuta el mtodo de
accin. A continuacin, representa la vista solicitada. De forma predeterminada, cada conjunto
de componentes est en una carpeta independiente de un proyecto de aplicacin web de
MVC.
El marco de MVC de ASP.NET no usa el modelo de postback de los formularios Web Forms de
ASP.NET para las interacciones con el servidor. En su lugar, todas las interacciones del usuario
final se enrutan a una clase de controlador. De este modo se mantiene la separacin entre la
lgica de la interfaz de usuario y la lgica empresarial, y aumenta la facilidad de pruebas. Por
consiguiente, el estado de vista de ASP.NET y los eventos de ciclo de vida de las pginas de
formularios Web Forms de ASP.NET no se integran con las vistas basadas en MVC.
El marco de MVC de ASP.NET incluye una plantilla de proyecto de Visual Studio que ayuda a
crear aplicaciones web estructuradas para admitir el modelo de MVC. Esta plantilla crea una
nueva aplicacin web de MVC que se configura para tener las carpetas, plantillas de elementos
y entradas de archivo de configuracin necesarias.
Al crear una nueva aplicacin web de MVC, Visual Studio ofrece la opcin de crear dos
proyectos al mismo tiempo. El primer proyecto es un proyecto web donde se implementa su
aplicacin. El segundo proyecto es un proyecto de prueba unitaria donde puede escribir las
pruebas unitarias para los componentes de MVC del primer proyecto.
App_Data, que es el almacn fsico de los datos. Esta carpeta tiene el mismo rol que
en los sitios web ASP.NET que usan pginas de formularios Web Forms.
Content, que es la ubicacin recomendada para agregar los archivos de contenido,
como los archivos de hoja de estilos en cascada, imgenes, etc. En general, la carpeta
Content es para archivos estticos.
Controllers, que es la ubicacin recomendada para los controladores. El marco de
MVC requiere que los nombres de todos los controladores terminen con "Controller",
como HomeController, LoginController o ProductController.
Models, disponible para las clases que representan el modelo de aplicaciones de su
aplicacin web de MVC. Normalmente, esta carpeta incluye cdigo que define los
objetos y la lgica para la interaccin con el almacn de datos. Normalmente, los
objetos del modelo real estarn en bibliotecas de clases independientes. Sin embargo,
al crear una nueva aplicacin, podra colocar las clases aqu y, a continuacin, moverlas
a bibliotecas de clases independientes en un momento posterior del ciclo de
desarrollo.
Scripts, que es la ubicacin recomendada para los archivos de script que respaldan la
aplicacin. De forma predeterminada, esta carpeta contiene archivos de base AJAX de
ASP.NET y la biblioteca de jQuery.
Views, que es la ubicacin recomendada para las vistas. Las vistas usan archivos
ViewPage (.aspx), ViewUserControl (.ascx) y ViewMasterPage (.master), adems de
otros archivos relacionados con la representacin de vistas. La carpeta Views contiene
una carpeta para cada controlador; el nombre de la carpeta es el prefijo del nombre
del controlador. Por ejemplo, si tiene un controlador denominado HomeController, la
carpeta Views contiene una carpeta denominada Home. De forma predeterminada,
cuando el marco de MVC de ASP.NET carga una vista, busca un archivo ViewPage
(.aspx) con el nombre de la vista solicitada en la carpeta Views\nombreControlador.
De forma predeterminada, existe tambin una carpeta denominada Shared en la
carpeta Views, que no corresponde a ningn controlador. La carpeta Shared se usa
para las vistas que se comparten entre varios controladores. Por ejemplo, puede
colocar la pgina maestra de la aplicacin web en la carpeta Shared.
Adems de las carpetas enumeradas anteriormente, una aplicacin web de MVC usa el cdigo
del archivo Global.asax para establecer los valores predeterminados de enrutamiento global
de direcciones URL, y usa el archivo Web.config para configurar la aplicacin.
Laboratorio 14.1
Tema: Crear un proyecto ASP.Net MVC
6. Si desea que el nombre de la solucin difiera del nombre del proyecto, escriba un
nombre en el cuadro Nombre de la solucin.
7. Seleccione Crear directorio para la solucin.
8. Haga clic en Aceptar.
Content, para los archivos de compatibilidad del contenido. Esta carpeta contiene la
hoja de estilos en cascada (archivo .css) para la aplicacin.
Controllers, para los archivos de controlador. Esta carpeta contiene los controladores
de ejemplo de la aplicacin, que se denominan AccountController y HomeController.
La clase AccountController contiene la lgica de inicio de sesin para la aplicacin. La
clase HomeController contiene la lgica a la que se llama de forma predeterminada
cuando la aplicacin se inicia.
Models, para los archivos de modelo de datos como los archivos .dbml de LINQ to SQL
o los archivos de entidad de datos.
Scripts, para los archivos de script, como los compatibles con ASP.NET AJAX y jQuery.
Views, para los archivos de paginacin de vistas. Esta carpeta contiene tres
subcarpetas: Account, Home y Shared. La carpeta Account contiene vistas que se
utilizan como interfaz de usuario para el inicio de sesin y para cambiar las
contraseas. La carpeta Home contiene una vista Index (la pgina de inicio
predeterminada para la aplicacin) y una vista de pgina Acerca de. La carpeta Shared
contiene la vista de la pgina maestra para la aplicacin.
Si est utilizando una edicin de Visual Studio distinta de Standard o Express, tambin se
gener un proyecto de prueba. El proyecto de prueba tiene una carpeta Controllers que
contiene la clase HomeControllerTest. Esta clase tiene una prueba unitaria para cada mtodo
de accin HomeController (Index y About).
El proyecto de MVC recin generado es una aplicacin completa que puede compilar y
ejecutar sin cambios. La ilustracin siguiente muestra cmo apareca la aplicacin al ejecutarla
en un explorador.
El proyecto de prueba unitaria tambin est listo para compilar y ejecutar. Para este
laboratorio, agregar un controlador con un mtodo de accin y una vista y agregar una
prueba unitaria para el mtodo de accin.
Agregar un controlador
Ahora agregar un controlador que contiene la lgica para descargar mapas urbanos del
servicio Web Microsoft Virtual Earth.
El marco de ASP.NET MVC exige que los nombres de controlador acaben en "Controller",
como HomeController, GameController o MapsController.
3. Desactive la casilla Agregar mtodos de accin para los escenarios Create, Update y
Details.
Para aplicar tcnicas de desarrollo basado en pruebas (TDD) a este proyecto debe escribir la
prueba unitaria para un mtodo de accin antes de escribir el propio mtodo de accin. Sin
embargo, si desea que su prueba unitaria se compile, debe tener un cdigo auxiliar para el
mtodo de accin planeado, que en este laboratorio es ViewMaps.
Function ViewMaps()
' Add action logic here
Throw New NotImplementedException()
End Function
1. En el proyecto de pruebas, haga clic con el botn secundario del mouse en la carpeta
Controllers, haga clic en Agregar y despus haga clic en Clase.
2. En el cuadro de texto Nombre, escriba MapsControllerTest.
3. Haga clic en Agregar. Visual Studio agrega la clase MapsControllerTest al proyecto de
prueba.
4. Abra la clase MapsControllerTest y escriba el cdigo que se muestra a continuacin:
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.Web.Mvc
Imports Microsoft.VisualStudio.TestTools.UnitTesting
Imports MvcApplicationLab13-1
End Get
Set(ByVal value As TestContext)
testContextInstance = value
End Set
End Property
' Act
Dim result As ViewResult = controller.ViewMaps()
' Assert
Assert.IsNotNull(result)
End Sub
End Class
Este cdigo define las pruebas unitarias para el mtodo de accin que terminar despus.
La prueba produce un error, porque el mtodo de accin ViewMaps produce una excepcin
actualmente.
Ahora agregar el cdigo a la clase MapsController para el mtodo de accin ViewMaps con
objeto de representar la vista Maps.
Despus agregar una vista Maps. Para mantener las vistas organizadas, agregar primero una
carpeta Maps bajo la carpeta Views.
3. Abra la clase MapsController, haga clic con el botn secundario del mouse dentro del
mtodo de accin ViewMaps y, a continuacin, haga clic en Agregar vista.
src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&mkt=en-
us">
</script>
<script type="text/javascript">
var map = null;
var mapID = '';
function GetMap(mapID)
{
switch (mapID)
{
case 'Seattle':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(47.6, -122.33), 10 ,'i', true);
break;
case 'LasVegas':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(36.17, -115.14), 10 ,'i' ,true);
break;
case 'SaltLake':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(40.75, -111.89), 10 ,'i' ,true);
break;
case 'Dallas':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(32.78, -96.8), 10 ,'i' ,true);
break;
case 'Chicago':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(41.88, -87.62), 10 ,'i' ,true);
break;
case 'NewYork':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(40.7, -74), 10 ,'i' ,true);
break;
case 'Rio':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(-22.91, -43.18), 10 ,'i' ,true);
break;
case 'Paris':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(48.87, 2.33), 10 ,'i' ,true);
break;
case 'Naples':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(40.83, 14.25), 10 ,'i' ,true);
break;
case 'Keta':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(5.92, 0.983), 10 ,'i' ,true);
break;
case 'Beijing':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(39.91, 116.39), 10 ,'i' ,true);
break;
case 'Sydney':
map = new VEMap('earthMap');
map.LoadMap(new VELatLong(-33.86, 151.21), 10 ,'i' ,true);
}
}
</script>
Este marcado define una lista desplegable para seleccionar un mapa y la lgica de JavaScript
para recuperar el mapa seleccionado del servicio Web Microsoft Virtual Earth.
Agregar ahora un elemento al men de pgina maestra que llama al mtodo de accin
ViewMaps.
Los resultados se muestran en la ventana Resultados de pruebas. Esta vez las pruebas
se realizan correctamente.
Se muestra la pgina Index.aspx, que incluye las pestaas que estn definidas en la
pgina maestra.
Se muestra la pgina My City Maps. Seleccione cualquier mapa para verlo en pantalla.
Laboratorio 14.2
Tema: Agregar scripting de ASP.NET AJAX a un proyecto de MVC
ASP.NET AJAX habilita una aplicacin web para recuperar los datos del servidor de forma
asincrnica y actualizar partes de la pgina existente. Esto mejora la experiencia del usuario al
hacer que la aplicacin web sea ms sensible.
Este laboratorio muestra cmo comenzar a agregar la funcionalidad de ASP.NET AJAX a una
aplicacin ASP.NET MVC.
Luego agregar dos mtodos de accin a los que se puede llamar de forma asincrnica desde
el script de cliente. El mtodo GetStatus sencillamente devuelve un estado de "OK" y la hora
actual. El mtodo UpdateForm recibe la entrada de un formulario HTML y devuelve un
mensaje que incluye la hora actual.
Return [String].Empty
End Function
Probar la aplicacin
1. Presione CTRL+F5.
El mensaje del estado se actualiza con la hora de la actualizacin. Observe que slo se
actualiz el mensaje de estado.
Un mensaje muestra el texto que escribi y la hora a la que lo escribi. Una vez ms,
observe que slo se proces el formulario.
Autoevaluacin
1. Defina qu es MVC
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
-------------------------------------------------------------------------------------------------------------------------
Resumen
ASP.NET MVC forma parte del marco de trabajo ASP.NET. Desarrollar una aplicacin ASP.NET
MVC es una alternativa al desarrollo de pginas de formularios Web Forms de ASP.NET; no
reemplaza el modelo de formularios Web Forms.
Modelos. Los objetos de modelo son las partes de la aplicacin que implementan la
lgica del dominio de datos de la aplicacin. A menudo, los objetos de modelo
recuperan y almacenan el estado del modelo en una base de datos. Por ejemplo, un
objeto Product podra recuperar informacin de una base de datos, trabajar con ella y,
a continuacin, escribir la informacin actualizada en una tabla Productos de una base
de datos de SQL Server. En las aplicaciones pequeas, el modelo es a menudo una
separacin conceptual en lugar de fsica. Por ejemplo, si la aplicacin solo lee un
conjunto de datos y lo enva a la vista, la aplicacin no tiene un nivel de modelo fsico y
las clases asociadas. En ese caso, el conjunto de datos asume el rol de un objeto de
modelo.
Vistas. Las vistas son los componentes que muestra la interfaz de usuario de la
aplicacin. Normalmente, esta interfaz de usuario se crea a partir de los datos de
modelo. Un ejemplo sera una vista de edicin de una tabla Productos que muestra
cuadros de texto, listas desplegables y casillas basndose en el estado actual de un
objeto Product.
Controladores. Los controladores son los componentes que controlan la interaccin
del usuario, trabajan con el modelo y por ltimo seleccionan una vista para
representar la interfaz de usuario. En una aplicacin MVC, la vista solo muestra
informacin; el controlador administra y responde a los datos proporcionados por el
usuario y su interaccin. Por ejemplo, el controlador administra los valores de la
cadena de consulta y pasa estos valores al modelo, que a su vez podra utilizarlos para
consultar la base de datos.
Pginas de consulta
http://msdn.microsoft.com/es-es/library/dd394709.aspx
Pgina referente a Model View Controller (MVC) de ASP.NET
http://msdn.microsoft.com/es-es/library/dd410269.aspx
Pgina referente a Controladores y mtodos de accin en aplicaciones MVC