我有一个页面,其中大部分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>
答案 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年论坛页面之外,没有任何地方提出这个建议。现在效果很好。
我希望这有帮助!