2

我在使用具有 asyncfileupload 控件的 Webusercontrol 时遇到问题。我的 websusercontrol 正在加载到由更新面板包装的占位符控件中。由于异步回发,我必须加载并清除占位符的控件。

webusercontrol 工作完美,除了 asyncfileupload,它根本不想上传。我可以保证代码没有错误,因为我曾经让 webusercontrol 作为 *.aspx 站点运行。

我想问题是必须清除控件并在每次 asyncpostback 时重新加载?

4

1 回答 1

2

我认为一旦将 AsyncFileUpload 控件放在动态加载的自定义用户控件中,就会出现问题。

阅读此链接后,我设法解决了这个问题

基本上,我在父 .​​aspx 页面上放置了一个虚拟 AsyncFileUpload 控件

例如Default.aspx

    <span style="display:none">
        <asp:AsyncFileUpload ID="DummyAsyncFileUpload" runat="server" />
    </span>

请注意,AsyncFileUpload 控件对用户隐藏,但对 ASP.NET 仍然可见。

我的理论是这样的:

为了上传文件,您必须使用不同的编码类型 ( multipart/form-data) 发布表单内容。

当您将 AsyncFileUpload 放在 UpdatePanel 中时,无论出于何种原因,ASP.NET 根本不会设置编码类型,而是将其留空。

例如document.forms[0].enctype = ''

因此,当您发布表单时,它不知道如何处理文件上传。

通过将虚拟 AsyncFileUpload 放置在 Default.aspx 页面上,ASP.NET 检测到 FileUpload 控件的存在,并将相应地设置编码类型。

例如document.forms[0].enctype = 'multipart/form-data'

于 2011-03-01T05:30:02.973 回答