2014-09-10 54 views
0

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

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

我把上传部分放在UpdatePanel中,并注册了AsyncPostBack触发器,但后来我没有在代码隐藏中获取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> 
+0

回发后您必须重新创建控件。如果它们在后面的ASP.NET代码中动态创建,则答案将是相同的:动态创建的控件必须在每次回发时重新创建。 – Alexander 2014-09-10 13:53:32

+0

这真的有助于在这里看到一些代码。 看看使用AsyncPostBackTriggers – CrazyPaste 2014-09-10 14:01:06

+0

@KidBilly请参阅上面的更新。 – FreshDev 2014-09-10 14:13:23

回答

0

基本上的FileUpload控件不在UpdatePanel的工作。我之前遇到过这个问题,据我所知,这是无法解决的。你只需要接受一个完整的PostBack并且保存用户输入。

+0

是的,经过大量的搜索后,我也得出了这个结论。你能提出一种从客户端上传文件的方法吗?我已使用Google搜索,但无法实施任何解决方案。我现在正在使用Jquery/Javascript实现客户端上传。 – FreshDev 2014-09-10 15:26:04

0

我会恭敬地不同意CrazyPaste的声明,即UploadFile控件在更新面板中不起作用。我在这个问题上花了好几个小时,终于在asp.net论坛上找到了一个不太出名的五年前的帖子。看到

检查您的.aspx <form>标签如下所示:

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

如果是喜欢<form id="Form1" runat="server">一个朴实的标记,这可能是你的问题。

我在其他地方发现的大多数回复都提到了设置更新触发器的方法,因为它是正确的,但如果表单标签配置不正确,则设置触发器将毫无用处。这个建议没有任何地方,除了2007年的论坛页面。它现在很好用。

我希望这有助于!