You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.net/C#:点击按钮时asp:FileUpload无PostedFiles但页面显示文件名

解决UpdatePanel内按钮无法获取外部FileUpload控件文件的问题

问题根源

UpdatePanel的异步局部回传默认不支持文件上传,且你的FileUpload控件不在UpdatePanel的ContentTemplate范围内,异步回传时浏览器不会将文件数据提交到服务器,导致后台PostedFiles为空。另外Visible="false"会让控件完全不生成HTML,浏览器无法处理文件选择操作,这也是潜在问题点。


解决方案

方案一:让按钮触发全页回传(简单直接)

给UpdatePanel添加PostBackTrigger,指定目标按钮触发全页回传,这样就能正常获取FileUpload的文件数据:

<asp:UpdatePanel ID="UpdatePanel18" runat="server">
    <ContentTemplate>
        <asp:Button runat="server" ID="saveDraftButton" Text="  حفظ بيانات نموذج الإضافة مؤقتاً " OnClick="saveDraftButton_Click" CssClass="btn btn-outline btn-primary btn-lg btn-block" />
    </ContentTemplate>
    <Triggers>
        <asp:PostBackTrigger ControlID="saveDraftButton" />
    </Triggers>
</asp:UpdatePanel>

同时修改FileUpload控件的隐藏方式(用CSS代替Visible="false"):

<asp:FileUpload ID="FileUpload1" AllowMultiple="true" runat="server" Style="display:none;" CssClass="form-control" />

方案二:使用AsyncFileUpload保持局部刷新

如果必须保留局部刷新,改用ASP.NET AJAX Toolkit的AsyncFileUpload控件,它专门支持异步环境下的文件上传:

  1. 确保项目引用ASP.NET AJAX Toolkit
  2. 替换原FileUpload控件:
<ajaxToolkit:AsyncFileUpload ID="AsyncFileUpload1" AllowMultiple="true" runat="server" Style="display:none;" CssClass="form-control" OnUploadedComplete="AsyncFileUpload1_UploadedComplete" />
  1. 在后台通过AsyncFileUpload1_UploadedComplete事件获取文件,按钮点击事件可继续在异步回传中处理其他逻辑。

内容的提问来源于stack exchange,提问作者shahd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 20:52:10