剑气潇潇的BLOG

——天空才是我的极限
  博客园  :: 首页  :: 联系 :: 订阅 订阅  :: 管理

Atlas&Ajax——Vs2005

Posted on 2006-08-26 11:38  剑气潇潇  阅读(487)  评论(0)    收藏  举报
Atlas确实是个好东西,可以用简单的方法扩展asp.net在客户端开发方面的功能。并且Atlas有微软的支持,相信其以后的发展值得大家期待。
但目前使用来说,仍有不少地方需要改进:
以我目前遇到的情况来说,
第一个问题————
假如我有一个Repeater显示数据列表,有一个分页控件需要显示分页情况,如果需要无刷新显示列表内容,我需要把分页控件的点击事件添加到UpdatePanel的<Triggers>中。
而如果列表刷新,分页控件的当前页数等信息也需要跟着刷新,所以我必须把这个分页控件也加入到UpdatePanel中的<ContentTemplate>中。
问题就在这里,UpdatePanel的<Triggers>事件是找不到UpdatePanel中的<ContentTemplate>中的控件的事件的(这句话读起来有点拗口),我的解决办法比较笨,先将分页控件放在UpdatePanel外面,等添加完UpdatePanel的<Triggers>事件后,再把这个分页控件也加入到UpdatePanel中的<ContentTemplate>中。
无刷新问题解决,而问题又随之出现,这样页面有时会无法切换到视图状态,提示加载<Triggers>失败。对于普通样式编辑在代码中可以直接完成;但是对于拖放服务器控件,在代码中完成未免效率太低了。
最终如何解决:先将分页控件放在UpdatePanel外面,等添加完UpdatePanel的<Triggers>事件后,再把这个分页控件也加入到UpdatePanel中的<ContentTemplate>中(如果直接在代码中编辑则没有这么麻烦),然后将<Triggers>中的这行代码剪切出来,等项目发布的时候再拷贝进去。
以上是第一个问题,解决方法比较麻烦,或许有更高的解决办法,但是我认为最好的解决办法还是Atlas本身。

第二个问题————
如果MultiView中有多个View,在一个View中用UpdatePanel没有问题,如果在另外一个View中再拖放一个UpdatePanel,那么在一切设置好,执行页面的时候,页面会没有任何反应,如果设置了 UpdateProgress,则会一直停留在“数据处理中...”。
第三个问题————
这个问题与Atlas无关,与Ajax有关。就是无刷新到底提倡不提倡使用,在何时使用。
个人见解是在网站建设中可以任意使用,在行业软件开发中则需要谨慎使用。
为何在网站建设中可以随便使用,原因有二:一是网站需要无刷新,因为网站数据交互不大(大部分都是页面信息),更讲究的是视觉的效果,二是网站用无刷新不会影响太大工作量,因为网站开发工作量少,而二次开发的机会更少,业务逻辑相对简单,用ajax开发不会影响太大工作量。
而在行业软件开发中,业务逻辑往往会令人头晕脑涨,页面上的各种视图状态,而ajax是不会刷新整个页面的,除非将页面上的所有地方都做无刷新,那工作量很难想象,而一个刷新,一组定义就可以解决的事情,用ajax可能要花费半天的时间。另外,可能客户的一个修改意见将会使你的前期努力都白费。

总结:好象很多人都喜欢总结,可见总结还是很用用处的,那么我也在此做个总结。
        使用Ajax需要谨慎,个人认为在页面耗时比较长,并且功能相对简单的地方用一下也无妨,比如导入数据,文件上传,确实是一种很好的体验。很多情况下,有程序的地方,客户更多的是看重程序实现的功能,而编程不是做秀。