RegularExpressionValidator.EvaluateIsValid 方法

定义

指示输入控件中的值是否有效。

protected:
 override bool EvaluateIsValid();
protected override bool EvaluateIsValid ();
override this.EvaluateIsValid : unit -> bool
Protected Overrides Function EvaluateIsValid () As Boolean

返回

如果输入控件中的值有效,则为 true;否则为 false

示例

下面的代码示例演示如何重写 EvaluateIsValid 自定义服务器控件中的 方法,以便它始终根据 表达式检查 中的匹配 RegularExpressionValidator项的值。

重要

此示例具有一个接受用户输入的文本框,这是一个潜在的安全威胁。 默认情况下,ASP.NET 网页验证用户输入是否不包含脚本或 HTML 元素。 有关详细信息,请参阅脚本侵入概述

using System.Web;
using System.Security.Permissions;

namespace Samples.AspNet.CS.Controls
{
  [AspNetHostingPermission(SecurityAction.Demand, Level=AspNetHostingPermissionLevel.Minimal)]
  public sealed class CustomRegularExpressionValidatorEvaluateIsValid : System.Web.UI.WebControls.RegularExpressionValidator
  {
    protected override bool EvaluateIsValid()
    {
      // Get the control to validate's validation value
      string controlValue = GetControlValidationValue(this.ControlToValidate);
      
      // If the value is null or empty, then return true
      if (controlValue == null || controlValue.Trim().Length == 0) 
      {
        return true;
      }
      else
      {
        // Else try running the Regular Expression against the value 
        // and see if there is a match.
        try 
        {
          System.Text.RegularExpressions.Match regExpMatch = System.Text.RegularExpressions.Regex.Match(controlValue, this.ValidationExpression);
          return(regExpMatch.Success && regExpMatch.Index == 0 && regExpMatch.Length == controlValue.Length);
        }
        catch 
        {
          return true;
        }
      }
    }
  }
}
Imports System.Web
Imports System.Security.Permissions

Namespace Samples.AspNet.VB.Controls
    <AspNetHostingPermission(SecurityAction.Demand, Level:=AspNetHostingPermissionLevel.Minimal)> _
    Public NotInheritable Class CustomRegularExpressionValidatorEvaluateIsValid
        Inherits System.Web.UI.WebControls.RegularExpressionValidator

        Protected Overrides Function EvaluateIsValid() As Boolean

            ' Get the control to validate's validation value
            Dim controlValue As String = GetControlValidationValue(Me.ControlToValidate)

            ' If the value is null or empty, then return true
            If controlValue Is Nothing OrElse controlValue.Trim().Length = 0 Then
                Return True
            Else
                ' Else try running the Regular Expression against the value 
                ' and see if there is a match.
                Try
                    Dim regExpMatch As System.Text.RegularExpressions.Match = System.Text.RegularExpressions.Regex.Match(controlValue, Me.ValidationExpression)
                    Return regExpMatch.Success AndAlso regExpMatch.Index = 0 AndAlso regExpMatch.Length = controlValue.Length
                Catch
                    Return True
                End Try
            End If
        End Function
    End Class
End Namespace

下面的代码示例演示如何在 CustomRegularExpressionValidatorEvaluateIsValid Web 窗体页上使用上例中定义的 控件。

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS.Controls" Assembly="Samples.AspNet.CS" %>
<%@ Page Language="C#" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Custom RegularExpressionValidator - EvaluateIsValid - C# Example</title>
    <script runat="server">
      void Button1_Click(Object sender, EventArgs e) 
      {
        if (Page.IsValid) 
        {
          Label1.Text = "Page is valid.";
        }
        else 
        {
          Label1.Text = "Page is invalid!";
        }
      }
    </script>
    </head>
    <body>
        <form id="Form1" method="post" runat="server">
            <h3>Custom RegularExpressionValidator - EvaluateIsValid - C# Example</h3>
       <table style="background-color:#eeeeee; padding:10">
          <tr valign="top">
             <td colspan="3">
                <asp:Label ID="Label1" 
                  Text="Enter a 5 digit zip code" 
                  runat="server"/>
             </td>
          </tr>
 
          <tr>
             <td colspan="3">
                <b>Personal Information</b>
             </td>
          </tr>
          <tr>
             <td align="right">
                Zip Code:
             </td>
             <td>
                <asp:TextBox id="TextBox1" runat="server"/>
             </td>
             <td>
                <aspSample:CustomRegularExpressionValidatorEvaluateIsValid
                  id="Regularexpressionvalidator1" 
                  runat="server"
                  ControlToValidate="TextBox1"
                  ValidationExpression="\d{5}"
                  ErrorMessage="Zip code must be 5 numeric digits"
                  Display="Static"
                  EnableClientScript="False" />
             </td>
          </tr>
          <tr>
             <td></td>
             <td>
                <asp:Button text="Button1" 
                  OnClick="Button1_Click" 
                  runat="server" ID="Button1"/>
             </td>
             <td></td>
          </tr>
       </table>
        </form>
    </body>
</html>
<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.VB.Controls" Assembly="Samples.AspNet.VB" %>
<%@ Page Language="VB" AutoEventWireup="True" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>Custom RegularExpressionValidator - EvaluateIsValid - VB.NET Example</title>
    <script runat="server">
      Sub Button1_Click(sender As Object, e As EventArgs)
          If Page.IsValid Then
              Label1.Text="Page is valid."
          Else
              Label1.Text="Page is not valid!"
          End If
      End Sub
    </script>
    </head>
    <body>
        <form id="Form1" method="post" runat="server">
            <h3>Custom RegularExpressionValidator - EvaluateIsValid - VB.NET Example</h3>
       <table style="background-color:#eeeeee; padding:10">
          <tr valign="top">
             <td colspan="3">
                <asp:Label ID="Label1" 
                  Text="Enter a 5 digit zip code" 
                  runat="server"/>
             </td>
          </tr>
 
          <tr>
             <td colspan="3">
                <b>Personal Information</b>
             </td>
          </tr>
          <tr>
             <td align="right">
                Zip Code:
             </td>
             <td>
                <asp:TextBox id="TextBox1" runat="server"/>
             </td>
             <td>
                <aspSample:CustomRegularExpressionValidatorEvaluateIsValid
                  id="Regularexpressionvalidator1" 
                  runat="server"
                  ControlToValidate="TextBox1"
                  ValidationExpression="\d{5}"
                  ErrorMessage="Zip code must be 5 numeric digits"
                  Display="Static"
                  EnableClientScript="False" />
             </td>
          </tr>
          <tr>
             <td></td>
             <td>
                <asp:Button text="Button1" 
                  OnClick="Button1_Click" 
                  runat="server" ID="Button1"/>
             </td>
             <td></td>
          </tr>
       </table>
        </form>
    </body>
</html>

适用于

另请参阅