Partilhar via


Controle CustomValidator (referência geral)

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

<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

The CustomValidator controle permite que você criar um controle de validação com lógica de validação personalizado. 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 executam a verificação no servidor de validação. Eles também têm implementação completa do lado do cliente que permite que navegadores compatíveis com o DHTML (sistema autônomo o Microsoft Internet Explorer 4.0 ou posterior) para executar a validação no cliente. Validação do lado do cliente aumenta o processo de validação, verificação de entrada do usuário antes de ser enviado ao servidor. Isso permite que os erros a ser detectado no cliente antes do formulário é enviado, evitando a viagem de ida e volta de informações necessárias de 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 realiza a validação. A seqüência de caracteres do controle de entrada para validar pode ser acessada usando o Value propriedade das ServerValidateEventArgs objeto passado para o evento manipulador sistema autônomo um parâmetro. O resultado da validação, em seguida, será armazenado no IsValid propriedade das 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 Visual Basic, a função deve estar no formulário:

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 cliente associados a CustomValidator controle. Porque a função de script é executada no cliente, a função deve estar em uma linguagem que suporta o navegador de destino, sistema autônomo Visual Basic ou JScript.

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

Observação de segurançaObservação de 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 do código mal-intencionado.

Vários controles de validação podem ser associados um controle de entrada individual para validar diferentes critérios. 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 a um carrinho de compras. Você pode usar um CustomValidator controle para garantir que o valor especificado seja menor do que a quantidade no estoque e um RequiredFieldValidator controle para garantir que o usuário insira um valor para o TextBox controle.

ObservaçãoObservação:

Se o controle de entrada estiver vazio, nenhuma função de validação é chamadas e validação tiver êxito. Use um RequiredFieldValidator controle para impedir que o usuário ignorando um controle de entrada.

É possível usar um CustomValidator controle sem definir o ControlToValidate propriedade. Isso é concluído com freqüência quando você estiver validando vários controles de entrada ou Validando controles de entrada que não podem ser usados com controles de validação, sistema autônomo a CheckBox controle. Nesse caso, a Value propriedade das arguments parâmetro passado ao manipulador de eventos para o ServerValidateeventos e na validação do lado do cliente função sempre contém uma seqüência de caracteres vazia (""). No entanto, essas funções de validação ainda são chamadas, quando apropriado, para determinar a validade no servidor e cliente. Para acessar o valor para validar, você programaticamente deve referenciar o controle de entrada que você deseja validar e, em seguida, recuperar o valor da propriedade apropriada. Por exemplo, para validar um CheckBox controle no servidor, não defina a 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 valida se o valor inserido em uma caixa de texto é um número par no servidor. O resultado da validação, em seguida, é exibido na página.

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

Esses exemplos de código contêm caixas de texto que aceita entrada do usuário, que representa uma ameaça potencial à 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 sistema autônomo 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

Validação de sintaxe de controle de servidor