Che*_*hev 10 c# asp.net validation events webforms
我的页面上有一个自定义验证器,用于文件上传控制.
<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>
Run Code Online (Sandbox Code Playgroud)
然后我还有一个按钮.
<asp:Button ID="btnSubmit" ValidationGroup="EditorValidate" OnClick="btnSubmit_Click" runat="server" Text="Add Vendor Brief" />
Run Code Online (Sandbox Code Playgroud)
我已经定义了我的自定义验证器事件......
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");
}
Run Code Online (Sandbox Code Playgroud)
这个自定义验证器甚至没有被解雇.也许我只是累了,但是一切看起来都不错,所以我很欣赏这种见解.如果我在服务器验证事件中的任何地方删除断点,那么当我单击提交时它不会被点击.我可以在提交按钮的点击事件中点击断点.
有任何想法吗?
编辑 - 忘了在页面上提到我有其他验证控件,比如必需的字段验证器,它们可以正常启动.
编辑2 - 如果您想要页面的完整源代码及其代码隐藏,请遵循以下链接:
如果你看到任何奇怪的东西,请告诉我.我在这里半睡半醒,我希望我只是缺少一些愚蠢的东西.
Jam*_*rgy 20
尝试ControlToValidate完全删除.虽然我以前从未尝试过验证文件上传,但RequiredField如果内容为空,大多数验证器都不会触发(除外).取消控制以进行验证应该始终为该组开火.
编辑(Chevex) - 这ControlToValidate是问题,但不是因为它被打破了.默认情况下,它不会触发没有值的控件,如上所述.设置自定义验证程序控件属性ValidateEmptyText="true"可解决此问题.很遗憾,我不得不开始这个巨大的问题才发现,但现在我们知道了!:)