Вот пример кода, который использует RequiredFieldValidator вместе с CustomValidator . Он проверяет оба поля, а также когда происходит сбой одного из них, и отображает сообщения об ошибках в ValidationSummary .
CustomValidator имеет функцию OnServerValidate в коде позади.
Разметка .aspx:
<form id="form1" runat="server">
<div>
<label>Name:</label>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" EnableClientScript="false"
ControlToValidate="TextBox1" ErrorMessage="The 'Name' field cannot be empty!" Text="*" ForeColor="Red"
Display="Dynamic"></asp:RequiredFieldValidator>
<br /><br />
<label>Number:</label>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ValidateEmptyText="true"
ControlToValidate="TextBox2" ErrorMessage="The 'Number' field must be exactly 5 digits!" Text="*" ForeColor="Red"
Display="Dynamic" onservervalidate="CustomValidator1_ServerValidate"></asp:CustomValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" HeaderText="Please check the following fields:" ForeColor="Red" DisplayMode="BulletList" />
<br />
<asp:Button ID="Button1" runat="server" Text="Submit" />
</div>
</form>
и функция проверки в файле .aspx.cs:
protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args)
{
if (args.Value.Length < 5 || args.Value.Length > 5)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}
}
Чтобы можно было отображать оба сообщения об ошибках, а не только RequiredFieldValidator , его свойство 'EnableClientScript' должно иметь значение false.
Надеюсь, это поможет вам решить вашу проблему.