asp.net – AJAX updatepanel给出错误
发布时间:2020-12-16 09:59:37 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用 AJAX UpdateProgress在创建zip文件时显示加载图像但是出现以下错误: Microsoft JScript运行时错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息.此错误的常见原因是通过调用Response.Write(),响应过
我正在尝试使用
AJAX UpdateProgress在创建zip文件时显示加载图像但是出现以下错误:
Microsoft JScript运行时错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息.此错误的常见原因是通过调用Response.Write(),响应过滤器,HttpModules或服务器跟踪来修改响应. Detals:解析’PK’附近时出错. 下面是我的.aspx页面的代码 <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <style type="text/css"> #progressBackgroundFilter { position: fixed; top: 0px; bottom: 0px; left: 0px; right: 0px; overflow: hidden; padding: 0; margin: 0; background-color: #000; filter: alpha(opacity=50); opacity: 0.5; z-index: 1000; } #processMessage { position: fixed; top: 30%; left: 43%; padding: 10px; width: 14%; z-index: 1001; background-color: #fff; border: solid 1px #000; } </style> </head> <body> <form id="form1" runat="server"> <div> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <asp:UpdatePanel ID="UpdatePanel1" runat="server"> <ContentTemplate> <asp:CheckBox ID="chb_pass" runat="server" Text="Do you want the zip file to have a password?" AutoPostBack="True" /> <br /> <asp:TextBox ID="txt_password" runat="server" MaxLength="20" Visible="false" Style="margin-top: 6px" Width="152px"></asp:TextBox> <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txt_password" ErrorMessage="* Need Password!"></asp:RequiredFieldValidator> <br /> <asp:Button ID="btnDownloadPhotos" runat="server" Text="Download Album Photos" Height="27px" Style="margin-top: 3px" Width="284px" /> </ContentTemplate> <Triggers> <asp:AsyncPostBackTrigger ControlID="btnDownloadPhotos" EventName="Click" /> </Triggers> </asp:UpdatePanel> <asp:UpdateProgress ID="UpdateProgress1" runat="server" AssociatedUpdatePanelID="UpdatePanel1"> <ProgressTemplate> <div id="progressBackgroundFilter"> </div> <div id="processMessage"> Preparing download...<br /> <br /> <img alt="Loading" src="img/ajax-loader.gif" /> </div> </ProgressTemplate> </asp:UpdateProgress> </div> </form> </body> </html> …以下是aspx.vb页面的代码 Imports System.IO Imports System.Text Imports Ionic.Zip Partial Class download Inherits System.Web.UI.Page Protected Sub Button1_Click(ByVal sender As Object,ByVal e As System.EventArgs) Handles btnDownloadPhotos.Click Dim PhotoFileList As New List(Of String) Dim uploadDirectory As String = Server.MapPath("") & "uploads" Dim albumName As String = "cricket" PhotoFileList.Add(uploadDirectory & "CIMG1455.JPG") PhotoFileList.Add(uploadDirectory & "CIMG1453.JPG") PhotoFileList.Add(uploadDirectory & "CIMG1451.JPG") PhotoFileList.Add(uploadDirectory & "CIMG1450.JPG") createZip(PhotoFileList,albumName) End Sub Private Sub createZip(ByVal listOfFilename As List(Of String),ByVal albumName As String) ' Tell the browser we're sending a ZIP file! Dim downloadFileName As String = String.Format(albumName & "-{0}.zip",DateTime.Now.ToString("yyyy-MM-dd-HH_mm_ss")) Response.ContentType = "application/zip" Response.AddHeader("Content-Disposition","filename=" & downloadFileName) ' Zip the contents of the selected files Using zip As New ZipFile() 'Add the password protection,if specified If chb_pass.Checked = True Then zip.Password = txt_password.Text 'This encryption is weak! Please see http://cheeso.members.winisp.net/DotNetZipHelp/html/24077057-63cb-ac7e-6be5-697fe9ce37d6.htm for more details zip.Encryption = EncryptionAlgorithm.PkzipWeak End If ' Construct the contents of the README.txt file that will be included in this ZIP Dim readMeMessage As String = String.Format("This ZIP file {0} contains the following photos within the " & albumName & " album:{1}{1}",downloadFileName,Environment.NewLine) ' Add the checked files to the ZIP For Each li As String In listOfFilename.ToArray() ' Record the file that was included in readMeMessage readMeMessage &= String.Concat(vbTab,"* ",li.ToString,Environment.NewLine) ' Now add the file to the ZIP (use a value of "" as the second parameter to put the files in the "root" folder) zip.AddFile(li.ToString,"Your Files") Next ' Add the README.txt file to the ZIP zip.AddEntry("README.txt",readMeMessage,Encoding.ASCII) ' Send the contents of the ZIP back to the output stream zip.Save(Response.OutputStream) End Using End Sub Protected Sub chb_pass_CheckedChanged(ByVal sender As Object,ByVal e As System.EventArgs) Handles chb_pass.CheckedChanged If chb_pass.Checked = True Then txt_password.Visible = True ElseIf chb_pass.Checked = False Then txt_password.Visible = False End If End Sub End Class 我有什么想法可以解决这个问题吗?任何帮助将不胜感激. 谢谢 解决方法
我在过去尝试使用更新面板内的按钮流式传输Excel文档时遇到了类似的问题.这是我的解决方案,希望它有所帮助.
VB.NET: Protected Sub Page_Load(ByVal sender As Object,ByVal e As System.EventArgs) Handles Me.Load Dim sm = ScriptManager.GetCurrent(Me.Page) sm.RegisterPostBackControl(Me.YOUR_BUTTON) AddPostBackTrigger(Me.YOUR_BUTTON.UniqueID.ToString()) End Sub Public Sub AddPostBackTrigger(ByVal ControlId As String) Dim existingTrigger = FindPostBackTrigger(ControlId) If existingTrigger Is Nothing Then Dim trigger As New PostBackTrigger() trigger.ControlID = ControlId Me.YOUR_UPDATE_PANEL_GOES_HERE.Triggers.Add(trigger) End If End Sub Public Sub RemovePostBackTrigger(ByVal ControlId As String) Dim existingTrigger = FindPostBackTrigger(ControlId) If existingTrigger IsNot Nothing Then Me.YOUR_UPDATE_PANEL_GOES_HERE.Triggers.Remove(existingTrigger) End If End Sub Private Function FindPostBackTrigger(ByVal ControlId As String) As PostBackTrigger For Each Trigger In Me.YOUR_UPDATE_PANEL_GOES_HERE.Triggers If Trigger.GetType().Name = "PostBackTrigger" Then Dim pt = CType(Trigger,PostBackTrigger) If pt.ControlID = ControlId Then Return pt End If End If Next Return Nothing End Function C#: protected void Page_Load(object sender,EventArgs e) { ScriptManager sm = ScriptManager.GetCurrent(Page); if (sm != null) sm.RegisterPostBackControl(YOUR_CONTROL); AddPostBackTrigger(YOUR_CONTROL.UniqueID); } private void AddPostBackTrigger(string controlId) { PostBackTrigger existingTrigger = FindPostBackTrigger(controlId); if (existingTrigger != null) { var trigger = new PostBackTrigger {ControlID = controlId}; YOUR_UPDATE_PANEL.Triggers.Add(trigger); } } private PostBackTrigger FindPostBackTrigger(string controlId) { return YOUR_UPDATE_PANEL .Triggers.OfType<PostBackTrigger>() .FirstOrDefault(pt => pt.ControlID == controlId); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-4 – ViewModels或ViewBag?
- 为什么在ASP.NET MVC中使用JsonResult时使用WCF REST?
- nuget-package – 如何创建和使用ASP.NET vNext类库NuGet包
- asp.net-mvc – ASP.NET MVC和Strings不给我编译时错误
- asp.net-mvc – asp.net mvc windows authentication – 以
- asp.net-mvc-4 – DD4T默认路由不起作用
- .netcore 日志记录实现
- asp.net-mvc – 带有owin和Identity的城堡windsor
- 本地化 – 无法在ASP.Net Core应用程序中设置默认和仅文化
- asp.net-mvc-3 – 如何使用剃刀包括.html或.asp文件?
推荐文章
站长推荐
- asp.net-mvc – 如何从我的模型中的kendo编辑器获
- asp.net – 如何自动执行功能/集成测试和数据库回
- asp.net-mvc-3 – MV3复选框的重复查询字符串值(
- asp.net-mvc – 在ASP.NET MVC ContactsManager教
- asp.net-mvc – 使用JWT实现的最小WebAPI2 OAuth
- caching – MVC4 StyleBundle:你能在Debug模式下
- asp.net-mvc – ServiceStack和MVC4没有连线
- SSRS和asp.net – 在报表查看器中将参数从.net传
- 使用ASP.NET Web API作为映像服务
- asp.net文本框 – 客户端textChanged事件不会触发
热点阅读