【问题标题】:Unable to upload photo asynchronously with FileUpload control using UpdatePanel无法使用 UpdatePanel 通过 FileUpload 控件异步上传照片
【发布时间】:2014-10-10 16:51:57
【问题描述】:

在我的 ASP.NET Web 表单应用程序中,我添加了一个上传文件的功能,但我不想进行完整的回发。因此,为了使其异步,我想到了使用 UpdatePanel。 此 UpdatePanel 包含一个 FileUpload 控件和一个用于上传所选照片的​​按钮。当我在调试代码以检测文件是否被实际选中时,我发现 FileUpload 的 HasFile 属性为 false。

当我删除 UpdatePanel 时它可以工作,但我不明白为什么。

为了帮助你理解,下面是代码:

ASPX 标记:

<asp:UpdatePanel ID="UPProf" runat="server">
<ContentTemplate>
<asp:FileUpload ID="FUDP" runat="server" />
<asp:Button ID="BUDP" runat="server" OnClick="BUDP_Click" Text="Upload your photo" />
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger ControlID="BUDP" EventName="Click" />
</Triggers>
</asp:UpdatePanel>

这是它的 CS 代码:

protected void BUDP_Click(object sender, EventArgs e)
{
    try
    {
        if (FUDP.HasFile)  //  code doesn't pass this if condition
        {
            FUDP.SaveAs("D:/Pictures/" + count + ".jpeg");  //it doesn't work since there is no file here
        }
        else
        {
           //Set some message for user
        }
    }
    catch (Exception ex)
    {
        //log the error
    }
}

【问题讨论】:

    标签: c# asp.net .net file-upload asp.net-ajax


    【解决方案1】:

    上传需要整页请求。这是所有 AJAX 框架中用于异步调用应用程序的 XmlHttpRequest 组件的限制。

    删除 UpdatePanel 或制作 BUDP 按钮以执行回发。

    <asp:UpdatePanel ID="UPProf" runat="server">
       <ContentTemplate>
          <asp:FileUpload ID="FUDP" runat="server" />
          <asp:Button ID="BUDP" runat="server" OnClick="BUDP_Click" 
              Text="Upload your photo" />
       </ContentTemplate>
       <Triggers>
          <asp:PostBackTrigger ControlID="BUDP" />
       </Triggers>
    </asp:UpdatePanel>
    

    【讨论】:

    • 哦,UpdatePanel 的危险!
    • 刷新页面,它起作用了。谢谢。我不想让它刷新。还有什么建议吗?再次感谢。
    • @AKshayRaut 有很多第三方组件。你可以试试AsyncFileUpload。我用telerik
    • 您能否发布一个用于 Ajax 和/或异步文件上传的示例代码和标记?
    猜你喜欢
    • 2013-11-17
    • 1970-01-01
    • 2017-03-30
    • 2021-07-02
    • 2018-12-14
    • 2019-02-07
    • 2012-05-30
    • 1970-01-01
    • 2011-11-01
    相关资源
    最近更新 更多