ValidationGroup和验证多个文本框有效c#

本文关键字:有效 文本 验证 ValidationGroup | 更新日期: 2023-09-27 17:49:23

我有一个注册页面,有几个必填字段(电子邮件,用户名,密码等)的文本框。

是否有一种方法来验证所有这些不是空的,只有一个错误消息显示,如果这些没有填写?我知道我可能必须有一个RequiredFieldValidator所有这些表单,但如果他们都有一个错误消息,错误消息不会显示每个失败的验证,而不是只是一个通用的"请填写所有必需的字段"消息。

我认为validationgroup可以解决这个问题,但这些文本框将有其他验证除了RequiredFieldValidator和我认为这将是有问题的,因为我不认为你可以分配一个文本框超过1 validationgroup ?是否有最佳实践方法来做到这一点?

谢谢

ValidationGroup和验证多个文本框有效c#

您可以使用ASP。NET自定义验证器控件。您可以调整它,为任意数量的控件提供自定义验证逻辑,我相信这正是您正在寻找的。它还具有在客户端(通过使用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
    }   
}