SlideShare ist ein Scribd-Unternehmen logo
1 von 18
Downloaden Sie, um offline zu lesen
Marco Besteiro y Miguel Rodríguez                                 Controles de Validación




ASP.NET. Controles ASP.NET de validación.

Controles de validación.
Los controles de validación permiten validar los datos introducidos por el usuario.
La validación se lleva a cabo cuando se pulsa un control de tipo botón. Los controles
que pueden lanzar una validación son:
   -    Button
   -    HtmlButton
   -    HtmlInputButton
   -    HtmlInputImage
   -    ImageButton
   -    LinkButton

También puede forzarse la validación utilizando el método Page.Validate.
Tras lanzar la validación, si es pasada, se pondrá a true la propiedad IsValid de la
clase Page y en caso contrario, se pondrá a false.

Los controles de validación realizan la validación del control de cliente en el servidor.
No obstante, si el navegador del cliente lo soporta (soporte DHTML, Internet Explorer
4.0 y superior), estos controles generan código JScript de cliente para que la validación
se haga antes de que el formulario sea enviado al servidor.

Todos      los      controles     devalidación derivan  de     la     clase
System.Web.UI.WebControls.BaseValidator y por tanto comparten una serie de
propiedades entre las que destacan:

   -    ErrorMessage: esta propiedad permite indicar el texto que se mostrará al
        usuario en el control de validación cuando introduzca un valor incorrecto en el
        control que se esté validando. Es importante tener en cuenta que el mensaje de
        error se muestra en el control de validación y que además se añade junto con el
        resto de mensajes de validación al control ValidationSummary, si es que lo hay
        en el WebForm. Si se desea que el mensaje de error sólo aparezca en el control
        de validación que lo lanza, ha de indicarse el mensaje en la propiedad Text del
        control de validación, en lugar de en la propiedad ErrorMessage.
   -    ControlToValidate: esta propiedad indica el ID del control que se está
        validando.
   -    Display: Si el valor de esta propiedad es None, el texto contenido en la
        propiedad ErrorMessage se muestra en el sumario (ValidationSummary), y si
        no, se muestra sobre el control que ha causado el error.


RequiredFieldValidator.

Este control verifica que el campo al que está asociado se ha rellenado. La propiedad
ControlToValidate permite indicar a que control se asocia. Si se incluye un control
RequiredFieldValidator a una página Web ASP.NET sin asociarle un control al que
validar, al ejecutar la aplicación se mostrará una página de error.


                                         1/18                                          1
Marco Besteiro y Miguel Rodríguez                               Controles de Validación




Figura 22.1. Página de error indicando que el control RequiredFieldValidator no
está asociado a control alguno que validar.

Por    ejemplo,    supónga    que   se     dispone   de   una     aplicación   llamada
EjemploRequiredFieldValidator en la que la primera página es una página de
control de usuario y clave.




                                         2/18                                        2
Marco Besteiro y Miguel Rodríguez                                Controles de Validación




Figura   22.2.    Página    de   ejemplo      sobre   la   que     probar   el   control
RequiredFieldValidator.

Se desea mostrar el mensaje Debe introducir un nombre de usuario, en caso de
que al pulsar el botón Enviar la caja de texto correspondiente a la etiqueta Usuario no
haya sido rellenada.

El primer paso que se ha de dar es poner la propiedad CausesValidation del botón
Enviar a true. De este modo, cada vez que se pulse el botón Enviar se provocará una
validación.

El siguiente paso es añadir al formulario Web un control RequiredFieldValidation y
asociar su propiedad ControlToValidate con la caja de texto TextBox1, que es en la
que se debe introducir el nombre de usuario. Además, se debe indicar en la propiedad
ErrorMessage -o bien en Text, si se desea que el mensaje de error sólo aparezca en el
control de validación- el mensaje que se desea mostrar si no se rellena la caja de texto
TextBox1.




                                       3/18                                           3
Marco Besteiro y Miguel Rodríguez                           Controles de Validación




Figura 22.3. Vista diseño de la página con el control RequiredFieldValidator.

Si se observa el código de WebForm1.aspx.cs se verá que se ha añadido el control
RequiredFieldValidator:

using   System;
using   System.Collections;
using   System.ComponentModel;
using   System.Data;
using   System.Drawing;
using   System.Web;
using   System.Web.SessionState;
using   System.Web.UI;
using   System.Web.UI.WebControls;
using   System.Web.UI.HtmlControls;

namespace EjemploReqFieldValidator
{
      /// <summary>
      /// Summary description for WebForm1.
      /// </summary>
      public class WebForm1 : System.Web.UI.Page
      {
            protected System.Web.UI.WebControls.TextBox TextBox1;
            protected System.Web.UI.WebControls.TextBox TextBox2;
            protected System.Web.UI.WebControls.Label Label1;
            protected System.Web.UI.WebControls.Label Label3;
            protected System.Web.UI.WebControls.RequiredFieldValidator
            RequiredFieldValidator1;
            protected System.Web.UI.WebControls.Button Button1;
      …


                                      4/18                                       4
Marco Besteiro y Miguel Rodríguez                                Controles de Validación

       ...
       ...
En el código HTML de la página WebForm1.aspx se puede ver que también se ha
añadido el control de validación y que se han indicado los valores de las propiedades
ControlToValidate, ErrorMessage, etc...

<%@       Page        language="c#"       Codebehind="WebForm1.aspx.cs"
AutoEventWireup="false"    Inherits="EjemploReqFieldValidator.WebForm1"
%>
…
…

<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 438px; POSITION:
absolute; TOP: 92px" runat="server" Width="144px" Height="22px">
</asp:TextBox>
<asp:Label id="Label1" style="Z-INDEX: 103; LEFT: 302px; POSITION:
absolute;      TOP:       95px"      runat="server"       Width="121px"
Height="29px">Usuario:
</asp:Label>
…
…
<asp:RequiredFieldValidator
id="RequiredFieldValidator1"
style="Z-INDEX: 106; LEFT: 328px; POSITION: absolute; TOP: 255px"
runat="server" Width="272px" Height="38px"
ErrorMessage="Debe     Introducir     el     nombre     de     Usuario"
ControlToValidate="TextBox1">
</asp:RequiredFieldValidator>

<asp:Button id="Button1"
style="Z-INDEX: 107; LEFT: 368px; POSITION: absolute;                      TOP:    208px"
runat="server" Width="169px" Height="28px" Text="Enviar">
</asp:Button>

</form>
</body>
</HTML>

Al ejecutar la aplicación no aparecerá el control RequiredFieldValidator1. Éste sólo
se mostrará si se realiza una validación en el servidor (tras pulsar el botón Button1) y si
la caja de texto se ha dejado en blanco.




