ASP.NET Web窗体自定义验证器不会触发
|
我的页面上有一个自定义验证器,用于文件上传控件。
<asp:FileUpload ID=\"fuVendorBrief\" runat=\"server\" />
<br />
<asp:CustomValidator ID=\"cvVendorBriefFile\" Display=\"Dynamic\" runat=\"server\" ValidationGroup=\"EditorValidate\" ControlToValidate=\"fuVendorBrief\" OnServerValidate=\"cvVendorBriefFile_ServerValidate\" ErrorMessage=\"You must upload a vendor brief PDF file.\">
</asp:CustomValidator>
然后,我还有一个按钮。
<asp:Button ID=\"btnSubmit\" ValidationGroup=\"EditorValidate\" OnClick=\"btnSubmit_Click\" runat=\"server\" Text=\"Add Vendor Brief\" />
我已经定义了我的自定义验证器事件,如下所示:
protected void cvVendorBriefFile_ServerValidate(object source, ServerValidateEventArgs args)
{
CustomValidator fileUploadValidator = (CustomValidator)source;
FileUpload vendorBriefFileUpload = (FileUpload)fileUploadValidator.Parent.FindControl(fileUploadValidator.ControlToValidate);
args.IsValid = vendorBriefFileUpload.HasFile && vendorBriefFileUpload.FileName.ToLower().EndsWith(\".pdf\");
}
这个自定义验证器甚至没有被解雇。也许我只是累了,但是一切对我来说似乎都还不错,所以很感激。如果在服务器验证事件中的任何地方放置断点,则在单击“提交”时不会击中该断点。但是,我可以在“提交”按钮的单击事件中达到断点。
有任何想法吗?
编辑-忘了提一下,我在页面上还有其他验证控件,例如必填字段验证器,它们可以很好地触发。
编辑2-如果您想要页面及其代码的完整源,请遵循以下链接:
ASPX
CS
让我知道您是否发现任何异常。我在这里睡着了一半,希望我只是想念一些愚蠢的东西。
没有找到相关结果
已邀请:
5 个回复
迪擅哨乘傅
。尽管我以前从未尝试过验证文件上传,但是如果内容为空,大多数验证器都不会触发((4除外)。取消控制以进行验证应使其始终针对该组触发。 编辑(Chevex)-
是问题,但不是因为它已损坏。默认情况下,它不会在没有值的控件上触发,如上所述。设置自定义验证程序控件属性“ 6”可以解决此问题。不幸的是,我不得不开始这个巨大的问题才发现这一点,但是现在我们知道了! :)
校勒魏寡
括宠
属性,并阻止了验证的触发。在正常的页面加载中,直到页面生命周期的后期,我才使控件可见。 无论如何,如果您在
方法上设置断点,则可以检查ѭ10ѭ集合,看看是否可能发生类似的事情。
久坡
。
爆刺疤灯
?