C# CustomValidator ServerValidate方法未激发
我在表格上放了一个C# CustomValidator ServerValidate方法未激发,c#,asp.net,customvalidator,C#,Asp.net,Customvalidator,我在表格上放了一个CustomValidator。我没有将其控件设置为validate属性。在其ServerValidate事件中,我编写了以下内容: protected void CustomValidator1_ServerValidate(object source, ServerValidateEventArgs args) { args.IsValid = false; }
CustomValidator
。我没有将其控件设置为validate
属性。在其ServerValidate
事件中,我编写了以下内容:
protected void CustomValidator1_ServerValidate(object source,
ServerValidateEventArgs args)
{
args.IsValid = false;
}
我给这个方法设置了一个断点,但它似乎永远不会到达那个点。但如果我用另一种形式做这件事,它就像一个符咒
ValidationGroup
属性和CustomValidator
属性相同CustomValidator
中删除此属性,但仍然不起作用CustomValidator
,除了设置它的ServerValidate
事件方法之外,我不去碰它的任何属性
编辑:以下是aspx部分:
<asp:CustomValidator ID="CustomValidator2" runat="server"
ErrorMessage="This is a test"
onservervalidate="CustomValidator1_ServerValidate"
ValidationGroup="PA"></asp:CustomValidator>
<asp:Button ID="btnPensionersOK" runat="server" Text="OK" Width="75px"
onclick="Button1_Click" ValidationGroup="PA" />
尝试通过以下方式在按钮单击处理程序中强制验证: 编辑(来自评论): 如果希望customvalidator在控件中未输入/选择任何内容时进行验证,则需要设置为true。您还可能希望让
CustomValidator
替换RequiredFieldValidator
我假设aspx上的验证器顺序决定了如果以前的验证器已经创建了
Page.IsValid=false
,是否调用customvalidator的severvalidate。或者ASP.NET非常聪明,它假设SeverValidate
比简单的文本检查更昂贵。我还想为同时使用CustomValidator和RequiredFieldValidator的用户提供更多帮助。应该考虑到客户端验证首先发生。服务器端验证将仅在回发后进行。我相信您已经理解了,但为了以防万一,这还不是很清楚:这意味着首先,绑定到某些客户端工作验证器的所有控件都必须有效,才能进行回发。在第页之后。IsValid是真正的服务器端内容,它会发生并发回包含服务器端验证消息的任何更改
因此,以下是可以使CustomvCalidator和其他内置验证器同时工作的方法:
但是其他验证器是如何工作的呢?我有几个相同表单上的RequiredFieldValidator,但它们工作正常。再一次,我在另一个表单上做了完全相同的事情,没有问题,它验证了。问题是ServerValidate方法没有启动。@MikeJM:我不知道。您是否正在回发页面加载中进行数据绑定?您正在调用其他地方的
Page.Validate()
?您是否有任何javascript错误?RequiredFieldValidator是否阻止回发?是的,我正在加载页面中进行数据绑定,但不是在回发中。我从不在任何其他地方调用Page.validate()。我没有收到任何javascript错误。RequiredFieldValidator阻止回发。它正在发回。@MikeJM:你检查过ServerValidate
是否在Page.Validate()
?谢谢大家,ValidateEmptyText帮助了我)
protected void Button1_Click(Object sender, EventArgs e)
{
Page.Validate();
if(Page.IsValid)
{
// servervalidate should have been called
}
}