最近在使用ajax的时候经常出现下面的问题:
Sys.WebForms.PageRequestManagerParserErrorException:The message received from the server
count 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 '|0|hiddenField|_EVENTTRAGE'
经过排查,发现是AJAX和多语言起了冲突,只要不再UpdatePanel里的代码都没问题,出问题的就是UpdatePanel里面只要一进行无刷新操作就报错,因为涉及到多语言,所以页面要经过翻译再回发,可能是在回发的时候AJAX判断回发内容有所改变所以才会报错,在网上找了下解决方法,几乎搜索到的都是这样的方法:
在用Response.Redirect()或Response.Write()进行URL带参数的页面重定向时出现如题所示的错误。Ajax是无刷新的,而使用Response进行带参重定向时需要刷新页面。所以只须在UpdatePanel下设置“asp:PostBackTrigger”的“ControlID”为指定的控件名称即可,如:
<Triggers>
<asp:PostBackTrigger ControlID="btnSave" />
</Triggers>
我想说的是,这个方法虽然可以解决报错问题,可是页面也变成全页刷新了,那样的话跟我不用AJAX有什么区别呢 ?
在此想请教各位有经验的朋友遇到这个问题一般是怎么处理的 ???
Sys.WebForms.PageRequestManagerParserErrorException:The message received from the server
count 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 '|0|hiddenField|_EVENTTRAGE'
经过排查,发现是AJAX和多语言起了冲突,只要不再UpdatePanel里的代码都没问题,出问题的就是UpdatePanel里面只要一进行无刷新操作就报错,因为涉及到多语言,所以页面要经过翻译再回发,可能是在回发的时候AJAX判断回发内容有所改变所以才会报错,在网上找了下解决方法,几乎搜索到的都是这样的方法:
在用Response.Redirect()或Response.Write()进行URL带参数的页面重定向时出现如题所示的错误。Ajax是无刷新的,而使用Response进行带参重定向时需要刷新页面。所以只须在UpdatePanel下设置“asp:PostBackTrigger”的“ControlID”为指定的控件名称即可,如:
<Triggers>
<asp:PostBackTrigger ControlID="btnSave" />
</Triggers>
我想说的是,这个方法虽然可以解决报错问题,可是页面也变成全页刷新了,那样的话跟我不用AJAX有什么区别呢 ?
在此想请教各位有经验的朋友遇到这个问题一般是怎么处理的 ???
解决方案 »
- 用在csdn上下载的ABCpdf.dll生成pdf的时候报license的错
- ASP.NET WEB窗体里怎么弹出文件处理框 ????类似WINFORM窗体的OpenFileDialog ,SaveFileDialog ???????
- 我在1024*768分辨下做的ASPX页,但是在别人的1280*1024液晶显示器上,原来的页面布局变了,这个怎么处理.后有说明.....
- 在web.config里,如何写数据库链接语句
- asp.net写一个计数器,记录网站总访问量,今日访问量(c#)好的追加分啊
- 高分请教:如何把全角的数字(比如8)转换成半角的数字(比如8)
- 求asp.net+C#+SQl2000论坛设计思路
- 两个页面间的刷新问题
- 要实现这个逻辑图,我要了解一些什么知识啊。请大神们给个方向...
- 求timer控件源代码
- 吴旗娃的分页控件怎么换成有背景图片的格式??
- 使用option,input怎么给后台赋值?
页面里加个这个看看
EnableEventValidation="false"
protected override void Render(HtmlTextWriter writer)
{
try
{
StringWriter stringWriter = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter, string.Empty);
base.Render(htmlWriter); Response.Clear(); String stringOutput = stringWriter.ToString();
//对页面进行翻译并输出
stringOutput = LanguageHelper.TranslateString(stringOutput);
//错误就是在下面输出的时候发生
Response.Write(stringOutput);
return;
}
catch
{
base.Render(writer);
}
}
在网上也看到很多方法提示不要用Response.Write输出,改用ScriptManager.RegisterStartupScript(this.UpdatePanel1, this.GetType(), "updateScript", "alert('对不起,账号和密码错误');", true); 这样的方式来输出。问题是我这个方法是在父类里面,几乎所有的页面都继承了父类,我怎么可能传控件进去