Net3 Aspnet Aspvsaspnet Server Controls Main Concepts

download Net3 Aspnet Aspvsaspnet Server Controls Main Concepts

of 54

Transcript of Net3 Aspnet Aspvsaspnet Server Controls Main Concepts

  • 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