使用UpdatePanel后如果在Render中篡改输出的html代码问题解决方案

我想在Render时对页面的所有{}中的内容进行修改替换,当使用了UpdatePanel进行异步回发之后,会报一个这样的错误:

这里我们先重温了一下UpdatePanel的原理:首先ScriptManager和UpdatePanel在服务器端达成一致,截获了Page的Render()方法并在页面上为需要进行异步回送的控件输出了一些专门的JavaScript脚本。然后在客户端,若这些控件通过_doPostBack()函数试图引发整页的回送,则上面提到的JavaScript脚本将截获这个调用,并将页面中各个用户输入的控件的值,加上当前的试图状态 (ViewState)用XMLHttpRequest对象发送服务器。而此时服务器却对此丝毫不知,仍把它当作一次传统的回发,老老实实地引发了一次完整生命周期,并根据回送生成新的页面结构。随后又是在Page的()方法中,ScriptManager和UpdatePanel再次获取了其中的实现过程,把不在UpdatePanel中的内容统统踢出,只发送给客户端震泽更新的部分。最后,客户端的XMLHttpRequest对象收到了这部分信息,并在不知不觉悄悄地更新了UpatePanel中定义的内容。 
所以我想可能是返回给客户端的内容中有保持文件一致性的内容,我们先看一下回发到客户端的html内容

 

ContractedBlock.gif Code

 

开始我以为这个保持一致的内容可能是在后边的viewstate中,经过对起解码(使用这个工具解码)并没发现什么有价值的东西,正在我一筹莫展时,一个兄弟终于揭开了谜团,原来第一个|前的这个数字是回发的字符串长度,就是我们上边那个例子中718,我们篡改内容时必须要重新计算这个数字,把程序改下:

 

ContractedBlock.gif Code

本文转自 你听海是不是在笑 博客园博客,原文链接:http://www.cnblogs.com/nuaalfm/archive/2009/01/23/1380285.html  ,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值