5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
1/54
ASP.NET(1)ASP.NET(1)Lic. Israel Garca AnidoLic. Israel Garca Anido
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
2/54
Como trabajan las aplicaciones Web?Como trabajan las aplicaciones Web?
INTERNET
ARQUITECTURA CLIENTE SERVIDOR
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
3/54
Aplicaciones WEBAplicaciones WEB
Cliente: Browsers, Internet Explorer,Cliente: Browsers, Internet Explorer,
Netscape, Opera browser, (generalmenteNetscape, Opera browser, (generalmente
indeterminado)indeterminado)Server: Las aplicaciones corren sobre elServer: Las aplicaciones corren sobre el
servicio IIS, quien es el encargado deservicio IIS, quien es el encargado de
procesar los pedidos de los clientesprocesar los pedidos de los clientes
mediante el protocolo HTTP.mediante el protocolo HTTP.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
4/54
Que sucede cuando un browser hace unaQue sucede cuando un browser hace una
solicitud a un archivo aspxsolicitud a un archivo aspx
IIS Recibe el Pedido.http://server/hello.aspx SERVER
ASP.NET WORK PROCESS
EXISTE EN
OUTPUTCACHE?
COMPILADA?COMPILAR
A MSIL
PARSING
NO
NO
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
5/54
Segundo pedido.Segundo pedido.
IIS Recibe el Pedido.http://server/hello.aspx SERVER
ASP.NET WORK PROCESS
EXISTE EN
OUTPUTCACHE?
COMPILADA?COMPILAR
A MSIL
PARSING
NO
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
6/54
ASP vs ASP.NETASP vs ASP.NET
ASP:
Cdigo interpretado.
ASP.NET:
Cdigo compilado.
ASP:
Archivos con extensin .asp
ASP.NET:
Archivos con extension .aspx
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
7/54
ASP vs ASP.NETASP vs ASP.NET
ASP:
Dificultad para reusar cdigo. (.js, includes)
ASP.NET:
User controls y codebehind.
ASP:
Lenguajes Scripts (MS VBScript, MS Jscript)
ASP.NET:
Independiente de lenguaje.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
8/54
ASP vs ASP.NETASP vs ASP.NET
ASP:
HTML and ActiveX Controls.
ASP.NET:
Client and ServerControls.
ASP:
Necesidad de escribir codigo para hacer cualquier operacin.
ASP.NET:
Controles del servidor.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
9/54
ASP vs ASP.NETASP vs ASP.NET
ASP:
Lee los valores de los controles por Request.Form.
ASP.NET:
Lee los valores de los controles a traves de sus
propiedades.
ASP:
Todos los eventos son del lado del cliente.
ASP.NET:
Eventos del lado del cliente y del lado del servidor.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
10/54
ASP vs ASP.NETASP vs ASP.NET
ASP:
Orden de ejecucion determinada por la posicion en el
archivo.
ASP.NET:
El orden de ejecucion es majedada por eventos.
ASP:
Global.asa.
ASP.NET:
Global.asax.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
11/54
ASP vs ASP.NETASP vs ASP.NET
ASP:
Orden de ejecucion determinada por la posicion en el
archivo.
ASP.NET:
El orden de ejecucion es majedada por eventos.
ASP:
Informacion persistente debe mantenerse utilizando Session
o Application.
ASP.NET:
Session, Application, ViewState y archivo de configuracion:
web.config
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
12/54
Code InlineCode Inline
Utilizado por ASP y por ASP.NETUtilizado por ASP y por ASP.NET
El cdigo fuente de la aplicacin est embebido dentroEl cdigo fuente de la aplicacin est embebido dentrode el codigo HTML.de el codigo HTML.
Dificultad para disear las pginas.Dificultad para disear las pginas.
Bueno para desarrollar aplicaciones pequeas yBueno para desarrollar aplicaciones pequeas ysencillas.sencillas.
CompilacinCompilacin segn se vaya accediendo a las pginassegn se vaya accediendo a las pginas((ASP.NETASP.NET) o compilacion previa de todas las clases de) o compilacion previa de todas las clases delas paginas (recomendable), segn se desee.las paginas (recomendable), segn se desee.
Pueden producirse errores en tiempo de ejecucin.Pueden producirse errores en tiempo de ejecucin.Errores que podrian detectarse si compilasemos laErrores que podrian detectarse si compilasemos laaplicacin completa previamente, ej: asignacion invlidaaplicacin completa previamente, ej: asignacion invlidade tipos. Errores de sintaxis.de tipos. Errores de sintaxis.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
13/54
Code behindCode behind
Utilizado por ASP.NET.Utilizado por ASP.NET.El cdigo fuente de la aplicacin est separado delEl cdigo fuente de la aplicacin est separado delHTML.HTML.
Se puede disear el cdigo HTMLSe puede disear el cdigo HTML
independientemente al procesamiento deindependientemente al procesamiento deinstrucciones.instrucciones.
Bueno para desarrollar aplicaciones escalables yBueno para desarrollar aplicaciones escalables yreusables.reusables.
Cdigo compilado previamente. (Acceso rpido)Cdigo compilado previamente. (Acceso rpido)
Deteccin de errores en tiempo de compilacin.Deteccin de errores en tiempo de compilacin.Solo podrian producirse errores severos en tiempoSolo podrian producirse errores severos en tiempode ejecucin y pueden ser capturado mediantede ejecucin y pueden ser capturado mediante
excepciones.excepciones.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
14/54
Ejemplo code inline.Ejemplo code inline.
// Insert page code here//
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
15/54
Ejemplo Code behindEjemplo Code behind
WebForm1
En el archivo WebForm1.aspx.cs se almacena informacion de la clase que
controla la pgina.
WebForm1.aspx
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
16/54
Public Class WebForm1
Inherits System.Web.UI.Page
Region de cdigo adicionado por el VS para la funcionalidad
y la inicializacion de la pgina.
Private Sub Page_Load(ByVal sender As System.Object, ByVal
e As System.EventArgs) Handles MyBase.Load'Put user code to initialize the page here
End Sub
End Class
Ejemplo Code behindEjemplo Code behind
WebForm1.aspx.cs
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
17/54
HTTPHTTP RuntimeRuntime
Cdigo administradoCdigo administrado
Se ejecuta en un proceso no administradoSe ejecuta en un proceso no administrado
Permite 100% de disponibilidadPermite 100% de disponibilidad
Procesa asincrnicamente todas lasProcesa asincrnicamente todas las
llamadasllamadas
MultithreadedMultithreaded
Reemplaza ISAPIReemplaza ISAPI Internet Server Application ProgrammingInternet Server Application Programming
InterfaceInterface
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
18/54
Conceptos y ArquitecturaConceptos y Arquitectura Arch. de configuracin: web.configArch. de configuracin: web.config
Basado en XML, legible y modificable por humanosBasado en XML, legible y modificable por humanos
El archivo se mantiene en el mismo directorio que laEl archivo se mantiene en el mismo directorio que la
aplicacinaplicacinLos cambios se detectan automticamenteLos cambios se detectan automticamente
Arquitectura de configuracin jerrquicaArquitectura de configuracin jerrquica
Afecta el subdirectorio actual y todos los dependientesAfecta el subdirectorio actual y todos los dependientes
Root
DirSub
Dir1Sub
Dir2
web.config
ConfiguracinConfiguracin
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
19/54
Mejoras de seguridadMejoras de seguridad
Autenticacion integrada a windows, passport y basadaAutenticacion integrada a windows, passport y basadaen formularios.en formularios.
ASP solo puede manejarse la autenticacion integrada aASP solo puede manejarse la autenticacion integrada awindows.windows.
ASP.NET trae incorporado un conjunto de clases queASP.NET trae incorporado un conjunto de clases quepermiten manejar los procesos de autenticacin de unapermiten manejar los procesos de autenticacin de unamanera amigable y orientada a objetos.manera amigable y orientada a objetos.
Permite hacer impersonalizacion en aplicaciones paraPermite hacer impersonalizacion en aplicaciones paraque la aplicacin pueda correr basado en lasque la aplicacin pueda correr basado en lascredenciales de algun usuario especfico.credenciales de algun usuario especfico.
En ASP las aplicaciones corren bajo un usuario annimoEn ASP las aplicaciones corren bajo un usuario annimoespecificado en el IIS o bajo uno autenticado enespecificado en el IIS o bajo uno autenticado enwindows.windows.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
20/54
ASP.NET sigue trabajando en forma muy ligada con IIS y el
Sistema Operativo para implementar la seguridad. Salvo que
ahora, muchas de las configuraciones que antes se hacan
con la consola de IIS, ahora se pueden realizar directamente
sobre el archivo Web.config.
SeguridadSeguridad
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
21/54
La arquitectura de IIS esta basada en filtros ISAPI, esto significa que
el trabajo que IIS hace cada vez que se realiza un request de un
determinado archivo, es fijarse en el mapeo correspondiente (o sea
quien se "ocupa" de ese archivo) y le transfiere el pedido alcomponente adecuado. Por esta razn es que pueden convivir en la
misma mquina ASP y ASP.NET.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
22/54
SeguridadSeguridad
Uno podra asumir que aspnet_isapi.dll se va a estarUno podra asumir que aspnet_isapi.dll se va a estar
ejecutando dentro del espacio de proceso que la invoca,ejecutando dentro del espacio de proceso que la invoca,
esto esesto es InetInfo.exeInetInfo.exe, como Inetinfo.exe se ejecuta bajo, como Inetinfo.exe se ejecuta bajo
la cuenta SYSTEM, esto significara que los usuariosla cuenta SYSTEM, esto significara que los usuarios
van a estar ejecutando los request bajo esta cuenta.van a estar ejecutando los request bajo esta cuenta.
Pero en realidad, lo que sucede es que el request aPero en realidad, lo que sucede es que el request a
aspnet_isapi.dll se hace bajo esta cuenta, pero aquaspnet_isapi.dll se hace bajo esta cuenta, pero aqu
comienza a jugar la seguridad propia de ASP.NET, yacomienza a jugar la seguridad propia de ASP.NET, ya
que esta DLL reenva el request a aspnet_wp.exe, queque esta DLL reenva el request a aspnet_wp.exe, quees el Aplication Worker Process.es el Aplication Worker Process.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
23/54
SeguridadSeguridad
IIS Mapping
.aspx Aspnet_isapi.dll
Aspnet_wp.exe
User SYSTEM
UserASPNET
http://server/default.aspx
Machine.config
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
24/54
Seguridad.Seguridad.
Esta configuracin nos permite controlar ms especficamente los
permisos de acceso y ejecucin de toda la aplicacin para el caso de
sufrir ataques de hackers.
Para esto hay que considerar que esta cuenta tiene que tener los
siguientes permisos, como mnimo, en los directorios que se detallan
a continuacin:
Lectura en el directorio de la aplicacin.
Lectura en la raz de instalacin del Framework y su jerarqua para poder
acceder a los Assemblies del sistema.
Lectura-Escritura sobre el directorio ASP.NET Temporary Files que se
encuentra dentro del rbol donde se instal el Framework.
Lectura-Escritura sobre el directorio Temp.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
25/54
ImpersonalizacinImpersonalizacin
Otra particularidad es que en realidad, cada vez que unusuario hace un request, aspnet_wp.exe crea un hilo deejecucin (thread) en el cual impersona al usuarioconfigurado en el processModel del archivomachine.config. En condiciones de autenticacin porWindows, es posible impersonar determinado thread conotro usuario diferente al que se est impersonando en laaplicacin ASP.NET.
Uno de los grandes cambios con respecto a la versin
anterior de ASP, es la granularidad en la configuracinde las aplicaciones en ASP.NET. As que, por supuesto,se puede sobrescribir la configuracin de la entradaprocessModel de machine.config que se aplica a todo elframework, con una personalizacin del proceso en elarchivo web.config.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
26/54
ImpersonalizacinImpersonalizacin
Si la impersonalizacin False est habilitada entonces laSi la impersonalizacin False est habilitada entonces la
aplicacin se ejecuta bajo el usuario definido en elaplicacin se ejecuta bajo el usuario definido en el
processModel.processModel.
Si la impersonalizacin est en TRUE, pero no haySi la impersonalizacin est en TRUE, pero no hay
definido un usuario perteneciente a una cuenta dedefinido un usuario perteneciente a una cuenta de
Windows, ASP.NET impersona al usuario pasado por IIS.Windows, ASP.NET impersona al usuario pasado por IIS.
Si la impersonalizacin est en TRUE y hay definido unSi la impersonalizacin est en TRUE y hay definido un
usuario de Windows, en este caso corre bajo la identidadusuario de Windows, en este caso corre bajo la identidad
del usuario definido en la entrada indentity. Ejemplo:del usuario definido en la entrada indentity. Ejemplo:
Web.configWeb.config
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
27/54
System.Web.UI.
WebControls
ListControl
ListBox
CheckBoxList
Button
Table
WebControl
System.Web.UI.Control
System.Object
TextBox
......
Jerarquia de ClasesJerarquia de Clases
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
28/54
EscalabilidadEscalabilidad
ASP.NET puede distribuir los elementos de sessionASP.NET puede distribuir los elementos de session
en otra PC o en un servidor SQL server.en otra PC o en un servidor SQL server.
Si el servidor Web cae, no se pierden los valoresSi el servidor Web cae, no se pierden los valores
de session de los usuarios en linea.de session de los usuarios en linea.
Transacciones bancarias, mecanismos de flujoTransacciones bancarias, mecanismos de flujo
amplio.amplio.
Al restaurarse el servidor o reemplazarse por otro,Al restaurarse el servidor o reemplazarse por otro,se recuperan inmediatamente los elementos dese recuperan inmediatamente los elementos de
session almacenados en otra PC.session almacenados en otra PC.
Disminuye el overhead del servidor Web.Disminuye el overhead del servidor Web.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
29/54
Sessiones sin cookies.Sessiones sin cookies.
ASP.NET puede mantener variables deASP.NET puede mantener variables de
session para clientes Web que nosession para clientes Web que no
soporten cookies.soporten cookies.
Trasmite el sessionid en cada requestTrasmite el sessionid en cada request--
response de manera automtica.response de manera automtica.
Antes habia que pasar el sessionid en elAntes habia que pasar el sessionid en el
querystring en cada solicitud dequerystring en cada solicitud de
manualmente.manualmente.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
30/54
Html controls.Html controls.
Todos los Controles HTML son soportados desdeTodos los Controles HTML son soportados desdela librera de clases del .NET Framework y tienenla librera de clases del .NET Framework y tienen
un componente vinculado desde estaun componente vinculado desde esta
Por ejemplo para un est el objetoPor ejemplo para un est el objeto
HtmlTable, para un est el objeto HtmlAnchor.HtmlTable, para un est el objeto HtmlAnchor.
Todos estn ubicados en el espacio de nombres:Todos estn ubicados en el espacio de nombres:System.Web.UI.HtmlControls.System.Web.UI.HtmlControls.
Posibilidad de trabajar con nuevos controlesPosibilidad de trabajar con nuevos controlescreados con nuevos tags ejemplo:creados con nuevos tags ejemplo:System.Web.UI.HtmlControls.HtmlGenericControlSystem.Web.UI.HtmlControls.HtmlGenericControl
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
31/54
Html controls.Html controls.
Cuando un control del cliente es insertado en laCuando un control del cliente es insertado en lapgina, no se refleja ninguna cambio en elpgina, no se refleja ninguna cambio en elcodebehind.codebehind.
Cuando un control del servidor es insertado en laCuando un control del servidor es insertado en lapgina se crea un objeto dentro de la clase de lapgina se crea un objeto dentro de la clase de lapgina para poder acceder a las propiedades depgina para poder acceder a las propiedades deeste.este.
Los controles del servidor adicionan un nuevoLos controles del servidor adicionan un nuevoatributo: runat=Serveratributo: runat=Server
Los controles del servidor poseen estado,Los controles del servidor poseen estado,almacenan el estado de sus propiedades entrealmacenan el estado de sus propiedades entresucesivos postbacks.sucesivos postbacks.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
32/54
Controles HTML del servidorControles HTML del servidor
Caracteristica que hace que un HtmlControl pertenezca al servidor. Y por
tanto se pueda acceder desde el codebehind.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
33/54
EjercicioEjercicio
Crear una aplicacin web simple.Crear una aplicacin web simple.
Colocarle un boton HTML controlColocarle un boton HTML control
Ejecutar la aplicacin.Ejecutar la aplicacin.
Hacer el boton html un control del servidor.Hacer el boton html un control del servidor.
Procesar el evento on_load de la pagina en elProcesar el evento on_load de la pagina en el
server y cambiarle el texto al boton.server y cambiarle el texto al boton.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
34/54
Web ControlsWeb Controls
Proveen mayor funcionalidad. (Propiedades,Proveen mayor funcionalidad. (Propiedades,Eventos, Mtodos.)Eventos, Mtodos.)
Pueden proveer varias interfaces hacia distintosPueden proveer varias interfaces hacia distintos
browsers, detectan el browser que lo solicita y sebrowsers, detectan el browser que lo solicita y se
muestran de manera compatible con el.muestran de manera compatible con el.
Se encuentran agrupados en el espacio deSe encuentran agrupados en el espacio denombres:nombres: System.Web.UI.WebControlsSystem.Web.UI.WebControls
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
35/54
Web ControlsWeb Controls
Debe cuidarse el ViewState para simplificar laDebe cuidarse el ViewState para simplificar latransferencia entre pginas.transferencia entre pginas.
Pueden mostrarse como un conjunto de controlesPueden mostrarse como un conjunto de controlesHTML o de manera personalizada.HTML o de manera personalizada.
Siempre y cuando podamos realizar una operacinSiempre y cuando podamos realizar una operacincon un HtmlControl la haremos sin utilizar uncon un HtmlControl la haremos sin utilizar un
WebControl. (para que matar un mosco con unWebControl. (para que matar un mosco con unmisil?)misil?)
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
36/54
Web ControlsWeb Controls
Sintaxis de ControlesSintaxis de Controles
Controles del Lado del servidorControles del Lado del servidor
Propiedades del control del servidorPropiedades del control del servidor
Sub propiedad (del lado del cliente)Sub propiedad (del lado del cliente)
Vinculacin a eventos del controlVinculacin a eventos del control
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
37/54
EjemploEjemplo
WebForm1
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
38/54
Public Class WebForm1
Inherits System.Web.UI.Page
#Region " Web Form Designer Generated Code "
'This call is required by the Web Form Designer.
Private Sub InitializeComponent()
End Sub
Protected WithEvents Button2 As System.Web.UI.WebControls.Button
Protected WithEvents TextBox1 As System.Web.UI.WebControls.TextBox
'NOTE: The following placeholder declaration is required by the Web Form
Designer.
'Do not delete or move it.Private designerPlaceholderDeclaration As System.Object
Private Sub Page_Init(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub
#End Region
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
End Sub
End Class
WebForm1.aspx.cs
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
39/54
EjercicioEjercicio
Crear una pgina con tres controles unCrear una pgina con tres controles un
TextBox un Label y un Button.TextBox un Label y un Button.
Al hacer click en el Boton se imprimir enAl hacer click en el Boton se imprimir enel label el nombre que sea proporcionadoel label el nombre que sea proporcionado
por el usuario en el TextBox.por el usuario en el TextBox.
Observar como se mantiene el estado delObservar como se mantiene el estado del
TextBox.TextBox.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
40/54
ViewStateViewState
En ASP.NET se introduce un concepto y unaEn ASP.NET se introduce un concepto y unavariable nueva. El ViewState.variable nueva. El ViewState.
Proporciona el mantener el estado de los ControlesProporciona el mantener el estado de los Controlesdel servidor cuando se hace un postback.del servidor cuando se hace un postback.
El viewState se crea automaticamente en la pginaEl viewState se crea automaticamente en la pginacomo un HIDDEN control y almacena de maneracomo un HIDDEN control y almacena de maneraencriptada la informacion de los Server controlsencriptada la informacion de los Server controlsque deseen mantener su estado.que deseen mantener su estado.
Es posible escribir valores adicionales en elEs posible escribir valores adicionales en elViewState para conservarlos durante lasViewState para conservarlos durante lastransiciones entre una misma pgina mediante untransiciones entre una misma pgina mediante unpostbackpostback
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
41/54
PostBackPostBack
Tambien es un nuevo conceptoTambien es un nuevo conceptointroducido por ASP.NET.introducido por ASP.NET.
Un postback es un POST especial sobreUn postback es un POST especial sobre
la misma pgina.la misma pgina.Se utiliza una funcin en el cliente scriptSe utiliza una funcin en el cliente scriptllamada _doPostBack para enviar losllamada _doPostBack para enviar los
datos del formulario hacia la mismadatos del formulario hacia la mismapgina.pgina.
Es transparente para el programador.Es transparente para el programador.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
42/54
EjercicioEjercicio
Observar en el ejercicio anterior en el sourceObservar en el ejercicio anterior en el sourcegenerado por el Server como se generan elgenerado por el Server como se generan elVIEWSTATE y el _doPostBackVIEWSTATE y el _doPostBack
Poner la propiedad del TextBoxPoner la propiedad del TextBox
EnableViewState en false y observar como noEnableViewState en false y observar como nose mantiene el estado del mismo despues delse mantiene el estado del mismo despues delpostback.postback.
En el evento onload grabar un valor en elEn el evento onload grabar un valor en elViewState y luego mostrarlo en cada postback deViewState y luego mostrarlo en cada postback de
la pgina.la pgina.Crear una propiedad especial para trabajar masCrear una propiedad especial para trabajar masfcil con el ViewState.fcil con el ViewState.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
43/54
ValidatorsValidators
Son Web Controls que proveen funcionalidad paraSon Web Controls que proveen funcionalidad para
automaticamente hacer validaciones en losautomaticamente hacer validaciones en los
controles del formulario.controles del formulario.
Pueden hacer chequeos en el cliente o en elPueden hacer chequeos en el cliente o en elservidor. Para que se haga chequeo en el clienteservidor. Para que se haga chequeo en el cliente
el Browser deber soportar DHTML.el Browser deber soportar DHTML.
Se pueden hacer chequeos personalizados tantoSe pueden hacer chequeos personalizados tanto
en el cliente como en el servidor.en el cliente como en el servidor.
Solo chequean controles que corran del lado delSolo chequean controles que corran del lado del
servidor. Html server controls o Web Controlsservidor. Html server controls o Web Controls
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
44/54
Tipos de ValidatorsTipos de ValidatorsNombre del control Descripcin
RequiredFieldValidator Se asegura de que el usuario no omita ninguna entrada.
CompareValidator Compara una entrada de usuario con un valor constante o un valor depropiedad de otro control mediante un operador de comparacin(menor que, igual a, mayor qu, entre otros).
RangeValidator Comprueba que una entrada de usuario se encuentra entre los lmitessuperior e inferior especificados. Se pueden comprobar los intervalosentre pares de nmeros, caracteres alfabticos o fechas. Los lmitesse pueden expresar como constantes.
RegularExpressionValidator Comprueba que la entrada coincide con un patrn definido por unaexpresin regular. Este tipo de validacin permite comprobarsecuencias de caracteres previsibles, como las de los nmeros de laseguridad social, las direcciones de correo electrnico, los nmerosde telfono y los cdigos postales, entre otras.
CustomValidator Comprueba la entrada del usuario mediante lgica de validacin quecodifica el usuario. Este tipo de validacin permite comprobar losvalores derivados en tiempo de ejecucin.
ValidationSummary Muestra los errores de validacin en forma de resumen para todos losvalidadores de la pgina.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
45/54
ValidatorsValidators
WebForm1
*
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
46/54
Ejercicio(RequiredValidator)Ejercicio(RequiredValidator)
Crear una aplicacin con un TextBox paraCrear una aplicacin con un TextBox para
nombre de usuario y uno para introducir elnombre de usuario y uno para introducir el
password.password.
Aadir un botton Sign In.Aadir un botton Sign In.
Aadir un RequiredValidator para que elAadir un RequiredValidator para que el
nombre de usuario y el password seannombre de usuario y el password sean
requeridos antes del procesamiento.requeridos antes del procesamiento.
Ejecutar la aplicacin.Ejecutar la aplicacin.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
47/54
Ejercicio.(CompareValidator)Ejercicio.(CompareValidator)
Utilizando la aplicacin anterior adicione un boton Register para que elUtilizando la aplicacin anterior adicione un boton Register para que elusuario pueda hacer una inscripcin.usuario pueda hacer una inscripcin.
Ejecutar el ejemplo y observar que al presionar Sign In el ValidatorEjecutar el ejemplo y observar que al presionar Sign In el Validatoracta y no deja entrar en la otra pgina.acta y no deja entrar en la otra pgina.
Solucin 1: Que no sea un WebControl el boton. Podria ser un link deSolucin 1: Que no sea un Web Control el boton. Podria ser un link de
cliente. Registercliente. RegisterSolucin 2: Cambiar la propiedad de CausesValidation del ButtonSolucin 2: Cambiar la propiedad de CausesValidation del ButtonRegister a false.Register a false.
Crear una nueva pgina register.aspx donde existan tres textbox, unoCrear una nueva pgina register.aspx donde existan tres textbox, unopara el nuevo nombre de usuario y otros dos para introducir el nuevopara el nuevo nombre de usuario y otros dos para introducir el nuevopassword dos veces.password dos veces.
Aadir un boton y un CompareValidator para verificar que los dosAadir un boton y un CompareValidator para verificar que los dospasswords sean introducidos correctamente.passwords sean introducidos correctamente.
Ejecutar la aplicacin.Ejecutar la aplicacin.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
48/54
Ejercicio (RegularExpresionValidator,Ejercicio (RegularExpresionValidator,
RangeValidator)RangeValidator)
Basado en la aplicacin anterior, editar la pginaBasado en la aplicacin anterior, editar la pginaregister.aspx y aadir un campo de eregister.aspx y aadir un campo de e--mail y de edad.mail y de edad.
Aadir un RegularExpresionValidator para verificar queAadir un RegularExpresionValidator para verificar queel eel e--mail es introducido correctamente, aadir unmail es introducido correctamente, aadir un
RequiredValidator para que el usuario no pueda dejar elRequiredValidator para que el usuario no pueda dejar elee--mail en blanco.mail en blanco.
Aadir un RangeValidator para verificar que la edad delAadir un RangeValidator para verificar que la edad delusuario no pueda ser mayor que 100 ni menor a 0.usuario no pueda ser mayor que 100 ni menor a 0.
Aadir un RangeValidator para que el nombre deAadir un RangeValidator para que el nombre deusuario no pueda tener mas de 8 caracteres.usuario no pueda tener mas de 8 caracteres.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
49/54
ValidationSummaryValidationSummary
Es un validator que provee funcionalidadEs un validator que provee funcionalidadpara mostrar todos los mensajes de errorpara mostrar todos los mensajes de errorde los validators que se encuentran en lade los validators que se encuentran en la
pgina.pgina.Mostrar una lista de las propiedadesMostrar una lista de las propiedadesErrorMessage de los validators queErrorMessage de los validators queesten presentes en la pgina en elesten presentes en la pgina en elmomento en que se active la validacin ymomento en que se active la validacin yresulte errnea.resulte errnea.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
50/54
Ejercicio (ValidationSummary)Ejercicio (ValidationSummary)
Aadir un ValidationSummary al ejercicioAadir un ValidationSummary al ejercicio
anterior.anterior.
Debern editarse las propiedadesDebern editarse las propiedadesErrorMessage y Text de cada validatorErrorMessage y Text de cada validator
en la pgina.en la pgina.
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
51/54
CustomValidatorCustomValidator
El CustomValidator ofrece una funcionalidadEl CustomValidator ofrece una funcionalidad
extendida para que el usuario pueda hacerextendida para que el usuario pueda hacer
su propia validacin personalizada en casosu propia validacin personalizada en caso
de que los validators Existentes no puedande que los validators Existentes no puedan
hacer.hacer.
Validacin en el Cliente mediante unaValidacin en el Cliente mediante una
funcin VBScript o Jscript.funcin VBScript o Jscript.Validacin en el Servidor mediante unValidacin en el Servidor mediante un
evento. (Requiere que se haga un postback)evento. (Requiere que se haga un postback)
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
52/54
CustomValidator en el ClienteCustomValidator en el ClienteSe colocar en la propiedad Se colocar en la propiedad ClientValidationFunctionClientValidationFunction el nombre de la funcion de el nombre de la funcion de
validacin que se colocar en el cliente ya sea en un bloque VBScript o JScript.validacin que se colocar en el cliente ya sea en un bloque VBScript o JScript.
La funcin de validacin tendr una forma especfica:La funcin de validacin tendr una forma especfica:
function myvalidator(source, arguments)function myvalidator(source, arguments)
source:source: es el objetoes el objeto CustomValidatorCustomValidatordel clientedel cliente
Arguments:Arguments: es un objeto con dos propiedades,es un objeto con dos propiedades, ValueValue ee IsValidIsValid. La propiedad. La propiedad ValueValue
es el valor que se validar y la propiedades el valor que se validar y la propiedad IsValidIsValid es el booleano utilizado paraes el booleano utilizado para
establecer el resultado devuelto de la validacin.establecer el resultado devuelto de la validacin.
Ejemplo de una funcion de validacin en el cliente para determinar que el valor queEjemplo de una funcion de validacin en el cliente para determinar que el valor que
tiene el control a validar es un numero partiene el control a validar es un numero par
function ClientValidate(source, arguments)
{ // even number?
if (arguments.Value%2 == 0)
arguments.IsValid = true;
else
arguments.IsValid = false;
}
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
53/54
CustomValidator en el ServidorCustomValidator en el ServidorPara obtener la validacin personalizada del servidor,Para obtener la validacin personalizada del servidor,
coloque la validacin personalizada en el delegadocoloque la validacin personalizada en el delegadoOnServerValidateOnServerValidate del validador.del validador.
Sub ServerValidate (sender As Object, value As ServerValidateEventArgs)
Try
Dim num As Int32 = Int32.Parse(value.Value)If num Mod 2 = 0 Then
value.IsValid = True
Exit Sub
End If
Catch exc As Exception
End Try
value.IsValid = False
End Sub
No es un nmero par
5/13/2018 Net3 Aspnet Aspvsaspnet Server Controls Main Concepts
54/54
EjercicioEjercicio
Utilizando el ejercicio anterior, AdicionarUtilizando el ejercicio anterior, Adicionar
un campo Texto llamado Clasificacin enun campo Texto llamado Clasificacin en
el formulario de register.aspxel formulario de register.aspx
Crear una validacin en el cliente y una enCrear una validacin en el cliente y una en
el servidor utilizando el CustomValidatorel servidor utilizando el CustomValidator
para verificar que el control contiene unapara verificar que el control contiene una
cadena que comienza con: IDcadena que comienza con: ID
Recommended