Compartilhar via


Controle CustomValidator (referênciaGeral )

Avalia o valor de um controle de entrada para determinar se ele passa a lógica de validação personalizado.

<asp:CustomValidator
    AccessKey="string"
    BackColor="color name|#dddddd"
    BorderColor="color name|#dddddd"
    BorderStyle="NotSet|None|Dotted|Dashed|Solid|Double|Groove|Ridge|
        Inset|Outset"
    BorderWidth="size"
    ClientValidationFunction="string"
    ControlToValidate="string"
    CssClass="string"
    Display="None|Static|Dynamic"
    EnableClientScript="True|False"
    Enabled="True|False"
    EnableTheming="True|False"
    EnableViewState="True|False"
    ErrorMessage="string"
    Font-Bold="True|False"
    Font-Italic="True|False"
    Font-Names="string"
    Font-Overline="True|False"
    Font-Size="string|Smaller|Larger|XX-Small|X-Small|Small|Medium|
        Large|X-Large|XX-Large"
    Font-Strikeout="True|False"
    Font-Underline="True|False"
    ForeColor="color name|#dddddd"
    Height="size"
    ID="string"
    OnDataBinding="DataBinding event handler"
    OnDisposed="Disposed event handler"
    OnInit="Init event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnServerValidate="ServerValidate event handler"
    OnUnload="Unload event handler"
    runat="server"
    SetFocusOnError="True|False"
    SkinID="string"
    Style="string"
    TabIndex="integer"
    Text="string"
    ToolTip="string"
    ValidateEmptyText="True|False"
    ValidationGroup="string"
    Visible="True|False"
    Width="size"
/>

Comentários

O CustomValidator controle permite que você criar um controle de validação com lógica de validação personalizada. Por exemplo, você pode criar um controle de validação verifica se o valor inserido em uma caixa de texto é um número par.

Controles de validação sempre realizam validação no servidor. Eles também têm a implementação completa do lado do cliente que permite que os navegadores compatíveis com o DHTML (como, por exemplo, Microsoft Internet Explorer 4.0 ou posterior) para executar a validação no cliente. Validação do lado do cliente aprimora o processo de validação verificando entrada do usuário antes de ser enviado ao servidor. Isso permite que os erros sejam detectados no cliente antes do formulário é enviado, evitando a viagem de informações necessárias para validação do lado do servidor.

Para criar uma função de validação do lado do servidor, forneça um manipulador para o ServerValidate evento que executa a validação. A seqüência de caracteres de controle de entrada para validar que pode ser acessada usando o Value propriedade da ServerValidateEventArgs objeto passado para o manipulador de eventos como um parâmetro. O resultado da validação é então armazenado na IsValid propriedade da ServerValidateEventArgs objeto.

Para criar uma função de validação do lado do cliente, primeiro adicione a função de validação do lado do servidor descrita anteriormente. Em seguida, adicione a função de script de validação do lado do cliente para a página. aspx.

Se você estiver usando o Visual Basic, a função deve estar no formato:

Sub ValidationFunctionName (source, arguments)

Se você estiver usando o JScript, a função deve estar no formato:

Function ValidationFunctionName (source, arguments)

Use o ClientValidationFunction propriedade para especificar o nome da função de script de validação do lado do cliente associado a CustomValidator de controle. Porque a função de script é executada no cliente, a função deve estar em um idioma que dá suporte o navegador de destino, como, por exemplo, Visual Basic ou JScript.

Como a validação do lado do servidor, usando o Value propriedade da arguments parâmetro acessa o valor para validar. Retornar o resultado da validação, definindo a IsValid propriedade da arguments parâmetro.

Observação de segurançaObservação sobre segurança

Ao criar uma função de validação do lado do cliente, certifique-se de que incluir a funcionalidade da função de validação do lado do servidor.Se você criar uma função de validação do lado do cliente sem uma função de servidor correspondente, é possível ignorar a validação de código mal-intencionado.

Vários controles de validação podem ser associados um controle individual de entrada para validar critérios diferentes. Por exemplo, você pode aplicar vários controles de validação em um TextBox controle que permite que o usuário insira a quantidade de itens para adicionar ao carrinho de compras. Você pode usar um CustomValidator o controle para garantir que o valor especificado é menor do que a quantidade em estoque e um RequiredFieldValidator controle para garantir que o usuário insere um valor para o TextBox de controle.

Observação

Se o controle de entrada estiver vazio, nenhuma função de validação é chamadas e validação for bem-sucedida.Use um RequiredFieldValidator o controle para impedir que o usuário ignorando um controle de entrada.

É possível usar um CustomValidator o controle sem definir o ControlToValidate propriedade. Isso geralmente é feito quando você estiver validando vários controles de entrada ou validar controles de entrada não podem ser usados com controles de validação, como o CheckBox de controle. Nesse caso, o Value propriedade da arguments parâmetro passado ao manipulador de eventos para o ServerValidate eventos e na validação do lado do cliente função sempre contém uma seqüência vazia (""). No entanto, essas funções de validação ainda são chamadas, onde apropriado, para determinar a validade no servidor e o cliente. Para acessar o valor para validar, você deve referenciar programaticamente o controle de entrada que você deseja validar e, em seguida, recuperar o valor da propriedade apropriada. Por exemplo, para validar um CheckBox de controle no servidor, não configure o ControlToValidate propriedade do controle de validação e use o seguinte código para o manipulador para o ServerValidate evento.

Sub ServerValidation (source As object, args As ServerValidateEventArgs)
 
   args.IsValid = (CheckBox1.Checked = True)

