【问题标题】:Update Panel AsyncPostBack and PostBack triggers更新面板 AsyncPostBack 和 PostBack 触发器
【发布时间】:2014-11-04 04:58:58
【问题描述】:

我有一个页面,其中大部分 HTML 是由客户端脚本 (JQuery) 生成的。我添加了一个服务器端 ASP.NET 文件控件来将文件上传到服务器。

现在文件在单击按钮时上传,这会导致 POSTBACK,因此所有文本框 Company Name、Street Name、City Client 等都会丢失,因为它们是由 JQuery 生成的。

我将上传部分放在 UpdatePanel 中并注册了 AsyncPostBack 触发器,但是我没有在代码隐藏处获取 HttpContext 对象。我使用 PostBackTrigger 将 Async 转换为完整的回发,然后事情变得和以前一样(即没有更新面板)。

现在我有两个问题要问你们: - 如果更新面板的行为方式与没有更新面板的页面相同,那么更新面板的用途是什么。 (回传触发器) - 出现上述问题该怎么办?

代码:

<asp:UpdatePanel ID="uploadUpdatePanel" runat="server">
                <ContentTemplate>
                    <input id="fileField" type="file" runat="server" multiple="multiple" />
                    <asp:Button ID="uploadButton" runat="server" Text="Upload Documents" OnClick="uploadButton_Click" />
                 </ContentTemplate>
                <Triggers>
                    <asp:AsyncPostBackTrigger ControlID="uploadButton" />
                    <%--<asp:PostBackTrigger ControlID="uploadButton" />--%>
                </Triggers>
</asp:UpdatePanel>

【问题讨论】:

  • 您必须在回发后重新创建控件。如果它们是在后面的 ASP.NET 代码中动态创建的,答案将是相同的:必须在每次回发时重新创建动态创建的控件。
  • 在这里查看一些代码真的很有帮助。研究使用 AsyncPostBackTriggers
  • @KidBilly 请参阅上面的更新。
  • @Alexander 我不是从后面的代码创建控件,而是通过 JQuery。我无法重新创建它们。其次,用户还在框中填写了一些数据,即使我创建它们,我将如何填写?
  • 嗯,你正在混合两个世界。如果您的控件将在代码隐藏中创建,我可以非常快速地回答这个问题;在每次回发时重新创建,ViewState 有助于保持用户输入。

标签: c# javascript jquery asp.net updatepanel


【解决方案1】:

基本上,FileUpload 控件在 UpdatePanel 中不起作用。我之前遇到过这个问题,据我所知,没有办法解决它。您只需要接受完整的 PostBack 并努力保存用户输入。

【讨论】:

  • 是的,经过大量搜索,我也得出了这个结论。你能建议一种从客户端上传文件的方法吗?我用谷歌搜索但无法实施任何解决方案。我现在正在使用 Jquery/Javascript 实现客户端上传。
【解决方案2】:

我非常不同意 CrazyPaste 关于 UploadFile 控件在更新面板中不起作用的声明。我在这个问题上花了几个小时,终于在 asp.net 论坛上一个不起眼的五年前的帖子上找到了答案。

检查您的 .aspx &lt;form&gt; 标记是否如下所示:

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

如果它是像&lt;form id="Form1" runat="server"&gt; 这样的简单标签,那可能是你的问题。

我在其他地方找到的大多数回复都提到了设置更新触发器,正如你所拥有的,并且是正确的,但是如果你的表单标签配置不正确,那么设置触发器是没有用的。除了 2007 年的论坛页面,没有其他地方提出过这个建议。现在效果很好。

我希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2013-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    • 1970-01-01
    相关资源
    最近更新 更多