2

いくつかの必須フィールド (電子メール、ユーザー名、パスワードなど) 用のテキスト ボックスがあるサインアップ ページがあります。

これらのすべてが空ではなく、これらのいずれかが入力されていない場合にエラー メッセージが 1 つだけ表示されることを検証する方法はありますか? おそらく、これらすべてのフォームに RequiredFieldValidator が必要になることはわかっていますが、すべてのフォームにエラー メッセージがある場合、一般的な「すべての必須フィールドに入力してください」ではなく、失敗した検証ごとにエラー メッセージが表示されるのではないでしょうか。 " メッセージ。

validationgroup でこれを修正できると思いましたが、これらのテキスト ボックスには RequiredFieldValidator 以外の検証が含まれており、1 つのテキスト ボックスを複数の validationGroup に割り当てることはできないと思うので、問題になると思いますか? これを行うためのベストプラクティスの方法はありますか?

ありがとう

4

1 に答える 1

1

ASP.NET Custom Validatorコントロールを使用できます。それを微調整して、任意の数のコントロールにカスタム検証ロジックを持たせることができます。これがあなたが探しているものだと思います。また、クライアント (javascript を使用) および/またはサーバーの両方で入力を検証する機能もあります。

サーバー側の検証を使用した例を示します。これがクライアントでも機能する必要がある場合は、ClientValidationFunctionをご覧ください。

ASPX:

First Name:<br />
<asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox><br />
Last Name:<br />
<asp:TextBox ID="txtLastName" runat="server"></asp:TextBox><br />
Email Address:<br />
<asp:TextBox ID="txtEmailAddress" runat="server"></asp:TextBox><br />
<asp:Button ID="btnSignUp" runat="server" Text="Sign Up" OnClick="SignUp" />&nbsp;
<asp:CustomValidator ID="signUpValidator" runat="server" ErrorMessage="Please fill in all the fields first"
    ForeColor="Red" OnServerValidate="ValidateSignUp"></asp:CustomValidator>

コードビハインド:

protected void ValidateSignUp(object source, ServerValidateEventArgs args)
{
    bool hasFirstName = txtFirstName.Text.Length > 0 ? true : false;
    bool hasLastName = txtLastName.Text.Length > 0 ? true : false;
    bool hasEmail = txtEmailAddress.Text.Length > 0 ? true : false;

    if (hasFirstName && hasLastName && hasEmail)
        args.IsValid = true;
    else
        args.IsValid = false;
}

protected void SignUp(object sender, EventArgs e)
{
    if (Page.IsValid)
    {
        //All the required fields have been filled in, sign the user up
    }   
}
于 2012-12-25T10:40:37.410 に答える