你似乎失踪了ControlToValidate
在你的声明中CustomValidator
.
EDIT
如果您的 CustomValidator 聚合了多个控件,请尝试以下操作:
ASPX
<asp:TextBox ID="txtMyTextBox" runat="server" />
<asp:CustomValidator ID="AddressVerification" runat="server"
Display="Dynamic"
ErrorMessage="Please enter a valid address."
OnServerValidate="AddressVerification_ServerValidate"
Text="*"
ValidationGroup="Step2" />
<asp:RequiredFieldValidator ID="rfvAddress" runat="server"
ControlToValidate="txtMyTextBox"
Display="Dynamic"
ErrorMessage="Please enter an address"
Text="*"
ValidationGroup="Step2" />
...
<asp:ValidationSummary ID="ValidatorSummary" runat="server"
ValidationGroup="Step2" />
...
<asp:Button ID="btnCheckAddresses" runat="server"
CausesValidation="true"
Text="Check Addresses"
ValidationGroup="Step2" />
CS
protected void AddressVerification_ServerValidate(object source, ServerValidateEventArgs args) {
args.IsValid = !string.IsNullOrEmpty(txtMyTextBox.Text) && !txtMyTextBox.Text.Contains(' ');
}
请注意,调用回发的控件的验证组有CausesValidation="true"
并且有相同的ValidationGroup
作为验证者。
EDIT 2
如果您的回发控件位于UpdatePanel
但是ValidationSummary
不是,那么部分回发就不会刷新ValidationSummary
。一旦您从UpdatePanel
,我想它会生成一个完整的回发,这将刷新你的ValidationSummary
.
我不知道你的里面还有什么UpdatePanel
, but 许多人报告说他们的验证器存在问题UpdatePanel's http://www.eggheadcafe.com/community/aspnet/7/10060098/validation-is-not-working-in-update-panel.aspx.
查看MSDN http://msdn.microsoft.com/en-us/system.web.ui.webcontrols.validationsummary.aspx,
当您使用 ValidationSummary 时
UpdatePanel 控件内的控件,
确保验证器控制
以及与之关联的控件
位于同一面板中。了解更多
有关使用的信息
部分页面的 UpdatePanel 控件
更新,请参阅部分页面渲染
概述。
还有这个MSDN 博客 http://blogs.msdn.com/b/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx.