【问题标题】:FileUpload with Custom Validator带有自定义验证器的文件上传
【发布时间】:2023-04-04 02:27:02
【问题描述】:

正在由自定义验证器验证的文件上传存在问题。文本框值始终为空或 null onververvalidate。

ASPX

<asp:CustomValidator ID="cvFileUpload" runat="server" 
                ErrorMessage="Please select file!" ControlToValidate="fuCheatingEvidence" 
                onservervalidate="cvFileUpload_ServerValidate" 
                ValidationGroup="vgSubmitForm" ValidateEmptyText="True"></asp:CustomValidator>
            <asp:FileUpload ID="fuCheatingEvidence" runat="server" 
                 Width="890px" Size="50" />

代码隐藏

protected void cvFileUpload_ServerValidate(object source, ServerValidateEventArgs args)
{
    String fileName = fuCheatingEvidence.PostedFile.FileName;

    if (fileName != "")
    {
        args.IsValid = true;

    }
    else
    {
        args.IsValid = false;
    }

}

这只是一个简单的检查 FileUpload 控件是否为空,稍后我将添加更多自定义验证。

【问题讨论】:

  • 我也使用了 if(fuCheatEvidence.HasFile) 但即使 FileUpload 控件上有一个文件,它也会返回 false。

标签: c# asp.net


【解决方案1】:

我检查了您的代码,它运行良好。
添加文件时,我同时得到 hasFilefileName

protected void cvFileUpload_ServerValidate(object source, ServerValidateEventArgs args)
{
    bool hasFile = fuCheatingEvidence.HasFile; // Returns true
    String fileName = fuCheatingEvidence.PostedFile.FileName; // Returns the filename
     .....
}

这让我相信您的代码中还有其他部分导致了问题。我建议只使用FileUploadCustomValidator 创建一个辅助项目,并亲自看看它是否有效。然后,尝试找出导致主项目出现问题的原因。如果您仍有问题,请针对您遇到的实际问题提出另一个问题。

【讨论】:

  • 谢谢,我认为导致问题的原因是我在整个页面的一小部分有一个 UpdatePanel,但我将 UpdatePanel 设置为 UpdateMode="Conditional"。因此,我所做的修复是将所有内容封装在 UpdatePanel 中,并添加一个触发器来执行完全自动回发。但是,我认为 UpdatePanels 中的 FileUpload 控件存在问题。
猜你喜欢
  • 2013-05-29
  • 2016-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-08
  • 1970-01-01
  • 2023-03-30
  • 2011-03-26
相关资源
最近更新 更多