黑马程序员技术交流社区
标题:
分享学习帖
[打印本页]
作者:
郑文
时间:
2012-8-19 10:12
标题:
分享学习帖
很久没在论坛发过帖子了 ,今天就把最近学习的心得分析一下。简单说明一下错误流程。
大家都知道
用RegisterClientScriptBlock向客户端输出JS脚本是非常好用的方法,但是前几天突然不管用了,我的需求是: A为搜索页面 B为显示页面(不能直接访问,否则弹出经过信息)。B页面采用Repeater显示结果信息。但当我直接访问B页面JS对话框却弹不出,开始我以为是viewsate的问题,因为我页面全部禁用了viewsate,开启以后还是不管用,后来看到RegisterClientScriptBlock的所在的Page类,经过反编译Page类 我发现有个字段需要传入客户端的Form信息,用VS调试以后发现值却为空 后来我想到了是不是这个方法必须在runat="server"的form中使用,然后加上这个属性就解决了。
原来为了页面干净,我删除了runat="server" 。其实即使页面禁用viewsate 如果在form标签加上runat="server" 则会在页面生成一小段默认的viewsate。然后
RegisterClientScriptBlock再其后面渲染客户端脚本,我猜估计是我删除了
runat="server"
asp.net引擎找不到了id="
__VIEWSTATE“的位置
也就无法渲染脚本
。
所以要使用RegisterClientScriptBlock 必须在form 中加上中runat="server“
通过这个简单的小错误分析过程提醒大家:遇到错误不要慌,要尝试自己分析解答,我看到很多人遇到问题就把一大堆的代码直接扔到QQ群里,问怎么回事(说后面往往加一句:”求高手解答“)。其实问题没我们想象的那么复杂,人都害怕犯错,遇到恐惧心理是正常的,但只要你认真分析错误,答案就在你眼前。我们要培养我们分析解决问题的能力,一步步的开始,尝试自己解决几个错误自然就有了自信,况且我们还有百度和google。
---结束语:往往错误就像代码后面忘记加分号那么简单
作者:
郑文
时间:
2012-8-19 10:16
本帖最后由 郑文 于 2012-8-19 10:20 编辑
其实不用反编译Page类,因为我当时要看到具体的实现流程,时间仓促 就写这么多吧
作者:
许庭洲
时间:
2012-8-19 13:28
本帖最后由 许庭洲 于 2012-8-29 14:19 编辑
值得学习!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2