gpt4 book ai didi

c# - CustomValidator ServerValidate 方法不触发

转载 作者:可可西里 更新时间:2023-11-01 08:55:19 24 4
gpt4 key购买 nike

我在表单上放置了一个 CustomValidator。我还没有设置它的 ControlToValidate 属性。在其 ServerValidate 事件中,我编写了以下内容:

protected void CustomValidator1_ServerValidate(object source,      
ServerValidateEventArgs args)
{
args.IsValid = false;
}

我给这个方法下了一个断点,但它似乎永远不会到达那个点。但如果我在另一种形式上这样做,它就像一个魅力。

  1. 按钮和 CustomValidatorValidationGroup 属性相同
  2. 我尝试在按钮和 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" />

最佳答案

尝试通过 Page.Validate 在按钮单击处理程序中强制执行验证:

protected void Button1_Click(Object sender, EventArgs e)
{
Page.Validate();
if(Page.IsValid)
{
// servervalidate should have been called
}
}

编辑(来自评论):

如果您希望自定义验证器在您的控件中没有输入/选择任何内容时进行验证,您需要设置 ValidateEmptyText为真。您可能还想让 CustomValidator 替换 RequiredFieldValidators

我假设 aspx 上的验证程序顺序决定是否调用 customvalidator 的 severvalidate,如果先前的验证程序已经做出 Page.IsValid=false。或者 ASP.NET 非常聪明,它假定 SeverValidate 比简单的文本为空检查成本更高。

关于c# - CustomValidator ServerValidate 方法不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10172406/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com