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 Web ページによって、ユーザー入力にスクリプトまたは 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 Forms ページで使用する方法を示します。

<%@ 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>

適用対象

こちらもご覧ください