方法 : ASP.NET サーバー コントロールの固有の値を検証する
更新 : 2007 年 11 月
ASP.NET 検証コントロールを使用して、論理演算子を使ってユーザーの入力を特定の値に対して検証できます。たとえば、ユーザーの入力が 1950 年 1 月 1 日より後の日付であるように指定したり、ゼロ以上の整数であるように指定したりできます。または、ユーザーの入力をほかのコントロールの値と比較するように指定できます。
セキュリティに関するメモ : |
---|
ASP.NET Web ページでのユーザー入力には、悪意のあるクライアントのスクリプトが含まれている可能性があります。詳細については、「スクリプトによる攻略の概要」を参照してください。 |
特定の値に対して検証するには
CompareValidator コントロールをページに追加し、次のプロパティを設定します。
プロパティ
説明
ユーザーが必ず値を入力する必要があるコントロールの ID。
ユーザーがコントロールをスキップした場合に表示される 1 つ以上のエラーのテキストと位置を指定するプロパティ。詳細については、「方法 : ASP.NET サーバー コントロールに対する検証エラー メッセージの表示を制御する」を参照してください。
次のプロパティを設定して、比較する値を設定します。
プロパティ
説明
または
文字列として入力された式です。定数値と比較する場合は、ValueToCompare プロパティを設定します。別のコントロールの値と比較する場合は、ControlToCompare プロパティをそのコントロールの ID に設定します (CompareValidator コントロールは、比較先のコントロールの ValidationPropertyAttribute で指定されているどのプロパティに対してもユーザー入力を比較します)。ValueToCompare と ControlToCompare の両方を設定した場合は、ControlToCompare が優先されます。
比較する 2 つの値のデータ型です。型は、ValidationDataType 列挙型を使用して指定され、型名として String、Integer、Double、Date、または Currency を使用できます。比較を行う前に、値がこの型に変換されます。詳細については、「方法 : ASP.NET サーバー コントロールのデータ型を検証する」を参照してください。
使用する比較演算子です。ValidationCompareOperator 列挙型で定義される以下の値の 1 つを使用して演算子を指定します。
メモ : 他のコントロールに対して検証を行う場合、そのコントロールの値が無効な場合は無視され、検証は合格となります。詳細については、「ASP.NET サーバー コントロールに対する特別な場合の検証結果」を参照してください。
コードにテストを追加して、有効性を確認します。詳細については、「方法 : ASP.NET サーバー コントロールの有効性をプログラムでテストする」を参照してください。
CompareValidator コントロールを使用して検証される TextBox コントロールのコード例を次に示します。
<table> <tr> <td> <asp:Textbox id="txtAge" runat="server"></asp:Textbox> </td> <td> <asp:CompareValidator id="CompareFieldValidator1" runat="server" ForeColor="Red" ControlToValidate="txtAge" ValueToCompare="0" Type="Integer" Operator="GreaterThanEqual" ErrorMessage="Please enter a whole number zero or greater."> </asp:CompareValidator > </td> </tr> </table>
<table> <tr> <td> <asp:Textbox id="txtAge" runat="server"></asp:Textbox> </td> <td> <asp:CompareValidator id="CompareFieldValidator1" runat="server" ForeColor="Red" ControlToValidate="txtAge" ValueToCompare="0" Type="Integer" Operator="GreaterThanEqual" ErrorMessage="Please enter a whole number zero or greater."> </asp:CompareValidator > </td> </tr> </table>
ユーザーの入力を他のコントロールの値と比較する CompareValidator のコード例を次に示します。このページで、ユーザーはホテルの予約を取ることができます。ユーザーが到着日より早い出発日を入力していないことを検証コントロールがチェックします。実際のアプリケーションでは、到着日は必須フィールドであり、日付であることも検証されます。
<table> <tr> <td> Arrive<asp:Textbox id="txtArrivalDate" runat="server"></asp:Textbox> Depart<asp:Textbox id="txtDepartureDate" runat="server"></asp:Textbox> </td> <td> <asp:CompareValidator id="CompareValidator1" runat="server" ForeColor="Red" ControlToValidate="txtDepartureDate" ControlToCompare="txtArrivalDate" Type="Date" Operator="GreaterThanEqual" ErrorMessage="Departure date cannot be earlier than arrival date."> </asp:CompareValidator > </td> </tr> </table>
<table> <tr> <td> Arrive<asp:Textbox id="txtArrivalDate" runat="server"></asp:Textbox> Depart<asp:Textbox id="txtDepartureDate" runat="server"></asp:Textbox> </td> <td> <asp:CompareValidator id="CompareValidator1" runat="server" ForeColor="Red" ControlToValidate="txtDepartureDate" ControlToCompare="txtArrivalDate" Type="Date" Operator="GreaterThanEqual" ErrorMessage="Departure date cannot be earlier than arrival date."> </asp:CompareValidator > </td> </tr> </table>