FileUpload.PostedFile在UpdatePanel中始终为null

Ste*_*ven 12 c# asp.net updatepanel file-upload

我在UpdatePanel中有一个FileUpload控件.我已经使用scriptmanager成功注册了上传按钮,以进行完整的回发.我唯一的问题是FileUpload.HasFile总是返回null.注意:当我将更新面板外的FileUpload控件移动时,一切正常.是否有解决方案或解决方法.

谢谢.

rf_*_*son 12

您可以将FileUpload控件放在UpdatePanel中,但是必须使用PostBackTrigger而不是AsyncPostBackTrigger.我最近使用这种方法并结合了两种类型的触发器.

    <Triggers>
        <asp:PostBackTrigger ControlID="btnSave" />
        <asp:AsyncPostBackTrigger ControlID="btnAsyncSave"/>
    </Triggers>
Run Code Online (Sandbox Code Playgroud)

PostBackTrigger用于FileUploads,而AsyncPostBackTrigger用于所有其他表单域.


小智 5

这是一个可以追溯到 MSAjax 1.0 的老问题。FileUpload 控件与更新面板的工作方式和脚本管理器不兼容。文件上传修改数据流导致脚本管理器阻塞。它将起作用的唯一方法是在更新面板之外拥有文件上传控件。如果页面上有其他依赖于文件上传控件的控件,则需要设置添加回发触发器。


Ema*_*eco 5

FileUpload在UpdatePanel中不起作用.您必须使用 ASPNET AJAX控件工具包中的AsyncFileUpload.


当您使用AsyncFileUpload时,您必须在表单标记中设置正确的参数,该标记位于您的Page或MasterPage中:

<form id="form1" runat="server" enctype="multipart/form-data" method="post">
Run Code Online (Sandbox Code Playgroud)

如果没有设置正确的enctype和方法,UploadedComplete将永远不会触发,并且您将无法获取FileUpload.FileBytes,因为FileUpload.HasFile仅在UploadedComplete执行期间返回true.


此外,prevoius版本的AsyncFileUpload在Chrome上不起作用.实际版本(4.1.50731.0)解决了这个问题.