一、前言
打开工具箱的Ajax extensions可以看到五个ajax控件,在vs2008中它们已经集成到了.net framerwork3.5中,如果是之前版本的vs则需要自己去下载文件来安装。这五个控件在ajax中是非常常用的,所以微软才将他们集成到vs中来,下面将简单的介绍着五个控件及它们的重要属性。
二、重中之重——ScriptManager
看名字就知道,着家伙肯定是个领导,如果你真的这么想,那你就太聪明了,如果要使用asp.net ajax的话,每个页面都必须“有且只有一个”ScriptManager,因为它是用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service。你说它重要不重要,没有它其它都白扯。下面介绍下它的主要属性:
1) <Services>属性,可以通过其下的<asp:ServiceReference Path="xx.asmx" />来关联web服务
2) AsyncPostBackTimeout异步回传时的超时限制,默认为90秒,如果设为0则表示无限制
3) 其它的属性还有很多,随便看看吧,需要用时能想起就好了
三、狐假虎威?NO,代理人——ScriptManagerProxy
有ScriptManager不就够了吗?为什么还要ScriptManager的代理呢?呵呵,这时因为母板页存在的原因,因为每个使用asp.net ajax的页面都必须“有且只有一个”ScriptManager,而如果这个页面是继承母板页而来,并且母板页中也有一个ScriptManager的话,就必须在页面中使用这个ScriptManagerProxy控件了,它的使用方法和ScriptManager一样。
四、傻瓜控件——UpdatePanel
只要你使用它你就会爱上它,最开始用它时你会觉得,ajax原来如此简单,实在没有比这更傻瓜的控件了,因为你只要将控件拖动到UpdatePanel中,就可以按普通的方法编写ajax效果的代码了。
UpdatePanel可以用来创建丰富的局部更新Web应用程序,它是ASP.NET 2.0 AJAX Extensions中很重要的一个控件,其强大之处在于不用编写任何客户端脚本,只要在一个页面上添加几个UpdatePanel控件和一个ScriptManager控件就可以自动实现局部更新。
重要属性:
1) ChildrenAsTriggers:当UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle的更新。
2) UpdateMode:表示UpdatePanel的更新模式,有两个选项:Always和Conditional。
i. Always是不管有没有Trigger,其他控件都将更新该UpdatePanel(这个我试过好像不是这样,但教程中这样说,我不知道是不是版本的原因,试一下就知道了)
ii. Conditional表示只有当前UpdatePanel的Trigger,或ChildrenAsTriggers属性为true时当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel。
这个看起来比较复杂,如果页面中只有一个Updatepanel,使用Always就不会出什么问题,但是如果一个页面中有多个Updatepanel的话就必须使用Conditional,并且需要将ScriptManage的EnablePartialRendering设置为true。
3) Triggers——触发器:在ASP.NET AJAX中有两种Triggers:分别为AsyncPostBackTrigger和PostBackTrigger。
i. AsyncPostBackTrigge用来指定某个服务器端控件以及其将触发的服务器端事件作为该UpdatePanel的异步更新触发器,它需要设置的属性有控件ID和服务端控件的事件
ii. PostBackTrigger用来指定在UpdatePanel中的某个服务端控件,它所引发的回送不使用异步回送,而仍然是传统的整页回送
注意:Updatepanel可能和某些控件结合使用可能会出现未知的异常,所以请注意。
五、进度条容器——UpdateProgress
数据更新有快有慢,当请求从客户端发出后到服务器端接收到并响应结果到客户端的时间如果比较长的话,给用户一个进度条是最好的选择,因为这样可以使用户知道自己的等待的是有意义的,而不会为了某个奇怪的错误浪费时间等待不可能有需要的结果出来的这种结果。UpdateProgress就是这样的控件,只需要设置AssociatedUpdatePanelID来确定它是关联那个UpdatePanel就可以了。
六、时钟——Timer
如果需要定时刷新的话,那么Timer控件是不二之选,而且使用也非常简单,只要设置Interval属性即刷新的间隔时间——以毫秒为单位,然后双击Timer控件编写代码即可。