                                         5/18                                            5
Marco Besteiro y Miguel Rodríguez                               Controles de Validación




Figura 22.4. Resultado de pulsar el botón Enviar sin rellenar el campo usuario. El
control RequiredFieldValidator muestra el mensaje de error.

Esta es la validación básica. Es posible controlar en mayor grado la validación
aprovechando la propiedad IsValid de la clase Page. Por ejemplo, podría hacerse que
la etiqueta Usuario: cambie su color a rojo mientras no se introduzca un nombre de
usuario. Un modo sencillo de implementarlo es utilizar el método Button1_Click:

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

       if (Page.IsValid == true)
       {
             Label1.ForeColor = Color.Black;
       }
       else
       {
             Label1.ForeColor = Color.Red;
       }
}

No obstante, si se ejecuta la aplicación se puede ver que no hace lo esperado. El motivo
es que la propiedad EnableClientScript del control RequiredFieldValidator1 está
a true, lo que quiere decir que si el navegador lo permite, la validación se hará en el
cliente (con código JScript) y todo código puesto en el servidor no llegará a ejecutarse.
Si se cambia esta propiedad a false, la aplicación funcionará según lo esperado.




                                        6/18                                           6
Marco Besteiro y Miguel Rodríguez                                Controles de Validación

En caso de que no se introduzca valor alguno en la caja de texto del Usuario, la etiqueta
Usuario se pondrá en rojo.




Figura 22.5. Personalización de la validación realizada en el método Button1_Click.

La aplicación mostrada ha sido realizada utilizando el entorno de diseño de Visual
Studio .NET. Por tal motivo, el código de respuesta a la pulsación del botón Enviar
(Button1) se ha generado por defecto en el fichero WebForm1.aspx.cs, en concreto en
el método Button1_Click. No obstante, este código podía haberse introducido
directamente en el fichero WebForm1.aspx, como un script.

Es importante indicar que este script puede ser de servidor (runat=server) o de cliente
(por defecto, si no se indica). En el caso de que sea de cliente sólo puede codificarse en
VBScript o en JScript.

En el siguiente ejemplo se muestra como incluir el script en el fichero WebForm1.aspx.

<%@       Page        language="c#"       Codebehind="WebForm1.aspx.cs"
AutoEventWireup="false"    Inherits="EjemploReqFieldValidator.WebForm1"
%>

…
…

<html>
<head>
    <script language="C#" runat=server>


                                        7/18                                            7
Marco Besteiro y Miguel Rodríguez                               Controles de Validación


        void BotonValidar_Click(Object sender, EventArgs e) {

            if (Page.IsValid == true) {
              LabelMensaje.Text   =   "El   campo   requerido   ha   sido
              rellenado";
            }
            else {
               LabelMensaje.Text = " El campo requerido está vacío";
            }
        }

     </script>

 </head>
 <body>

…
…

<asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 438px; POSITION:
absolute; TOP: 92px" runat="server" Width="144px" Height="22px">
</asp:TextBox>
<asp:Label id="Label1" style="Z-INDEX: 103; LEFT: 302px; POSITION:
absolute;      TOP:       95px"      runat="server"       Width="121px"
Height="29px">Usuario:
</asp:Label>
…
…
<asp:RequiredFieldValidator
id="RequiredFieldValidator1"
style="Z-INDEX: 106; LEFT: 328px; POSITION: absolute; TOP: 255px"
runat="server" Width="272px" Height="38px"
ErrorMessage="Debe     Introducir     el     nombre     de     Usuario"
ControlToValidate="TextBox1">
</asp:RequiredFieldValidator>

…
…
<asp:Label id="LabelMensaje"…
…
…
 <asp:Button id=Button1
 text="Validar"
 OnClick="BotonValidar_Click"
 runat=server />

</body>
</html>




CompareValidator.

Este control permite comparar el valor introducido por el usuario en el control a validar
(propiedad ControlToValidate) con el valor introducido en otro control (propiedad
ControlToCompare) ó con una constante (propiedad ValueToCompare).
No se deben utilizar a la vez (darles valor) las propiedades ControlToCompare y
ValueToCompare.



                                        8/18                                           8
Marco Besteiro y Miguel Rodríguez                              Controles de Validación



Porr ejemplo:

    <asp:CompareValidator id="Compare1"
             ControlToValidate="TextBox1"
             ControlToCompare="TextBox2"
             Type="String"
             runat="server"/>




RangeValidator.

Este control permite verificar si el valor introducido en el control al que se le asocia
(propiedad ControlToValidate) se encuentra entre un valor mínimo (propiedad
MinimumValue) y un valor máximo (propiedad MaximumValue).

Suponga que se quiere mejorar la aplicación EjemploReqFieldValidator añadiendo
un control RangeValidator que controle que la clave introducida en la segunda caja de
texto sea un valor entre 0 y 99999 (mostrando un mensaje en el propio control).
En principio, con añadirlo directamente en la vista de diseño y actualizar las
propiedades ControlToValidate, MinimumValue y MaximunValue es suficiente.

El problema viene si se desea especializar el tratamiento que se da a la validación del
valor de la clave con el control RangeValidator (por ejemplo, hacer que la etiqueta
clave se ponga de color rojo si la clave no se encuentra en el rango permitido).
Siguiendo los pasos que se dieron en la aplicación EjemploReqFieldValidator, el
código de validación puede introducirse en el método Button1_Click(). No obstante,
el código contenido en Button1_Click() pone a rojo la etiqueta usuario si la página no
es válida (propiedad Page.IsValid) y ahora es necesario diferenciar si se ha de poner a
rojo una de las etiquetas, ninguna o ambas. Esto obliga a tener que distinguir cuándo
falla la validación en RequiredFieldValidator1 y cuándo en RangeValidator1.

La solución consiste en invocar por separado al método Validate de cada uno de los
controles y preguntar por la propiedad IsValid de cada uno de los controles.

...
...

private void InitializeComponent()
{
      this.Button1.Click += new EventHandler(this.Button1_Click);
      this.CustomValidator1.ServerValidate +=
            new System.Web.UI.WebControls.ServerValidateEventHandler(
                              this.CustomValidator1_ServerValidate);
      this.Load += new System.EventHandler(this.Page_Load);

}

private void Page_Init(object sender, EventArgs e)
{
      //
      // CODEGEN: This call is required by the ASP.NET Web
      //Form Designer.



                                       9/18                                           9
Marco Besteiro y Miguel Rodríguez                               Controles de Validación

       //
       InitializeComponent();
       RangeValidator1.Type = ValidationDataType.Integer;
       RangeValidator1.MinimumValue = "0";
       RangeValidator1.MaximumValue = "99999";

}

