ASP.NET の検証コントロールは、ユーザーが入力したデータを検証し、無駄なデータ、無許可のデータ、矛盾したデータが保存されないようにします。
ASP.NET は、検証制御の次の側面を提供します。
RequiredFieldValidator
RangeValidator
比較検証者
正規表現バリデーター ( RegularExpressionValidator )
カスタムバリデーター (CustomValidator)
検証サマリーコントロール (Validationsummary)
検証クラスは BaseValidator クラスを継承するため、そのプロパティとメソッドを継承します。したがって、すべての有効性コントロールの基礎となるこの基本クラスのプロパティとメソッドを学習することは、その後の学習に非常に役立ちます。
コンポーネント | 説明する |
---|---|
検証するコントロール | 検証される入力コントロールを取得または設定します。 |
画面 | エラーメッセージがどのように表示されるかを説明します。 |
クライアントスクリプトを有効にする | クライアントが検証を採用しているかどうかを示します。 |
有効 | バリデーターを有効または無効にします。 |
エラーメッセージ | エラーを説明する文字列。 |
文章 | 検証が失敗した場合に表示されるテキスト。 |
有効です | コントロール値が有効かどうかを示します。 |
SetFocusOnError | 検証が失敗した場合に、関連する入力コントロールにフォーカスを設定するかどうか。 |
検証グループ | この検証コントロールが属する検証グループの名前を取得または設定します。 |
検証する | 関連付けられた入力コントロールに対して検証を実行し、IsValid プロパティを更新します。 |
RequiredFieldValidator コントロールは、必須フィールドが空でないことを保証します。これは主にテキスト ボックスにバインドされており、ユーザーがテキスト ボックスに入力できるようになります。
このコントロールの構文は次のとおりです。
<asp:RequiredFieldValidator ID="rfvcandidate" runat="server" ControlToValidate ="ddlcandidate" ErrorMessage="Please choose a candidate" InitialValue="Please choose a candidate"></asp:RequiredFieldValidator>
RangeValidator コントロールは、入力された値がプリセット範囲内にあるかどうかを確認する役割を果たします。
これには 3 つの固有のプロパティがあります。
財産 | 説明する |
---|---|
タイプ | データ型を定義します。使用可能なデータ型には、通貨、日付、倍精度浮動小数点数、整数、文字列が含まれます。 |
最小値 | 範囲内の最小値を指定します |
最大値 | 範囲内の最大値を指定します |
このコントロールの構文は次のとおりです。
<asp:RangeValidator ID="rvclass" runat="server" ControlToValidate="txtclass" ErrorMessage="Enter your class (6 - 12)" MaximumValue="12" MinimumValue="6" Type="Integer"></asp:RangeValidator>
CompareValidator コントロールは、別の入力コントロールに入力された値、定数値、または正しいデータ型に基づいて値を検証します。
これには次のような特定のプロパティがあります。
財産 | 説明する |
---|---|
タイプ | データ型を定義します。 |
比較するコントロール | 比較する必要がある入力コントロールの値を指定します。 |
比較する値 | 入力コントロール内で変化しない値を指定します。 |
オペレーター | 使用可能な値には、等価、不平等、以上、未満、以下、およびデータ型チェックが含まれます。 |
このコントロールの基本的な構文は次のとおりです。
<asp:CompareValidator ID="CompareValidator1" runat="server" ErrorMessage="CompareValidator"></asp:CompareValidator>
RegularExpressionValidator コントロールを使用すると、正規表現と照合することで入力の有効性を判断できます。正規表現は ValidationExpression プロパティに設定されます。
次の表は、正規表現で一般的に使用される構文構造をまとめたものです。
エスケープ文字 | 説明する |
---|---|
b | バックスペースキーと一致します。 |
t | 「一致」タブ。 |
r | Enter キーと一致します。 |
v | 垂直タブ文字と一致します。 |
f | フォームフィード文字と一致します。 |
n | 改行を一致させます。 |
エスケープ文字。 |
単純な文字の一致に加えて、一致する文字の種類を設定できます。これらの文字はワイルドカードと呼ばれます。
ワイルドカード | 説明する |
---|---|
。 | n を除く任意の文字と一致します。 |
[ABCD] | セット内の任意の文字と一致します。 |
[^abcd] | セットから任意の文字を除外します。 |
[2-7a-mA-M] | 特定の範囲内の任意の文字と一致します。 |
w | 任意の英数字グループとアンダースコアに一致します。 |
W | 単語以外の文字と一致します。 |
s | スペース、タブストップ、改行などの文字を照合します。 |
S | スペース以外の任意の文字と一致します。 |
d | 任意の小数文字と一致します。 |
D | 任意の 10 進数以外の文字と一致します。 |
数量子は、文字が出現する特定の単語数を示すことができます。
量指定子 | 説明する |
---|---|
* | 0 個以上の一致。 |
+ | 1 つ以上の一致。 |
? | ゼロまたは 1 つの一致。 |
{N} | N が一致します。 |
{N、} | N 個以上の一致。 |
{N、M} | N と M の間の一致。 |
このコントロールの基本的な構文は次のとおりです。
<asp:RegularExpressionValidator ID="string" runat="server" ErrorMessage="string" ValidationExpression="string" ValidationGroup="string"></asp:RegularExpressionValidator>
CustomValidator コントロールを使用すると、値を検証するためのクライアント側およびサーバー側の特定の検証ルーチンを作成できます。
クライアントの検証は、ClientValidationFunction を通じて適切に行われます。クライアント側の検証ルーチンは、JavaScript や VBScript など、ブラウザが理解できるスクリプト言語で作成する必要があります。
サーバー側の検証ルーチンは、コントロールの ServerValidate イベント ハンドラーによって生成される必要があります。サーバー側の検証ルーチンは、C# や VB.Net などの .Net 言語で作成する必要があります。
このコントロールの基本的な構文は次のとおりです。
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction=.cvf_func. ErrorMessage="CustomValidator"></asp:CustomValidator>
Validationsummary コントロールは検証を実行しませんが、ページ上のすべてのエラーの概要を表示します。この概要には、失敗したすべての検証コントロールの ErrorMessage プロパティの値が表示されます。
次の 2 つの相互に包含的な属性リストには、エラー メッセージがリストされます。
Showsummary : エラー情報を特別な形式で表示します。
ShowMessageBox : エラー メッセージを別のウィンドウに表示します。
このコントロールの基本的な構文は次のとおりです。
<asp:ValidationSummary ID="ValidationSummary1" runat="server" DisplayMode = "BulletList" ShowSummary = "true" HeaderText="Errors:" />
複雑なページには、さまざまなレベルでさまざまな情報セットが含まれます。この場合、グループごとに異なる検証が行われることになります。この状況は、検証グループを使用することで解決できます。
検証グループを作成するには、ValidationGroup プロパティを設定して、入力コントロールと検証コントロールを同じ論理グループに配置する必要があります。
次の例では、会長に立候補するために学校全体が記入する 4 つの部分からなるフォームについて説明します。ここでは、検証コントロールを使用して、ユーザーが入力した内容を検証します。
デザイン ビューでは次のようになります。
この部分のコードは次のとおりです。
<form id="form1" runat="server"> <table> <tr> <tdcolspan="3" align="center"> <asp:Label ID="lblmsg" Text="大統領選挙フォーム : を選択してください社長" runat="server" /> </td> </tr> <tr> <td> 候補者: </td> <td> <asp:DropDownList ID="ddlcandidate" runat="server" > <asp:ListItem>候補者を選択してください</asp:ListItem> <asp:ListItem>M H カビール</asp:ListItem> <asp:ListItem>スティーブ テイラー</asp:ListItem> <asp:ListItem>ジョン エイブラハム</ asp:ListItem> <asp:ListItem>ヴィーナス ウィリアムズ</asp:ListItem> </asp:DropDownList> </td> <td> <asp:RequiredFieldValidator ID="rfvcandidate" runat="server" ControlToValidate ="ddlcandidate" ErrorMessage="候補を選択してください" InitialValue="候補を選択してください"> </asp:RequiredFieldValidator> </td> </tr> <tr> < td> ハウス: </td> <td> <asp:RadioButtonList ID="rblhouse" runat="server"RepeatLayout="Flow"> <asp:ListItem>赤</asp:ListItem> <asp:ListItem>青</asp:ListItem> <asp:ListItem>黄</asp:ListItem> <asp:ListItem>緑</asp:ListItem> </ asp:RadioButtonList> </td> <td> <asp:RequiredFieldValidator ID="rfvhouse" runat="server" ControlToValidate="rblhouse" ErrorMessage="家の名前を入力してください" > </asp:RequiredFieldValidator> <br /> </td> </tr> <tr> <td> クラス: </td> <td> <asp:TextBox ID="txtclass " runat="server"></asp:TextBox> </td> <td> <asp:RangeValidator ID="rvclass" runat="server" ControlToValidate="txtclass" ErrorMessage="クラスを入力してください (6 - 12)" MaximumValue="12" MinimumValue="6" Type="Integer"> </asp:RangeValidator> </td> </tr> <tr> <td> 電子メール: </td> <td> <asp:TextBox ID="txtemail" runat="server"> </asp:TextBox> </td> <td> <asp: RegularExpressionValidator ID="remail" runat="server" ControlToValidate="txtemail" ErrorMessage="メールアドレスを入力してください" ValidationExpression="w+([-+.']w+)*@w+([ -.]w+)*.w+([-.]w+)*"> </asp: RegularExpressionValidator> </td> </tr> <tr> <td align="center"colspan="3"> <asp:Button ID="btnsubmit" runat="server" onclick="btnsubmit_Click" style="text-align: center" Text= "送信" /> </td> </tr> </table> <asp:Validationsummary ID="Validationsummary1" runat="server" DisplayMode ="BulletList" Showsummary ="true" HeaderText="エラー:" /></form>
送信ボタンのコードは次のとおりです。
protected void btnsubmit_Click(object sender, EventArgs e){ if (Page.IsValid) { lblmsg.Text = "ありがとう" } else { lblmsg.Text = "すべてのフィールドに入力します" ;