ajax1.0框架的使用体会

 偶的感觉这个框架还是挺傻瓜式的,总的说来,偶的方法是先做好页面和后台逻辑,然后把该刷新的部分用UpdatePanel框架一套就OK了.

内部的实现机制还不太清楚,但就偶的观察,尽管是局部刷新,但是如同整体刷新一样,整个后台流程,从page_load到事件处理,一样也没有少.只不过返回客户端的代码是有选择性的.

外部表现在IE6.0和IE7.0中的表现很有差别. IE6.0中的局部刷新还是看得见明显的闪动现象,即还是如同整体刷新一样的先清除再重画的过程,只是范围小一些罢了.而IE7.0中的表现就强很多,基本没有闪动. FireFox没有测试.不过从FireFox以往的表现,估计应该和IE7类似.

这个框架也要求客户端的机器不能太破了,特别是在用IE6.0的情况下,机器越好,闪动现象就越不明显.网速也要求高,因为局部提交和服务器的交互,并不比整页提交少多少数据.我在一个客户公司的IE6,赛扬2.6G,768M内存的机器上测试,都不太连贯.

在应用了ajax框架以后,asp.net面向事件驱动的编程机制就更有用武之地了.某些场合可以大胆启用一些以前不敢用的控件的AutoPostBack,比如说文本框的TextChanged事件.在设计操作界面时也要注意,由于刷新太快,可能要注意给用户一个醒目的提示显示操作成功了,要不然有时用户根本没感觉,这样优点反而成了缺点.但千万不要用alert()之类的对话框,不要干扰用户的正常操作.

另外输入焦点定位也要尽量友好,个人认为这非常重要,很多人都忽视了这一点.特别是那些大数据量输入的场合,可以省却用户很多操作.
比如TextBox的TextChaged事件之后,要自动定位到下一个控件方便用户继续输入,但原有的asp.net自带的方法TextBox.Focus()已经没有效果,这时很多人都不知道怎么办了. 其实可以用ScriptManager1.SetFocus(控件ID)的方法来重新定位焦点.ScriptMangager1是你页面上那个必不可少的ScriptManger控件的ID. 如果是在ScriptManager在母版页里怎么办呢,可以用((ScriptManager)Page.Master.FindControl("ScriptManager1")).SetFocus(控件ID)的方法来强行找到这个控件调用.这样不管是在哪里都可以用了.当然这样写很烦,你可以把它包装成一个公共类的方法放在App_Code里.当然也有其他方法,我认为这是最简单有效的.

这个框架秉承微软一贯的易学易用风格,但是也有不足之处就是资源消耗太多,企业级应用是非常好的,个人认为不适合在公共网站上大量使用.

我先抛砖引玉,大家有什么好的建议或技巧,也可以拿来分享一下.
比如我现在有这样的问题:
1)ajaxcontrolextender有一种冒泡提示的控件,可是总是显示在文本框的右边,有什么办法让它显示在左边?
2)同上,有一种自动完成的autocompleteExtender控件,总是显示在文本框下面,有什么办法让它显示在文本框的上边?

猜你喜欢

转载自blog.csdn.net/bwangel/article/details/1899771