我有一个注册页面,其中包含几个必填字段的文本框(电子邮件,用户名,密码等)。
有没有办法验证所有这些都不是空的,只有一个错误信息显示如果没有填写任何这些?我知道我可能必须为所有这些表单都有一个RequiredFieldValidator,但是如果它们都有错误消息,那么每次失败的验证都不会显示错误消息,而不仅仅是通用“请填写所有必填字段“消息。
我认为验证组可以解决这个问题,但是除了RequiredFieldValidator之外,这些文本框还有其他验证,我认为这会有问题,因为我认为你不能将一个文本框分配给多个验证组?有最佳实践方法吗?
由于
答案 0 :(得分: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" />
<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
}
}