       ...
       ...

private void Button1_Click(object sender, System.EventArgs e)
{
      RequiredFieldValidator1.Validate();

       if (RequiredFieldValidator1.IsValid == true)
       {
             Label1.ForeColor = Color.Black;
       }
       else
       {
             Label1.ForeColor = Color.Red;
       }


       RangeValidator1.Validate();


       if (RangeValidator1.IsValid == true)
       {
             Label2.ForeColor = Color.Black;
       }
       else
       {
             Label2.ForeColor = Color.Red;
       }

}

Al ejecutar la aplicación, si la clave no es correcta, sólo se pondrá en rojo la etiqueta
Clave.




                                       10/18                                          10
Marco Besteiro y Miguel Rodríguez                                Controles de Validación




Figura    22.6.Personalización  de   la  validación               para    los    controles
RequiredFieldValidator y RangeValidator.

RegularExpresionValidator.

Este control verifica si el valor del control de entrada al que está asociado sigue una
determinada expresión regular. Este tipo de validación es interesante para números de
teléfono, direcciones de e-mail, fechas...

La sintaxis de la expresión regular difiere en función de si la validación se realiza en el
cliente o en el servidor. Si la validación es en el servidor se utiliza
System.Text.RegularExpressions.RegEx para definir la expresión regular. Si la
validación es en el cliente se utiliza JScript para la expresión regular.

Visual Studio ofrece un asistente de generación de expresiones regulares al que se
puede acceder desde la ventana de propiedades al configurar el control de tipo
RegularExpresionValidator         (en     concreto,    desde      la     propiedad
ValidationExpresión).




                                        11/18                                           11
Marco Besteiro y Miguel Rodríguez                                  Controles de Validación




Figura 22.7. Utilización del cuadro de diálogo editor de expresiones regulares.

En   el    siguiente   ejemplo   se   utiliza    una   expresión   regular   y   el   control
RegularExpresionValidator para comprobar si el valor introducido en la caja de
texto Clave es un número de 5 dígitos.

La expresión regular es: ^d{5}$

Tras configurar las propiedades del control RegularExpresionValidator1 desde la
ventana de propiedades se ha de añadir el código de validación en el método
Button1_Click().

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

          RequiredFieldValidator1.Validate();

          if (RequiredFieldValidator1.IsValid == true)
          {
                Label1.ForeColor = Color.Black;
          }
          else
          {
                Label1.ForeColor = Color.Red;
          }

          RangeValidator1.Validate();

          if (RangeValidator1.IsValid == true)



                                         12/18                                            12
Marco Besteiro y Miguel Rodríguez                                 Controles de Validación

         {
                 Label2.ForeColor = Color.Black;
         }
         else
         {
                 Label2.ForeColor = Color.Red;
         }

         RegularExpressionValidator1.Validate();

         if (RegularExpressionValidator1.IsValid == true)
         {
               Label2.ForeColor = Color.Black;
         }
         else
         {
               Label2.ForeColor = Color.Red;
         }
}



Al ejecutar la aplicación, si se introduce una clave que no tenga 5 dígitos, el resultado es
el de la figura 22.8:




Figura       22.8.   Personalización     del     tratamiento     asociado     al    control
RegularExpresionValidator.

CustomValidator.




                                         13/18                                           13
Marco Besteiro y Miguel Rodríguez                               Controles de Validación

Permite definir la validación que se va a aplicar a un control. Para crear una función de
validación se ha de programar un manejador para el evento ServerValidate. Este
evento recibe un objeto ServerValidateEventArgs como parámetro. La propiedad
Value de este objeto contiene el string con el contenido del control a validar. El
resultado de la validación se almacena en la propiedad IsValid del objeto
ServerValidateEventArgs (si es false o es puesto a false, se muestra el control
CustomValidator).

Si se desea crear una función de validación del lado del cliente se ha de introducir un
script con tal función en la página .aspx e indicarla en la propiedad
ClientValidationFunction del control CustomValidator. Debido a que esta función
se va a ejecutar en el cliente, debe ser escrita en VBScript o en JScript.

Supónga que, en el ejemplo EjReqFieldValidator, se quiere controlar que si la
suscripción de un usuario ha expirado, se le indique. En este caso se va a controlar
únicamente que si el usuario es Pepe hay que avisarle de que debe revisar su
suscripción.

El primer paso es añadir un control CustomValidator (CustomValidator1) y dar los
siguientes valores a sus propiedades:
   -   ControlToValidate = TextBox1
   -   EnableClientScript = false
   -   ErrorMessage = “debe usted actualizar su subscripción”

Tras este paso se ha de codificar el método CustomValidator1_ServerValidate, que
responde al evento ServerValidate.

private     void     CustomValidator1_ServerValidate(object     source,
System.Web.UI.WebControls.ServerValidateEventArgs args)
{
      if (args.Value.Equals("Pepe"))
      {
            CustomValidator1.ErrorMessage = args.Value + ", " +
                  CustomValidator1.ErrorMessage;
            args.IsValid = false;
            TextBox1.ForeColor = Color.Red;
      }
      else
      {
            TextBox1.ForeColor = Color.Black;
      }
}

Es importante tener en cuenta que si se desea que el control CustomValidator1
muestre su texto, éste tiene que detectar error en la validación. El control
CustomValidator1 considera que hay error si se pone la propiedad IsValid de args a
false.

El resultado de ejecutar la aplicación e introducir como nombre de usuario Pepe será ver
el mensaje del control CustomValidator1 y ver también el texto Pepe en rojo.




                                       14/18                                          14
Marco Besteiro y Miguel Rodríguez                            Controles de Validación




Figura 22.9. Utilización del control CustomValidator.

En este caso, la validación ha sido de servidor. Si se desea que sea en el cliente es
necesario generar un script de cliente en la página .aspx y poner la propiedad
EnableClientScript de CustomValidator1 a true. Además se ha de indicar en la
propiedad ClientValidationFunction de CustomValidator1 el nombre de la
función del script de cliente.

La siguiente función se ha de introducir al final de WebForm1.aspx y sólo muestra el
mensaje de error si el usuario es Pepe.

...
...

<script language=”vbscript”>

Sub CustomValidator1_ClientValidate(val, args)
      If (args.value = "Pepe") Then
            args.IsValid = false
      End If
End Sub

</script>

</body>

</html>




                                     15/18                                        15
Marco Besteiro y Miguel Rodríguez                               Controles de Validación

