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