更新面板AsyncPostBack和PostBack触发器

时间:2014-09-10 13:50:21

标签: c# javascript jquery asp.net updatepanel

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

现在文件会在点击按钮上传,这会导致POSTBACK,因此所有文本框的公司名称,街道名称,城市客户端等都会丢失,因为它们是由JQuery生成的。

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

现在我有两个问题来自你们: - 如果更新面板的行为与没有更新面板的页面相同,则有什么用? (PostBackTrigger) - 我应该怎么处理上述问题?

CODE:

<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>

2 个答案:

答案 0 :(得分:0)

基本上,FileUpload控件不适用于UpdatePanels。我以前遇到过这个问题,据我所知,没有办法解决这个问题。您只需要接受完整的PostBack并继续保存用户输入。

答案 1 :(得分:0)

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

检查您的.aspx <form>标记是否如下所示:

  

<form id="Form1" method="post" enctype="multipart/form-data" runat="server">

如果它是<form id="Form1" runat="server">之类的未经修饰的标签可能是您的问题。

我在其他地方发现的大多数响应都提到了设置更新触发器,并且是正确的,但如果未正确配置表单标记,则设置触发器是无用的。除了2007年论坛页面之外,没有任何地方提出这个建议。现在效果很好。

我希望这有帮助!