【问题标题】:Why does using file upload in a user control with ajax update panel not work?为什么在带有 ajax 更新面板的用户控件中使用文件上传不起作用?
【发布时间】:2015-01-02 13:19:20
【问题描述】:

我正在尝试在我的 Web 应用程序中创建用于上传和下载附件的用户控件。

在我的用户控件中,我使用 asp.net 更新面板来上传和下载文件,并且我在显示样式为无的 <dive>...</dive> 标记中使用我的用户控件。

当我使用这个用户控件时,我正在尝试设置<dive>...</dive> 标记显示样式来显示用户控件,并且我正在使用下面的代码在模式弹出模式下显示这个用户控件:

<ajaxToolkit:ModalPopupExtender ID="ModalPopupExtender" runat="server" CancelControlID="CancelButton" DropShadow="true" PopupControlID="PanelMain" PopupDragHandleControlID="PanelHeader" TargetControlID="btnFileOperation" />

在我的用户控件中,我编写了以下相同的代码:

<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>
            <asp:FileUpload ID="fileUploadImage" runat="server" />
            <asp:Button ID="Button1" runat="server" Text="Upload Image" OnClick="btnUpload2_Click" />
            <br />
            <asp:Label ID="lblMessage" runat="server" Text="Image uploaded successfully." Visible="false"></asp:Label><br />
            <asp:UpdateProgress ID="UpdateProgress1" runat="server"        AssociatedUpdatePanelID="UpdatePanel1">
            <ProgressTemplate>
                    Please wait image is getting uploaded....
            </ProgressTemplate>
            </asp:UpdateProgress>
        </ContentTemplate>
        <Triggers>
            <asp:PostBackTrigger ControlID="btnUpload"  />
        </Triggers>
</asp:UpdatePanel>

但是当我想访问代码中的 FileUpload.PostedFile 或 FileUpload.HasFile 属性时(上传按钮的单击事件),这些属性为空。

这个问题的原因可能是什么?以及如何解决?

【问题讨论】:

  • 将文件上传控制从更新面板中移除。一切都会好起来的
  • 感谢 Amer Zafar。但是这个解决方案是行不通的。

标签: c# asp.net file-upload updatepanel ajaxcontroltoolkit


【解决方案1】:

我在这个问题上花了几个小时,终于在一个五年前的 asp.net 论坛帖子上找到了答案:UpdatePanel + FileUpload + PostBackTrigger doesn't seem to work。简而言之,在我的 site.master 页面上,&lt;form&gt; 标签只是:

&lt;form id="Form1" runat="server"&gt;

2007 年的帖子建议将其更改为:

&lt;form id="Form1" method="post" enctype="multipart/form-data" runat="server"&gt;

效果很好!我不明白为什么,但确实如此。

我在网上找到的大部分答案(包括 StackOverflow 上的几个)都建议简单地为更新面板创建一个回发触发器。没有一个对我有用。在下班前大约五分钟,我在 asp.net 论坛上发现了这个不起眼的页面。最好的感觉之一就是在回家之前解决问题。

希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2014-02-12
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多