一般而言,使用在VS2005下使用Ajax框架,需要安装微软公司提供的:ASP.NET 2.0 AJAX Extensions 1.0.msi。在安装后,VS2005编辑器将Ajax框架集成进来,可以建立Ajax环境,主要体现为WebConfig中自动设置其配置。如果是VS2008,不需要安装扩展包,已被自动集成。
使用Ajax框架,必然需要为整个框架环境设置一个脚本管理器(ScriptManager).
ScriptManager控件:
它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAX的ASP.NET页面上有且只能有一个ScriptManager控件。在ScriptManager控件中我们可以指定需要的脚本库,或者指定通过JS来调用的Web Service,还可以指定页面错误处理等。
主要属性和方法:
属性/方法 |
描述 |
AllowCustomError |
和Web.config中的自定义错误配置区<customErrors>相联系,是否使用它,默认值为true |
AsyncPostBackErrorMessage |
异步回传发生错误时的自定义提示错误信息 |
AsyncPostBackTimeout |
异步回传时超时限制,默认值为90,单位为秒 |
EnablePartialRendering |
是否支持页面的局部更新,默认值为True,一般不需要修改 |
ScriptMode |
指定ScriptManager发送到客户端的脚本的模式,有四种模式:Auto,Inherit,Debug,Release,默认值为Auto |
ScriptPath |
设置所有的脚本块的根目录,作为全局属性,包括自定义的脚本块或者引用第三方的脚本块。如果在Scripts中的<asp:ScriptReference/>标签中设置了Path属性,它将覆盖该属性。 |
OnAsyncPostBackError |
异步回传发生异常时的服务端处理函数,在这里可以捕获一场信息并作相应的处理。 |
OnResolveScriptReference |
指定ResolveScriptReference事件的服务器端处理函数,在该函数中可以修改某一条脚本的相关信息如路径、版本等。 |
与区域设置相关的会使用到EnablePartialRendering属性,当设置为True时,表示仅对UpdatePanel区域范围内的部分刷新。如果设置为False,对整个页面刷新。
UpdatePanel控件:
属于Ajax框架中的控件,主要用于规划和配置更新区域。
重要的属性如下:
属性 |
说明 |
ChildrenAsTriggers |
当UpdateMode属性为Conditional时,UpdatePanel中的子控件的异步回送是否会引发UpdatePanle的更新。 |
RenderMode |
表示UpdatePanel最终呈现的HTML元素。Block(默认)表示<div>,Inline表示<span> |
UpdateMode |
表示UpdatePanel的更新模式,有两个选项:Always和Conditional。Always是不管有没有Trigger,其他控件都将更新该UpdatePanel,Conditional表示只有当前UpdatePanel的Trigger,或ChildrenAsTriggers属性为true时当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel |
异步回送例子:
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</ContentTemplate>
<Triggers >
<asp:AsyncPostBackTrigger ControlID="Button1" />
<asp:AsyncPostBackTrigger ControlID="Button2"/>
</Triggers>
</asp:UpdatePanel>
Timer控件:
Timer控件是一个定时器控件。可以设定以特定时间规律触发。
主要的属性:
Enabled 是否启用。属性值: true 启用,false 停用。
EnableViewState是否自动保存其状态以用于往返过程。
Interval 用于定义触发间隔时间。单位是毫秒:1000毫秒=1秒
主要事件:
Tick 当到达间隔触发时间后,自动触发的事件。
-----------------------------------------------------------------------------------------------------------------------
使用技巧:
Timer放在不同的区域,其应用的范围是不一样的。
如果放在所有的UpdatePanel外,那么是整个页面的刷新。类似于F5。
如果是将Timer放在UpdatePanel内,当ScriptManager控件没有设置EnablePartialRendering属性或者将其设置True时,那么仅在特定时间对所有的UpdatePanel区域刷新。当EnablePartialRendering设置为false时,对整个页面刷新。
最常用,将1个Timer放入任意一个愿意接受自动刷新的UpdatePanel中.
如果Updatepanel不想被其他影响,可以设置UpdateMode属性为Conditional.
如果涉及到Master页,且内容区域(contentplaceholder)被放在UpdatePanel内,那么内容区域都受其最外层环境影响。
注意:
在调试时,发现程序在更新时容易报回调时错误,可以做以下设置避免这此情况的发生。在页面<page>中设置ValidateRequest="false",在发布环境下,可以设置web.config中的<compilation debug="false">.