A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑文 黑马帝   /  2012-8-19 10:12  /  1620 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

    很久没在论坛发过帖子了 ,今天就把最近学习的心得分析一下。简单说明一下错误流程。
         大家都知道用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。
---结束语:往往错误就像代码后面忘记加分号那么简单

2 个回复

倒序浏览
本帖最后由 郑文 于 2012-8-19 10:20 编辑

其实不用反编译Page类,因为我当时要看到具体的实现流程,时间仓促 就写这么多吧
回复 使用道具 举报
本帖最后由 许庭洲 于 2012-8-29 14:19 编辑

值得学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马