【问题标题】:ASP.NET Issue with File Upload Control文件上传控件的 ASP.NET 问题
【发布时间】:2012-07-17 14:04:04
【问题描述】:

我在尝试使用 ASP.NET 文件上传控件时遇到了困难。 发生的事情是,当我从后面的代码中调用文件上传控件时,我总是得到 FileUploadControl.HasFile = false。 我进行了一些研究并尝试了不同的方法,但无济于事。该控件用于以下场景: 该控件包含在一个 div 中,该 div 将通过 JQuery 作为弹出对话框调用。与文件上传控件一起,还有两个链接按钮,它们将操作上述控件(从文件导入 XML 并进行操作)。

谢谢。

下面是我的代码示例。

<asp:scriptmanager id="ScriptManager1" runat="server">
    </asp:scriptmanager>
<div style="text-align: center; margin-left: auto; margin-right: auto">
    <asp:fileupload id="FileUploadControl" runat="server" />
    <asp:updatepanel runat="server">
                <ContentTemplate>                    
                    &nbsp;
                    <asp:LinkButton ID="Append" runat="server" Text="Append" OnClick="Append_Click"></asp:LinkButton>
                    &nbsp;
                    <asp:LinkButton ID="Overwrite" runat="server" Text="Overwrite" OnClick="Overwrite_Click"></asp:LinkButton>
                </ContentTemplate>
                <Triggers>
                    <asp:PostBackTrigger ControlID="Append" />
                    <asp:PostBackTrigger ControlID="Overwrite" />
                </Triggers>
            </asp:updatepanel>
</div>

【问题讨论】:

  • Afaik 文件上传无法使用 AJAX 脚本管理器编写脚本。您将不得不寻找不同的解决方案。问题是,现在可以使用 Javascript 上传文件,但这不包含在当前的 ASP.NET 脚本管理器中。你将不得不做一个完整的回发。这意味着您的页面将被完全重新加载。
  • 您是否希望在单击UpdatePanel 中的按钮时上传文件?
  • freefaller,这是我放在后面的代码。 if (FileUploadControl.HasFile) { try { XDocument 文档 = XDocument.Load(FileUploadControl.FileContent); //代码 } }
  • 也许这可能是你的问题:stackoverflow.com/questions/2264541/…
  • 我现在明白了,PostBackTrigger 应该执行完整的回发而不是异步回发。但是你的 ASPX 在这里看起来如何,你可以完全摆脱它。删除 ScriptPanel 和 ScriptManager 以及触发器,我们会看到。

标签: c# asp.net .net visual-studio-2010 updatepanel


【解决方案1】:

您需要删除UpdatePanel。您无法在部分回发时上传文件,并且如果您在 UpdatePanel 中的所有内容触发文件上传,则不需要:

<div style="text-align: center; margin-left: auto; margin-right: auto">
    <asp:fileupload id="FileUploadControl" runat="server" /> 
        &nbsp;
        <asp:LinkButton ID="Append" runat="server" Text="Append" OnClick="Append_Click"></asp:LinkButton>
        &nbsp;
        <asp:LinkButton ID="Overwrite" runat="server" Text="Overwrite" OnClick="Overwrite_Click"></asp:LinkButton>
</div>

注意:UpdatePanel 开发的一般提示。如果您遇到任何没有意义的奇怪现象,请删除 UpdatePanel 并测试您的代码。根据您的页面/控件复杂性,UpdatePanel 有很多限制。

【讨论】:

  • 我已经尝试过您刚刚发布的确切代码。它仍然不起作用。此外,我在 page_load 中插入了以下代码行,但没有成功。 ` Page.Form.Attributes.Add("enctype", "multipart/form-data"); `
  • 谢谢,以上解决了我的问题。我无法让它工作的原因是因为我有一些代码无法正常运行并干扰了控件。 (JQuery 对话框)。一旦我修复它就像一个魅力。
猜你喜欢
  • 2011-05-01
  • 2017-11-26
  • 2018-07-28
  • 2011-09-29
  • 1970-01-01
  • 2012-11-14
  • 2011-03-27
  • 1970-01-01
  • 2011-08-16
相关资源
最近更新 更多