Como se puede observar, el lenguaje es VBScript y su sintaxis difiere de la de C#.
Cuando se crea un script de cliente lo lógico es desear que pueda ejecutarse en cuantos
más navegadores sea posible. La mayoría de los navegadores soportan JavaScript y
VBScript (JScript también tiene bastante soporte debido a su parecido con JavaScript).
Otros lenguajes, como puede ser C#, no son ampliamente soportados por los
navegadores, de modo que se recomienda utilizar JavaScript o VBScript para los scripts
de cliente.

Por defecto, el documento .aspx, cuando se crea con Visual Studio .NET, toma
JavaScript como lenguaje por defecto para los scripts de cliente. Esto se puede ver en la
ventana de propiedades de la clase DOCUMENT (esta clase representa el documento o
página Web generada a partir de la página .aspx). La propiedad en la que se indica es
defaultClientScript.




Figura 22.10. Vista HTML de la página. El lenguaje de script utilizado es JScript.

El lenguaje indicado en la propiedad defaultClientScript es JScript, en cambio, en
la página .aspx se indica JavaScript. Realmente son muy parecidos (JavaScript es un
subconjunto de Java, definido por Netscape y JScript es un subconjunto de Java
definido por Microsoft, con alguna variante.
En este caso, el script de cliente se desea que sea VBScript, de modo que debe
cambiarse el valor de la propiedad defaultClientScript a VBScript.


ValidationSummary.



                                       16/18                                          16
Marco Besteiro y Miguel Rodríguez                                Controles de Validación

Un control de esta clase permite hacer un sumario de todos los mensajes de error de
todos los controles de validación de una página Web. El sumario de errores se muestra
por defecto como una lista de puntos (el formato de la lista se puede cambiar mediante
la propiedad DisplayMode).

La lista de puntos muestra todos los errores que se han detectado al validar la página por
los distintos controles de validación pero se refresca en cada nueva validación, es decir,
no acumula los errores de anteriores validaciones.

Dos propiedades interesantes de la clase ValidationSummary son ShowSummary y
ShowMessageBox que permiten mostrar, respectivamente, el listado de mensajes en la
página Web o en un cuadro de mensaje.

Si se añade un control ValidationSummary a la página WebForm1.aspx de la
aplicación EjemploReqFieldValidator (está en la parte izquierda), el resultado es el
de la figura 22.11:




Figura 22.11. Utilización del control ValidationSummary.


Controles ASP.NET definidos por el desarrollador.
Los controles definidos por el desarrollador pueden crearse en base a agrupaciones de
otros controles e incluso a partir de una página ASP.NET.

En muchos casos es posible crear un control ASP.NET a partir de una página ASP.NET
simplemente cambiado la extensión .aspx por .ascx y la extensión .aspx.cs por


                                        17/18                                          17
Marco Besteiro y Miguel Rodríguez                           Controles de Validación

.ascx.cs (o bien copiando el contenido del .aspx y del .aspx.cs sobre un .ascx y un
.ascx.cs respectivamente). Es importante saber que en este tipo de controles no se
soportan los controles de validación.

Si se desea construir un control ASP.NET puro, sin página web asociada, se puede
utilizar el asistente, eligiendo la opción Librería de controles Web.




Figura 22.12. Cuadro de diálogo de creación de un nuevo proyecto. Opción de creación
de un control a medida.

El      resultado      será     un
                                 control   derivado      de     la      clase
System.Web.UI.WebControls.WebControl o de una clase derivada de ésta y estará
contenido en un fichero .ascx.




                                        18/18                                    18

Weitere ähnliche Inhalte

Was ist angesagt?

Dce2 Introduccion Win Forms
Dce2 Introduccion Win FormsDce2 Introduccion Win Forms
Dce2 Introduccion Win FormsEsteban Soraire
 
Dce2 introduccion win_forms
Dce2 introduccion win_formsDce2 introduccion win_forms
Dce2 introduccion win_formsguest85b8e5a
 
Form y container
Form y containerForm y container
Form y containerzeta2015
 
Formularios y contenedores
Formularios y contenedoresFormularios y contenedores
Formularios y contenedoreszeta2015
 
Crear una aplicación de formularios windows forms
Crear una aplicación de formularios windows formsCrear una aplicación de formularios windows forms
Crear una aplicación de formularios windows formsPaulcuricama22
 
Visual basic
Visual basicVisual basic
Visual basicjosser96
 
A toda máquina con herencia visual
A toda máquina con herencia visualA toda máquina con herencia visual
A toda máquina con herencia visualIgnacio Monllor
 
Actividad autonoma 8 de julio de 2015 - Erick lozada
Actividad autonoma 8 de julio de 2015 - Erick lozadaActividad autonoma 8 de julio de 2015 - Erick lozada
Actividad autonoma 8 de julio de 2015 - Erick lozadaErick Paul Lozada Peñarreta
 
desarolla aplicaciones
desarolla aplicaciones desarolla aplicaciones
desarolla aplicaciones axelyair
 
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Sorey García
 
Dce2 Introduccion Asp.Net
Dce2 Introduccion Asp.NetDce2 Introduccion Asp.Net
Dce2 Introduccion Asp.NetEsteban Soraire
 
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)Ander Martinez
 
WPF 02 - construyendo una interfaz de usuario
WPF 02  - construyendo una interfaz de usuarioWPF 02  - construyendo una interfaz de usuario
WPF 02 - construyendo una interfaz de usuarioDanae Aguilar Guzmán
 
6. validando las entradas de usuario
6.  validando las entradas de usuario6.  validando las entradas de usuario
6. validando las entradas de usuarioJaime Acurio
 

Was ist angesagt? (18)

Dce2 Introduccion Win Forms
Dce2 Introduccion Win FormsDce2 Introduccion Win Forms
Dce2 Introduccion Win Forms
 
Dce2 introduccion win_forms
Dce2 introduccion win_formsDce2 introduccion win_forms
Dce2 introduccion win_forms
 
Ceubas10
Ceubas10Ceubas10
Ceubas10
 
Formulario mdi
Formulario mdiFormulario mdi
Formulario mdi
 
Visual 6.0
Visual 6.0Visual 6.0
Visual 6.0
 
Form y container
Form y containerForm y container
Form y container
 
Formularios y contenedores
Formularios y contenedoresFormularios y contenedores
Formularios y contenedores
 
visual basic
visual basicvisual basic
visual basic
 
Crear una aplicación de formularios windows forms
Crear una aplicación de formularios windows formsCrear una aplicación de formularios windows forms
Crear una aplicación de formularios windows forms
 