End Sub
void ServerValidation (object source, ServerValidateEventArgs args)
{
      
   args.IsValid = (CheckBox1.Checked == true);
   
}

Para obter mais informações sobre o CustomValidator controle, consulte o System.Web.UI.WebControls.CustomValidator classe.

Exemplos

O exemplo de código a seguir demonstra como criar um CustomValidator controle que valida se o valor inserido em uma caixa de texto é um número par no servidor. O resultado da validação é exibido na página.

Observação de segurançaObservação sobre segurança

Esses exemplos de código contém caixas de texto que aceita entrada do usuário, o que representa uma ameaça potencial de segurança.Por padrão, páginas Web ASP.NET validam se as entradas de usuário não incluem scripts ou elementos HTML.Para obter mais informações, consulte Visão geral de scripts maliciosos.

<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
<head>
   <script runat="server">
      Sub ValidateBtn_OnClick(sender As object, e As EventArgs) 
         If Page.IsValid Then 
            lblOutput.Text = "Page is valid."
         Else 
            lblOutput.Text = "Page is not valid!"
         End If
      End Sub
      Sub ServerValidation (source As object, arguments As ServerValidateEventArgs)

         Dim num As Integer = Integer.Parse(arguments.Value)
         arguments.IsValid = ((num mod 2) = 0)
         
      End Sub
   </script>    
</head>
<body>
   <form runat="server">
      <h3>CustomValidator Example</h3>
      <asp:Label id=lblOutput runat="server" 
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" /><br>
      <p />
      <asp:TextBox id="Text1" 
           runat="server" />
      &nbsp;&nbsp;
      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>
      <p />
      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>
   </form>
</body>
</html>
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
   <script runat="server">
      void ValidateBtn_OnClick(object sender, EventArgs e) 
      { 
         if (Page.IsValid) 
         {
            lblOutput.Text = "Page is valid.";
         }
         else 
         {
            lblOutput.Text = "Page is not valid!";
         }
      }
      void ServerValidation (object source, ServerValidateEventArgs arguments)
      {

         int i = int.Parse(arguments.Value);
         arguments.IsValid = ((i%2) == 0);

      }
   </script>    
</head>
<body>
   <form runat="server">
      <h3>CustomValidator Example</h3>
      <asp:Label id=lblOutput runat="server" 
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" /><br>
      <p />
      <asp:TextBox id="Text1" 
           runat="server" />
      &nbsp;&nbsp;
      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>
      <p />
      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>
   </form>
</body>
</html>

O exemplo de código a seguir demonstra como criar um CustomValidator controle que executa a rotina de validação mesmo do exemplo anterior, mas no cliente.

<%@ Page Language="VB" AutoEventWireup="True" %>
<html>
<head>
   <script runat="server">
      Sub ValidateBtn_OnClick(sender As object, e As EventArgs) 
         If Page.IsValid Then 
            lblOutput.Text = "Page is valid."
         Else 
            lblOutput.Text = "Page is not valid!"
         End If
      End Sub
      Sub ServerValidation (source As object, arguments As ServerValidateEventArgs)

         Dim num As Integer = Integer.Parse(arguments.Value)
         arguments.IsValid = ((num mod 2) = 0)
 
      End Sub
   </script>    
</head>
<body>
   <form runat="server">
      <h3>CustomValidator Example</h3>
      <asp:Label id=lblOutput runat="server" 
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" /><br>
      <p />
      <asp:TextBox id="Text1" 
           runat="server" />
      &nbsp;&nbsp;
      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           ClientValidationFunction="ClientValidate"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>
      <p />
      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>
   </form>
</body>
</html>
<script language="javascript">
   <!--
   function ClientValidate(source, arguments)
   {
      if ((arguments.Value % 2) == 0)
         arguments.IsValid=true;
      else
         arguments.IsValid=false;
   }
   // -->
</script>
<%@ Page Language="C#" AutoEventWireup="True" %>
<html>
<head>
   <script runat="server">
      void ValidateBtn_OnClick(object sender, EventArgs e) 
      { 
         if (Page.IsValid) 
         {
            lblOutput.Text = "Page is valid.";
         }
         else 
         {
            lblOutput.Text = "Page is not valid!";
         }
      }
      void ServerValidation (object source, ServerValidateEventArgs arguments)
      {
         
            int i = int.Parse(arguments.Value);
            arguments.IsValid = ((i%2) == 0);

      }
   </script>    
</head>
<body>
   <form runat="server">
      <h3>CustomValidator Example</h3>
      <asp:Label id=lblOutput runat="server" 
           Text="Enter an even number:" 
           Font-Name="Verdana" 
           Font-Size="10pt" /><br>
      <p />
      <asp:TextBox id="Text1" 
           runat="server" />
      &nbsp;&nbsp;
      <asp:CustomValidator id="CustomValidator1"
           ControlToValidate="Text1"
           ClientValidationFunction="ClientValidate"
           OnServerValidate="ServerValidation"
           Display="Static"
           ErrorMessage="Not an even number!"
           ForeColor="green"
           Font-Name="verdana" 
           Font-Size="10pt"
           runat="server"/>
      <p />
      <asp:Button id="Button1"
           Text="Validate" 
           OnClick="ValidateBtn_OnClick" 
           runat="server"/>
   </form>
</body>
</html>
<script language="javascript">
   <!--
   function ClientValidate(source, arguments)
   {
      if ((arguments.Value % 2) == 0)
         arguments.IsValid=true;
      else
         arguments.IsValid=false;
   }
   // -->
</script>

Consulte também

Referência

CustomValidator

Outros recursos

Sintaxe de controle do servidor de validação