未捕获的Sys.WebForms.PageRequestManagerParserErrorException:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息。
点击下载按钮时出现此错误。
ASPX.cs
<asp:UpdatePanel runat="server" ID="UpdatePanelContent" UpdateMode="Conditional">
<Triggers>
<asp:PostBackTrigger ControlID="btnupload" />
</Triggers>
<ContentTemplate>
<asp:FileUpload runat="server" ID="FileUpload1" value="Upload" />
<asp:Button ID="btnupload" runat="server" OnClick="button1_click" Text="Upload"></asp:Button>
<%-- <asp:LinkButton ID="OnLnkDownload" runat="server" OnClick="OnLnkDownload_Click" Font-Underline="False">Download</asp:LinkButton>--%>
</ContentTemplate>
</asp:UpdatePanel>
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" EmptyDataText="No files uploaded">
<Columns>
<asp:BoundField DataField="Text" HeaderText="File Name" />
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkDownload" Text="Download" CommandArgument='<%# Eval("Value") %>' runat="server" OnClick="DownloadFile"></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton ID="lnkDelete" Text="Delete" CommandArgument='<%# Eval("Value") %>' runat="server" OnClick="DeleteFile" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
背后的代码
Protected Sub DownloadFile(ByVal sender As Object, ByVal e As EventArgs)
Dim filePath As String = CType(sender, LinkButton).CommandArgument
Response.ContentType = ContentType
Response.AppendHeader("Content-Disposition", ("attachment; filename=" + Path.GetFileName(filePath)))
Response.WriteFile(filePath)
Response.End()
End Sub
请帮助我出错的地方?
答案 0 :(得分:0)
使您的下载按钮成为HttpHandler的真正链接,而不是LinkButton。现在,您的更新面板会尝试将客户端JavaScript中的文件响应解析为HTML或其他内容。即使它有效,它仍然不如实际链接到该文件的专用URL。
为此,您需要在项目中添加HttpHanler。您将文件下载的代码放在处理程序的ProcessRequest方法中。
Response.ContentType = ContentType
Response.AppendHeader("Content-Disposition", ("attachment; filename=" + Path.GetFileName(filePath)))
Response.WriteFile(filePath)
Response.End()
现在传递你在URL中传递它们的参数说/MyHandler.ashx?filePath=someFile并使用QueryString属性而不是CommandArgument。例如QueryString [&#34; filePath&#34;]。请注意,处理程序应检查适用的权限(如果适用)。在您的页面中,您使用HyperLink控件并将NavigateUrl设置为指向处理程序的URL。您可以单独测试两个部件。首先通过在浏览器中键入URL来使Handler工作并进行测试,然后在页面中为HyperLink生成正确的URL。