Visual basic
Visual basicVisual basic
Visual basic
 
A toda máquina con herencia visual
A toda máquina con herencia visualA toda máquina con herencia visual
A toda máquina con herencia visual
 
Actividad autonoma 8 de julio de 2015 - Erick lozada
Actividad autonoma 8 de julio de 2015 - Erick lozadaActividad autonoma 8 de julio de 2015 - Erick lozada
Actividad autonoma 8 de julio de 2015 - Erick lozada
 
desarolla aplicaciones
desarolla aplicaciones desarolla aplicaciones
desarolla aplicaciones
 
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
Estrategias para desarrollo crossplatform en Windows Phone 8 y Windows 8
 
Dce2 Introduccion Asp.Net
Dce2 Introduccion Asp.NetDce2 Introduccion Asp.Net
Dce2 Introduccion Asp.Net
 
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
UDA-Componentes RUP. Mensajes (v2.1.1 deprecado)
 
WPF 02 - construyendo una interfaz de usuario
WPF 02  - construyendo una interfaz de usuarioWPF 02  - construyendo una interfaz de usuario
WPF 02 - construyendo una interfaz de usuario
 
6. validando las entradas de usuario
6.  validando las entradas de usuario6.  validando las entradas de usuario
6. validando las entradas de usuario
 

Ähnlich wie Controles aspnet validacion

Actividad autónoma: Controles de validacion en ASP.NET
Actividad autónoma: Controles de validacion en ASP.NETActividad autónoma: Controles de validacion en ASP.NET
Actividad autónoma: Controles de validacion en ASP.NETErick Paul Lozada Peñarreta
 
Controles de validación en asp
Controles de validación en aspControles de validación en asp
Controles de validación en aspMaria Tomalá
 
6. Validando Las Entradas De Usuario
6.  Validando Las Entradas De Usuario6.  Validando Las Entradas De Usuario
6. Validando Las Entradas De Usuarioguest3cf6ff
 
6. validando las entradas de usuario
6.  validando las entradas de usuario6.  validando las entradas de usuario
6. validando las entradas de usuarioJaime Acurio
 
3. crear formularios web forms
3.  crear formularios web forms3.  crear formularios web forms
3. crear formularios web formsJaime Acurio
 
Presentación1
Presentación1Presentación1
Presentación1karla54
 
3. Crear Formularios Web Forms
3.  Crear Formularios Web Forms3.  Crear Formularios Web Forms
3. Crear Formularios Web Formsguest3cf6ff
 
Herramientas Visual Basic (vb)
Herramientas Visual Basic (vb)Herramientas Visual Basic (vb)
Herramientas Visual Basic (vb)Darwin Ortiz
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Esteban Saavedra
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NETwilliamsm
 
INFOSAN VISUAL BASIC
INFOSAN VISUAL BASICINFOSAN VISUAL BASIC
INFOSAN VISUAL BASICFRANCIACOCO
 
Validación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpValidación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpJess_ccs_rock
 
Validación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpValidación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpJess_ccs_rock
 

Ähnlich wie Controles aspnet validacion (20)

Validación de formularios
Validación de formulariosValidación de formularios
Validación de formularios
 
Actividad autónoma: Controles de validacion en ASP.NET
Actividad autónoma: Controles de validacion en ASP.NETActividad autónoma: Controles de validacion en ASP.NET
Actividad autónoma: Controles de validacion en ASP.NET
 
Eventos
EventosEventos
Eventos
 
Controles de validación en asp
Controles de validación en aspControles de validación en asp
Controles de validación en asp
 
6. Validando Las Entradas De Usuario
6.  Validando Las Entradas De Usuario6.  Validando Las Entradas De Usuario
6. Validando Las Entradas De Usuario
 
06 validación
06 validación06 validación
06 validación
 
6. validando las entradas de usuario
6.  validando las entradas de usuario6.  validando las entradas de usuario
6. validando las entradas de usuario
 
3. crear formularios web forms
3.  crear formularios web forms3.  crear formularios web forms
3. crear formularios web forms
 
Presentación1
Presentación1Presentación1
Presentación1
 
Presentación1
Presentación1Presentación1
Presentación1
 
3. Crear Formularios Web Forms
3.  Crear Formularios Web Forms3.  Crear Formularios Web Forms
3. Crear Formularios Web Forms
 
Herramientas Visual Basic (vb)
Herramientas Visual Basic (vb)Herramientas Visual Basic (vb)
Herramientas Visual Basic (vb)
 
Asp.Net Controls Basic Part 1
Asp.Net Controls Basic Part 1Asp.Net Controls Basic Part 1
Asp.Net Controls Basic Part 1
 
Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5Grails: Framework para el desarrollo de aplicaciones Web No 5
Grails: Framework para el desarrollo de aplicaciones Web No 5
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
INFOSAN VISUAL BASIC
INFOSAN VISUAL BASICINFOSAN VISUAL BASIC
INFOSAN VISUAL BASIC
 
Vb
VbVb
Vb
 
Validación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpValidación o autenticación de usuarios en php
Validación o autenticación de usuarios en php
 
Validación o autenticación de usuarios en php
Validación o autenticación de usuarios en phpValidación o autenticación de usuarios en php
Validación o autenticación de usuarios en php
 
Tema2 ado net
Tema2 ado netTema2 ado net
Tema2 ado net
 

