加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ASP.NET Web窗体自定义验证器未触发

发布时间:2020-12-15 04:09:04 所属栏目:百科 来源:网络整理
导读:我的页面上有一个自定义验证器,用于文件上传控件. asp:FileUpload ID="fuVendorBrief" runat="server" /br /asp:CustomValidator ID="cvVendorBriefFile" Display="Dynamic" runat="server" ValidationGroup="EditorValidate" ControlToValidate="fuVendorBr
我的页面上有一个自定义验证器,用于文件上传控件.
<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

让我知道,如果你看到任何奇怪的东西.我在这里睡了一半,我希望我只是想念一些愚蠢的东西.

解决方法

尝试完全删除ControlToValidate.虽然我以前从未尝试验证文件上传,但如果内容为空,大多数验证器将不会触发(RequiredField除外).脱离控制进行验证,应该使其始终为该组开火.

编辑(Chevex) – ControlToValidate是问题,但不是因为它被打破了.如上所述,默认情况下它不会在没有值的控件上触发.设置自定义验证器控件属性ValidateEmptyText =“true”可以解决问题.悲伤的是,我不得不开始这个巨大的问题,只是为了找到,但现在我们知道!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读