gpt4 book ai didi

c# - ASP.NET Web 表单自定义验证器未触发

转载 作者:可可西里 更新时间:2023-11-01 08:56:52 25 4
gpt4 key购买 nike

我的页面上有一个用于文件上传控件的自定义验证器。

<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 - 如果您想要页面及其代码隐藏的完整源代码,请点击以下链接:

最佳答案

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

编辑 (Chevex) - ControlToValidate 是问题所在,但不是因为它已损坏。默认情况下,它不会触发没有值的控件,如上所述。设置自定义验证器控件属性 ValidateEmptyText="true" 解决了这个问题。遗憾的是我不得不开始这个巨大的问题只是为了找到它,但现在我们知道了! :)

关于c# - ASP.NET Web 表单自定义验证器未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5681243/

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