最終更新日 2006 年 1 月 20 日
サンプル コードのダウンロード
(PHPtips_InputCheck2.msi, 244 KB)
※このサンプルをお使いいただくためには、Visual Studio 2005 が必要です。
入力された値をチェックする方法については、入力された値をチェックする方法で紹介しました。ここでは、必須項目に入力されているかどうかをチェックしているだけでしたが、ASP.NET 2.0 では、正規表現を使った検証など、より高度な入力値のチェックを行えます。従来の ASP やPHP では、このような検証するためにコードを独自に実装する必要がありました。ASP.NET 2.0 では、検証コントロールを利用することで、コードを記述せずに簡単に検証の機能を実装できます。では、実際に何種類かの検証コントロールを使って入力値の検証を行ってみましょう。
サンプル フォームを準備する
はじめに、名前、E-Mail、誕生月を入力するページを用意します(リスト1 および図1)。
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head runat="server">
<title>Sample Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>
<asp:Label ID="lblEMail1" runat="server" Text="E-Mail1:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtEMail1" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblEMail2" runat="server" Text="E-Mail2(1を再入力):">
</asp:Label>
</td>
<td>
<asp:TextBox ID="txtEMail2" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblMon" runat="server" Text="誕生月:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtMon" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<asp:Button ID="btnRegist" runat="server" Text="登録" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
|
リスト1.Default.asp
図1 Default.asp の表示画面
比較検証を行う
入力値の比較検証は、CompareValidator コントロールを使います。では、次の手順により E-Mail2 と E-Mail1 を比較して正しく再入力が行えているか検証してみましょう。
-
[ツールボックス]-[検証] から CompareValidator を選択し、Default.aspx のデザイン画面へ貼り付けます(図2)。
-
貼り付けた CompareValidator のプロパティ ウインドウを開きます。
-
[ControlToValidate] で「txtEMail2」を選択し、検証する対象を指定します(図3)。
-
[ControlToCompare] で「txtEMail1」を選択し、比較する対象を指定します(図3)。比較対象をコントロールではなく、固定値を指定したい場合は、ValueToConpare プロパティに指定します。
-
[Type] で「Integer」を選択し、比較に使う値のデータ型を指定します(図4)。
-
[Text] に「E-Mail1と違います」と入力し、検証結果が失敗だったときに表示するメッセージを指定します(図5)。
図2
図3
図4
図5
範囲検証を行う
入力値の範囲検証は、RangeValidator コントロールを使います。では、次の手順により誕生月に入力された値が 1 から 12 の間あるか検証してみましょう。
1. [ツールボックス]-[検証] から RangeValidator を選択し、Default.aspx のデザイン画面へ貼り付けます(図6)。
2. 貼り付けた RangeValidator のプロパティ ウインドウを開きます。
3. [ControlToValidate] で「txtMon」を選択し、検証する対象を指定します(図7)。
4. [MaximumValue] に「12」を指定し、範囲の最大値を指定します(図8)。
5. [MinimumValue] に「1」を指定し、範囲の最小値を指定します(図8)。
6. [Type] で「Integer」を選択し、比較に使う値のデータ型を指定します(図9)。
7. [Text] に「存在しない月です」と入力し、検証結果が失敗だったときに表示するメッセージを指定します(図10)。
図6
図7
図8
図9
図10
正規表現による検証を行う
正規表現による検証は、RegularExpressionValidator コントロールを使います。では、次の手順により正規表現を使って E-Mail1 に入力された文字列が、E-Mail アドレスとして正しい形式か検証してみましょう。
1. [ツールボックス]-[検証] から RegularExpressionValidator を選択し、Default.aspx のデザイン画面へ貼り付けます(図11)。
2. 貼り付けた RegularExpressionValidator のプロパティ ウインドウを開きます。
3. [ControlToValidate] で「txtEMail1」を選択し、検証する対象を指定します(図12)。
4. [ValidationExpression] に「\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*」と入力し、検証する正規表現を指定します(図13)。
5. [Text] に「形式が正しくありません」と入力し、検証結果が失敗だったときに表示するメッセージを指定します(図14)。
図11
図12
図13
図14
以上の設定が完了すると、Default.aspx は、リスト2 になり、実行結果は図15 のようになります。
<%@ Page Language="VB" AutoEventWireup="false"
CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head runat="server">
<title>Sample Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<table>
<tr>
<td>
<asp:Label ID="lblEMail1" runat="server" Text="E-Mail1:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtEMail1" runat="server"></asp:TextBox>
<asp:RegularExpressionValidator ID="RegularExpressionValidator1"
runat="server" ErrorMessage="形式が正しくありません"
ControlToValidate="txtEMail1"
ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*">
</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblEMail2" runat="server" Text="E-Mail2(1を再入力):">
</asp:Label>
</td>
<td>
<asp:TextBox ID="txtEMail2" runat="server"></asp:TextBox>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ErrorMessage="E-Mail1と違います" ControlToCompare="txtEMail1"
ControlToValidate="txtEMail2"></asp:CompareValidator>
</td>
</tr>
<tr>
<td>
<asp:Label ID="lblMon" runat="server" Text="誕生月:"></asp:Label>
</td>
<td>
<asp:TextBox ID="txtMon" runat="server"></asp:TextBox>
<asp:RangeValidator ID="RangeValidator1" runat="server"
ErrorMessage="存在しない月です" ControlToValidate="txtMon"
MaximumValue="12" MinimumValue="1" Type="Integer">
</asp:RangeValidator>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<asp:Button ID="btnRegist" runat="server" Text="登録" />
</td>
</tr>
</table>
</div>
</form>
</body>
</html> |
リスト2.Default.asp
図15