Controles aspnet validacion

  • 1. Marco Besteiro y Miguel Rodríguez Controles de Validación ASP.NET. Controles ASP.NET de validación. Controles de validación. Los controles de validación permiten validar los datos introducidos por el usuario. La validación se lleva a cabo cuando se pulsa un control de tipo botón. Los controles que pueden lanzar una validación son: - Button - HtmlButton - HtmlInputButton - HtmlInputImage - ImageButton - LinkButton También puede forzarse la validación utilizando el método Page.Validate. Tras lanzar la validación, si es pasada, se pondrá a true la propiedad IsValid de la clase Page y en caso contrario, se pondrá a false. Los controles de validación realizan la validación del control de cliente en el servidor. No obstante, si el navegador del cliente lo soporta (soporte DHTML, Internet Explorer 4.0 y superior), estos controles generan código JScript de cliente para que la validación se haga antes de que el formulario sea enviado al servidor. Todos los controles devalidación derivan de la clase System.Web.UI.WebControls.BaseValidator y por tanto comparten una serie de propiedades entre las que destacan: - ErrorMessage: esta propiedad permite indicar el texto que se mostrará al usuario en el control de validación cuando introduzca un valor incorrecto en el control que se esté validando. Es importante tener en cuenta que el mensaje de error se muestra en el control de validación y que además se añade junto con el resto de mensajes de validación al control ValidationSummary, si es que lo hay en el WebForm. Si se desea que el mensaje de error sólo aparezca en el control de validación que lo lanza, ha de indicarse el mensaje en la propiedad Text del control de validación, en lugar de en la propiedad ErrorMessage. - ControlToValidate: esta propiedad indica el ID del control que se está validando. - Display: Si el valor de esta propiedad es None, el texto contenido en la propiedad ErrorMessage se muestra en el sumario (ValidationSummary), y si no, se muestra sobre el control que ha causado el error. RequiredFieldValidator. Este control verifica que el campo al que está asociado se ha rellenado. La propiedad ControlToValidate permite indicar a que control se asocia. Si se incluye un control RequiredFieldValidator a una página Web ASP.NET sin asociarle un control al que validar, al ejecutar la aplicación se mostrará una página de error. 1/18 1
  • 2. Marco Besteiro y Miguel Rodríguez Controles de Validación Figura 22.1. Página de error indicando que el control RequiredFieldValidator no está asociado a control alguno que validar. Por ejemplo, supónga que se dispone de una aplicación llamada EjemploRequiredFieldValidator en la que la primera página es una página de control de usuario y clave. 2/18 2
  • 3. Marco Besteiro y Miguel Rodríguez Controles de Validación Figura 22.2. Página de ejemplo sobre la que probar el control RequiredFieldValidator. Se desea mostrar el mensaje Debe introducir un nombre de usuario, en caso de que al pulsar el botón Enviar la caja de texto correspondiente a la etiqueta Usuario no haya sido rellenada. El primer paso que se ha de dar es poner la propiedad CausesValidation del botón Enviar a true. De este modo, cada vez que se pulse el botón Enviar se provocará una validación. El siguiente paso es añadir al formulario Web un control RequiredFieldValidation y asociar su propiedad ControlToValidate con la caja de texto TextBox1, que es en la que se debe introducir el nombre de usuario. Además, se debe indicar en la propiedad ErrorMessage -o bien en Text, si se desea que el mensaje de error sólo aparezca en el control de validación- el mensaje que se desea mostrar si no se rellena la caja de texto TextBox1. 3/18 3
  • 4. Marco Besteiro y Miguel Rodríguez Controles de Validación Figura 22.3. Vista diseño de la página con el control RequiredFieldValidator. Si se observa el código de WebForm1.aspx.cs se verá que se ha añadido el control RequiredFieldValidator: using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace EjemploReqFieldValidator { /// <summary> /// Summary description for WebForm1. /// </summary> public class WebForm1 : System.Web.UI.Page { protected System.Web.UI.WebControls.TextBox TextBox1; protected System.Web.UI.WebControls.TextBox TextBox2; protected System.Web.UI.WebControls.Label Label1; protected System.Web.UI.WebControls.Label Label3; protected System.Web.UI.WebControls.RequiredFieldValidator RequiredFieldValidator1; protected System.Web.UI.WebControls.Button Button1; … 4/18 4
  • 5. Marco Besteiro y Miguel Rodríguez Controles de Validación ... ... En el código HTML de la página WebForm1.aspx se puede ver que también se ha añadido el control de validación y que se han indicado los valores de las propiedades ControlToValidate, ErrorMessage, etc... <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="EjemploReqFieldValidator.WebForm1" %> … … <asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 438px; POSITION: absolute; TOP: 92px" runat="server" Width="144px" Height="22px"> </asp:TextBox> <asp:Label id="Label1" style="Z-INDEX: 103; LEFT: 302px; POSITION: absolute; TOP: 95px" runat="server" Width="121px" Height="29px">Usuario: </asp:Label> … … <asp:RequiredFieldValidator id="RequiredFieldValidator1" style="Z-INDEX: 106; LEFT: 328px; POSITION: absolute; TOP: 255px" runat="server" Width="272px" Height="38px" ErrorMessage="Debe Introducir el nombre de Usuario" ControlToValidate="TextBox1"> </asp:RequiredFieldValidator> <asp:Button id="Button1" style="Z-INDEX: 107; LEFT: 368px; POSITION: absolute; TOP: 208px" runat="server" Width="169px" Height="28px" Text="Enviar"> </asp:Button> </form> </body> </HTML> Al ejecutar la aplicación no aparecerá el control RequiredFieldValidator1. Éste sólo se mostrará si se realiza una validación en el servidor (tras pulsar el botón Button1) y si la caja de texto se ha dejado en blanco. 5/18 5
  • 6. Marco Besteiro y Miguel Rodríguez Controles de Validación Figura 22.4. Resultado de pulsar el botón Enviar sin rellenar el campo usuario. El control RequiredFieldValidator muestra el mensaje de error. Esta es la validación básica. Es posible controlar en mayor grado la validación aprovechando la propiedad IsValid de la clase Page. Por ejemplo, podría hacerse que la etiqueta Usuario: cambie su color a rojo mientras no se introduzca un nombre de usuario. Un modo sencillo de implementarlo es utilizar el método Button1_Click: private void Button1_Click(object sender, System.EventArgs e) { if (Page.IsValid == true) { Label1.ForeColor = Color.Black; } else { Label1.ForeColor = Color.Red; } } No obstante, si se ejecuta la aplicación se puede ver que no hace lo esperado. El motivo es que la propiedad EnableClientScript del control RequiredFieldValidator1 está a true, lo que quiere decir que si el navegador lo permite, la validación se hará en el cliente (con código JScript) y todo código puesto en el servidor no llegará a ejecutarse. Si se cambia esta propiedad a false, la aplicación funcionará según lo esperado. 6/18 6
  • 7. Marco Besteiro y Miguel Rodríguez Controles de Validación En caso de que no se introduzca valor alguno en la caja de texto del Usuario, la etiqueta Usuario se pondrá en rojo. Figura 22.5. Personalización de la validación realizada en el método Button1_Click. La aplicación mostrada ha sido realizada utilizando el entorno de diseño de Visual Studio .NET. Por tal motivo, el código de respuesta a la pulsación del botón Enviar (Button1) se ha generado por defecto en el fichero WebForm1.aspx.cs, en concreto en el método Button1_Click. No obstante, este código podía haberse introducido directamente en el fichero WebForm1.aspx, como un script. Es importante indicar que este script puede ser de servidor (runat=server) o de cliente (por defecto, si no se indica). En el caso de que sea de cliente sólo puede codificarse en VBScript o en JScript. En el siguiente ejemplo se muestra como incluir el script en el fichero WebForm1.aspx. <%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="EjemploReqFieldValidator.WebForm1" %> … … <html> <head> <script language="C#" runat=server> 7/18 7
  • 8. Marco Besteiro y Miguel Rodríguez Controles de Validación void BotonValidar_Click(Object sender, EventArgs e) { if (Page.IsValid == true) { LabelMensaje.Text = "El campo requerido ha sido rellenado"; } else { LabelMensaje.Text = " El campo requerido está vacío"; } } </script> </head> <body> … … <asp:TextBox id="TextBox1" style="Z-INDEX: 101; LEFT: 438px; POSITION: absolute; TOP: 92px" runat="server" Width="144px" Height="22px"> </asp:TextBox> <asp:Label id="Label1" style="Z-INDEX: 103; LEFT: 302px; POSITION: absolute; TOP: 95px" runat="server" Width="121px" Height="29px">Usuario: </asp:Label> … … <asp:RequiredFieldValidator id="RequiredFieldValidator1" style="Z-INDEX: 106; LEFT: 328px; POSITION: absolute; TOP: 255px" runat="server" Width="272px" Height="38px" ErrorMessage="Debe Introducir el nombre de Usuario" ControlToValidate="TextBox1"> </asp:RequiredFieldValidator> … … <asp:Label id="LabelMensaje"… … … <asp:Button id=Button1 text="Validar" OnClick="BotonValidar_Click" runat=server /> </body> </html> CompareValidator. Este control permite comparar el valor introducido por el usuario en el control a validar (propiedad ControlToValidate) con el valor introducido en otro control (propiedad ControlToCompare) ó con una constante (propiedad ValueToCompare). No se deben utilizar a la vez (darles valor) las propiedades ControlToCompare y ValueToCompare. 8/18 8
  • 9. Marco Besteiro y Miguel Rodríguez Controles de Validación Porr ejemplo: <asp:CompareValidator id="Compare1" ControlToValidate="TextBox1" ControlToCompare="TextBox2" Type="String" runat="server"/> RangeValidator. Este control permite verificar si el valor introducido en el control al que se le asocia (propiedad ControlToValidate) se encuentra entre un valor mínimo (propiedad MinimumValue) y un valor máximo (propiedad MaximumValue). Suponga que se quiere mejorar la aplicación EjemploReqFieldValidator añadiendo un control RangeValidator que controle que la clave introducida en la segunda caja de texto sea un valor entre 0 y 99999 (mostrando un mensaje en el propio control). En principio, con añadirlo directamente en la vista de diseño y actualizar las propiedades ControlToValidate, MinimumValue y MaximunValue es suficiente. El problema viene si se desea especializar el tratamiento que se da a la validación del valor de la clave con el control RangeValidator (por ejemplo, hacer que la etiqueta clave se ponga de color rojo si la clave no se encuentra en el rango permitido). Siguiendo los pasos que se dieron en la aplicación EjemploReqFieldValidator, el código de validación puede introducirse en el método Button1_Click(). No obstante, el código contenido en Button1_Click() pone a rojo la etiqueta usuario si la página no es válida (propiedad Page.IsValid) y ahora es necesario diferenciar si se ha de poner a rojo una de las etiquetas, ninguna o ambas. Esto obliga a tener que distinguir cuándo falla la validación en RequiredFieldValidator1 y cuándo en RangeValidator1. La solución consiste en invocar por separado al método Validate de cada uno de los controles y preguntar por la propiedad IsValid de cada uno de los controles. ... ... private void InitializeComponent() { this.Button1.Click += new EventHandler(this.Button1_Click); this.CustomValidator1.ServerValidate += new System.Web.UI.WebControls.ServerValidateEventHandler( this.CustomValidator1_ServerValidate); this.Load += new System.EventHandler(this.Page_Load); } private void Page_Init(object sender, EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web //Form Designer. 9/18 9
  • 10. Marco Besteiro y Miguel Rodríguez Controles de Validación // InitializeComponent(); RangeValidator1.Type = ValidationDataType.Integer; RangeValidator1.MinimumValue = "0"; RangeValidator1.MaximumValue = "99999"; } ... ... private void Button1_Click(object sender, System.EventArgs e) { RequiredFieldValidator1.Validate(); if (RequiredFieldValidator1.IsValid == true) { Label1.ForeColor = Color.Black; } else { Label1.ForeColor = Color.Red; } RangeValidator1.Validate(); if (RangeValidator1.IsValid == true) { Label2.ForeColor = Color.Black; } else { Label2.ForeColor = Color.Red; } } Al ejecutar la aplicación, si la clave no es correcta, sólo se pondrá en rojo la etiqueta Clave. 10/18 10
  • 11. Marco Besteiro y Miguel Rodríguez Controles de Validación Figura 22.6.Personalización de la validación para los controles RequiredFieldValidator y RangeValidator. RegularExpresionValidator. Este control verifica si el valor del control de entrada al que está asociado sigue una determinada expresión regular. Este tipo de validación es interesante para números de teléfono, direcciones de e-mail, fechas... La sintaxis de la expresión regular difiere en función de si la validación se realiza en el cliente o en el servidor. Si la validación es en el servidor se utiliza System.Text.RegularExpressions.RegEx para definir la expresión regular. Si la validación es en el cliente se utiliza JScript para la expresión regular. Visual Studio ofrece un asistente de generación de expresiones regulares al que se puede acceder desde la ventana de propiedades al configurar el control de tipo RegularExpresionValidator (en concreto, desde la propiedad ValidationExpresión). 11/18 11
  • 12. Marco Besteiro y Miguel Rodríguez Controles de Validación Figura 22.7. Utilización del cuadro de diálogo editor de expresiones regulares. En el siguiente ejemplo se utiliza una expresión regular y el control RegularExpresionValidator para comprobar si el valor introducido en la caja de texto Clave es un número de 5 dígitos. La expresión regular es: ^d{5}$ Tras configurar las propiedades del control RegularExpresionValidator1 desde la ventana de propiedades se ha de añadir el código de validación en el método Button1_Click(). private void Button1_Click(object sender, System.EventArgs e) { RequiredFieldValidator1.Validate(); if (RequiredFieldValidator1.IsValid == true) { Label1.ForeColor = Color.Black; } else { Label1.ForeColor = Color.Red; } RangeValidator1.Validate(); if (RangeValidator1.IsValid == true) 12/18 12
  • 13. Marco Besteiro y Miguel Rodríguez Controles de Validación { Label2.ForeColor = Color.Black; } else { Label2.ForeColor = Color.Red; } RegularExpressionValidator1.Validate(); if (RegularExpressionValidator1.IsValid == true) { Label2.ForeColor = Color.Black; } else { Label2.ForeColor = Color.Red; } } Al ejecutar la aplicación, si se introduce una clave que no tenga 5 dígitos, el resultado es el de la figura 22.8: Figura 22.8. Personalización del tratamiento asociado al control RegularExpresionValidator. CustomValidator. 13/18 13
  • 14. Marco Besteiro y Miguel Rodríguez Controles de Validación Permite definir la validación que se va a aplicar a un control. Para crear una función de validación se ha de programar un manejador para el evento ServerValidate. Este evento recibe un objeto ServerValidateEventArgs como parámetro. La propiedad Value de este objeto contiene el string con el contenido del control a validar. El resultado de la validación se almacena en la propiedad IsValid del objeto ServerValidateEventArgs (si es false o es puesto a false, se muestra el control CustomValidator). Si se desea crear una función de validación del lado del cliente se ha de introducir un script con tal función en la página .aspx e indicarla en la propiedad ClientValidationFunction del control CustomValidator. Debido a que esta función se va a ejecutar en el cliente, debe ser escrita en VBScript o en JScript. Supónga que, en el ejemplo EjReqFieldValidator, se quiere controlar que si la suscripción de un usuario ha expirado, se le indique. En este caso se va a controlar únicamente que si el usuario es Pepe hay que avisarle de que debe revisar su suscripción. El primer paso es añadir un control CustomValidator (CustomValidator1) y dar los siguientes valores a sus propiedades: - ControlToValidate = TextBox1 - EnableClientScript = false - ErrorMessage = “debe usted actualizar su subscripción” Tras este paso se ha de codificar el método CustomValidator1_ServerValidate, que responde al evento ServerValidate. private void CustomValidator1_ServerValidate(object source, System.Web.UI.WebControls.ServerValidateEventArgs args) { if (args.Value.Equals("Pepe")) { CustomValidator1.ErrorMessage = args.Value + ", " + CustomValidator1.ErrorMessage; args.IsValid = false; TextBox1.ForeColor = Color.Red; } else { TextBox1.ForeColor = Color.Black; } } Es importante tener en cuenta que si se desea que el control CustomValidator1 muestre su texto, éste tiene que detectar error en la validación. El control CustomValidator1 considera que hay error si se pone la propiedad IsValid de args a false. El resultado de ejecutar la aplicación e introducir como nombre de usuario Pepe será ver el mensaje del control CustomValidator1 y ver también el texto Pepe en rojo. 14/18 14
  • 15. Marco Besteiro y Miguel Rodríguez Controles de Validación Figura 22.9. Utilización del control CustomValidator. En este caso, la validación ha sido de servidor. Si se desea que sea en el cliente es necesario generar un script de cliente en la página .aspx y poner la propiedad EnableClientScript de CustomValidator1 a true. Además se ha de indicar en la propiedad ClientValidationFunction de CustomValidator1 el nombre de la función del script de cliente. La siguiente función se ha de introducir al final de WebForm1.aspx y sólo muestra el mensaje de error si el usuario es Pepe. ... ... <script language=”vbscript”> Sub CustomValidator1_ClientValidate(val, args) If (args.value = "Pepe") Then args.IsValid = false End If End Sub </script> </body> </html> 15/18 15
  • 16. Marco Besteiro y Miguel Rodríguez Controles de Validación Como se puede observar, el lenguaje es VBScript y su sintaxis difiere de la de C#. Cuando se crea un script de cliente lo lógico es desear que pueda ejecutarse en cuantos más navegadores sea posible. La mayoría de los navegadores soportan JavaScript y VBScript (JScript también tiene bastante soporte debido a su parecido con JavaScript). Otros lenguajes, como puede ser C#, no son ampliamente soportados por los navegadores, de modo que se recomienda utilizar JavaScript o VBScript para los scripts de cliente. Por defecto, el documento .aspx, cuando se crea con Visual Studio .NET, toma JavaScript como lenguaje por defecto para los scripts de cliente. Esto se puede ver en la ventana de propiedades de la clase DOCUMENT (esta clase representa el documento o página Web generada a partir de la página .aspx). La propiedad en la que se indica es defaultClientScript. Figura 22.10. Vista HTML de la página. El lenguaje de script utilizado es JScript. El lenguaje indicado en la propiedad defaultClientScript es JScript, en cambio, en la página .aspx se indica JavaScript. Realmente son muy parecidos (JavaScript es un subconjunto de Java, definido por Netscape y JScript es un subconjunto de Java definido por Microsoft, con alguna variante. En este caso, el script de cliente se desea que sea VBScript, de modo que debe cambiarse el valor de la propiedad defaultClientScript a VBScript. ValidationSummary. 16/18 16
  • 17. Marco Besteiro y Miguel Rodríguez Controles de Validación Un control de esta clase permite hacer un sumario de todos los mensajes de error de todos los controles de validación de una página Web. El sumario de errores se muestra por defecto como una lista de puntos (el formato de la lista se puede cambiar mediante la propiedad DisplayMode). La lista de puntos muestra todos los errores que se han detectado al validar la página por los distintos controles de validación pero se refresca en cada nueva validación, es decir, no acumula los errores de anteriores validaciones. Dos propiedades interesantes de la clase ValidationSummary son ShowSummary y ShowMessageBox que permiten mostrar, respectivamente, el listado de mensajes en la página Web o en un cuadro de mensaje. Si se añade un control ValidationSummary a la página WebForm1.aspx de la aplicación EjemploReqFieldValidator (está en la parte izquierda), el resultado es el de la figura 22.11: Figura 22.11. Utilización del control ValidationSummary. Controles ASP.NET definidos por el desarrollador. Los controles definidos por el desarrollador pueden crearse en base a agrupaciones de otros controles e incluso a partir de una página ASP.NET. En muchos casos es posible crear un control ASP.NET a partir de una página ASP.NET simplemente cambiado la extensión .aspx por .ascx y la extensión .aspx.cs por 17/18 17
  • 18. Marco Besteiro y Miguel Rodríguez Controles de Validación .ascx.cs (o bien copiando el contenido del .aspx y del .aspx.cs sobre un .ascx y un .ascx.cs respectivamente). Es importante saber que en este tipo de controles no se soportan los controles de validación. Si se desea construir un control ASP.NET puro, sin página web asociada, se puede utilizar el asistente, eligiendo la opción Librería de controles Web. Figura 22.12. Cuadro de diálogo de creación de un nuevo proyecto. Opción de creación de un control a medida. El resultado será un control derivado de la clase System.Web.UI.WebControls.WebControl o de una clase derivada de ésta y estará contenido en un fichero .ascx. 18/18 18