2009-10-12 84 views
11

我们有一个使用AJAX的Sharepoint解决方案。触发它的按钮位于更新面板内。如何解决错误:无法解析从服务器收到的消息

我们所做的一件事就是生成一个MS Word文档,然后在客户端打开它以便打印。

该文档发送到客户端的代码如下所示:

void OpenFileInWord(byte[] data) 
    { 
     Response.Clear(); 
     Response.AddHeader("Content-Type", "application/msword"); 
     Response.BinaryWrite(data); 
     Response.Flush(); 
     Response.End(); 
    } 

,我们得到的是错误:

Message: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled. Details: Error parsing near '<?mso-application pr'.

我们可以将文档保存在Sharepoint第一,然后从Sharepoint打开它,但我们不希望这样做。

回答

17

导致此代码执行的操作必须是回发事件,而不是AJAX调用。

这是由于处理AJAX请求的方式的性质。

1

在您的按钮上单击,重定向到另一个页面,该页面可以流式传输您可能想要执行此类操作的任何文件。我们在许多站点中使用document.aspx页面,然后通过querystring传递文档ID并从那里传输文件。

在你的榜样,你基本上试图改变标题为已在被显示的页面这是不允许的

+0

'在你的榜样,你基本上试图改变标题为包括已经显示一个网页,其中不允许“。这是允许的,不需要一个单独的页面。 – 2012-12-28 07:17:05

6

让您的按钮更新面板之外。然后它工作正常。

28

如果你在updatepanel中有按钮,这可能会导致这种情况,如果不想移动它,只需在updatepanel上添加一个按钮触发器,一个回发触发器。

+0

很好的答案。我的问题得到解决。感谢您的建议。 – 2013-01-20 05:52:31

+0

我的问题也解决了,非常感谢! – MBahamondes 2015-12-17 13:27:17

0

我删除了按钮周围的更新面板,它工作正常。

+0

这个问题已经有了一个解决方案,不需要对应用程序进行任何重大的体系结构更改。 – 2012-10-28 17:41:04

1

对我来说问题是在网格视图的模板列中出现重复控件ID。一旦我将控件重新命名为独特的网格,问题就消失了!

1

尝试增加脚本管理器在你的页面加载,这样的:

((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport); 
1

我有一个asp:UpdatePanel控件:一个asp内表的控制。 该表有一些静态行,并在 回发事件期间添加了一些行。

发生此错误是因为表的行和列没有 具有静态ID。因此ID在每次回发时都会更改,这会导致为表恢复ViewState的问题 。

为了制止这种错误我的表禁用ViewState的:的EnableViewState =“假”

<asp:Table ID="PageContentTable" runat="server" ... EnableViewState="false">

相关问题