入力された文字列を独自のロジックで検証したい場合があります。CustomValidatorを用いるとサーバー側で実装したロジックで検証できます。この記事では、CustomValidatorの利用方法を紹介します。
サンプルプログラム
UI
下図のUIを作成します。TextBox, CustomValidator, Button, Labelを配置します。
CustomValidatorの画面に表示されるメッセージはErrorMessageプロパティを編集して変更します。
CustomValidatorの検証対象のコントロールを指定します。ControlToValidateプロパティにテキストボックスのIDを設定します。
XML
Webフォームのコードは以下になります。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CustomValidatorDemo.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br />
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="入力形式が不正です" ControlToValidate="TextBox1" OnServerValidate="CustomValidator1_ServerValidate"></asp:CustomValidator><br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
</form>
</body>
</html>
コード
CustomValidatorのServerValidateイベントを実装します。
以下のコードを記述します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace CustomValidatorDemo
{
public partial class Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
if (Page.IsValid == true) {
Label1.Text = "入力:" + TextBox1.Text;
}
}
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
if (args.Value[0] == 'P') {
args.IsValid = true;
}
else {
args.IsValid = false;
}
}
}
}
解説
ボタンがクリックされると、Page.IsValidプロパティの値を確認します。入力内容に問題が無ければ値はtrueであるため、ラベルに入力内容を表示します。
また、CustomValidatorのServerValidateイベントには、入力内容の検証ロジックを記述します。今回は先頭の文字が大文字の"P"であれば正しい入力とみなし、ServerValidateEventArgs オブジェクトのIsValidプロパティにtrueを設定します。先頭の文字が"p"でない場合は入力された文字は不正と判定し、ServerValidateEventArgs オブジェクトのIsValidプロパティにfalseを設定します。
実行結果
プロジェクトを実行します。Webブラウザが起動し、下図の画面が表示されます。
テキストボックスに"Test"と入力しました。入力後ボタンをクリックします。
入力した文字の"Test"の先頭の文字が"P"でなかったため、入力された文字が不正と判断されました。CustomValidatorのエラーメッセージが表示されます。
テキストボックスに"Penguin"と入力しました。入力後Buttonをクリックします。
先頭の文字が"P"であるため、検証は成功します。CustomValidatorのエラーメッセージは表示されません。また、Button1のClickイベントは実行され、ラベルに入力された文字列が表示されます。
著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
最終更新日: 2024-01-06
作成日: 2014-07-17