ASP.NET Ajax 调试技巧:用 FireBug 调试 UpdatePanel 不更新问题

今天有一个人询问我 UpdatePanel 不更新的问题,他在 Fiddler 里面已经看到传递的数据了,但是搞不明白为什么没有更新。那么这个时候就要调试到脚本中去,看看到底发生了什么。我用的是 FireBug,情况如下图:

aspnetajax_debug.JPG

图中当前页面引用了两个 ScriptResource.xsd 脚本文件,其内容是系统生成的 js 脚本:

MicrosoftAjax.js
MicrosoftAjaxWebForms.js

在 MicrosoftAjaxWebForms.js 中有下列一些关键代码,可以用 FireBug 在这些地方下断点查看 UpdatePanel 更新的细节过程。

1316行:  updatePanelElement.innerHTML = rendering;

注意这个语句是针对某一个特定的 updatePanel,所以如果回发后有多个 panel 要更新,则会多次跑到这个断点处。


这个语句的调用堆栈大致是:

1087行: this._updatePanel(updatePanelElement, deltaPanelRendering);
859行:     
function Sys$WebForms$PageRequestManager$_onFormSubmitCompleted(sender, eventArgs) {

基本上客户端的问题如果找不到出错原因,从 859行开始单步调试就能搞清楚了。


如果页面不能在 FireFox 中正常呈现,非要用 IE 调试,也是可以的。用 Visual Studio 2005 进入调试状态后,选择菜单里面的 Debug -> Windows -> Script Explorer 就可以看到所有脚本资源了,打开后一样可以下断点。

如下图所示:
aspnetajax_debug_vs.JPG

posted @ 2007-07-26 17:12 木野狐(Neil Chen) 阅读(2159) 评论(10)  编辑 收藏 所属分类: ASP.NET AJAX

  回复  引用    
#1楼 2007-07-26 19:34 | goalbell [未注册用户]
我现在也用firebug来调试js,这个工具不错!
  回复  引用  查看    
#2楼 2007-07-26 22:34 | 狂人      
FireBug支持直接捕获单独的Ajax请求的相关内容的
  回复  引用  查看    
#3楼 2007-07-26 23:52 | Leepy      
不错!挺好用的!
  回复  引用  查看    
#4楼 [楼主]2007-07-26 23:57 | 木野狐      
@狂人
能不能具体介绍一下呢?
  回复  引用  查看    
#5楼 2007-07-27 00:59 | 狂人      
@木野狐
没有什么复杂的内容,FireBug的一个功能,它会监听XMLHTTP,每次在处理一个Ajax请求的时候,都会在FireBug Console里面显示出请求记录,点击可以显示该请求的详细信息,在调试Ajax的时候很有用
  回复  引用  查看    
#6楼 [楼主]2007-07-27 10:09 | 木野狐      
@狂人
试出来了,很有用。

  回复  引用  查看    
#7楼 2007-07-27 11:26 | 赵俊      
还没有会用呢!正在研究................
  回复  引用  查看    
#8楼 2007-07-28 17:54 | 任力      
学习了!以后也来搞搞
  回复  引用  查看    
#9楼 2007-07-30 23:08 | calmzeal      
学习
  回复  引用    
#10楼 2007-08-28 13:23 | GN [未注册用户]
学习了,JS的调试都是很麻烦的

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  博客园首页

  新闻频道

  社区

  小组

  博问

  网摘

  闪存

  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-07-26 17:40 编辑过
成果网帮您增加网站收入


相关链接: