【问题标题】:ValidationGroup and validating multiple textbox efficiently asp c#ValidationGroup和有效地验证多个文本框asp c#
【发布时间】:2012-12-25 01:05:45
【问题描述】:

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

有没有办法验证所有这些都不是空的,如果其中任何一个没有填写,只会显示一个错误消息?我知道我可能必须为所有这些表单设置一个RequiredFieldValidator,但是如果它们都有错误消息,那么每个失败的验证都不会显示错误消息,而不仅仅是一个通用的“请填写所有必填字段"消息。

我认为validationgroup 可以解决这个问题,但是除了RequiredFieldValidator 之外,这些文本框还有其他验证,我认为这会有问题,因为我认为您不能将一个文本框分配给超过1 个validationGroup?有没有最佳实践方法来做到这一点?

谢谢

【问题讨论】:

标签: c# asp.net validation


【解决方案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
    }   
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-23
    • 2011-09-18
    • 1970-01-01
    相关资源
    最近更新 更多