【ASP.NET】Ajax下UpdatePanel和Timer的综合应用

时间:2022-10-07 12:16:50
Ajax框架,主要用于局部区域更新。更新范围小,往返数据量小,没有屏幕抖动,用户体验好。
一般而言,使用在VS2005下使用Ajax框架,需要安装微软公司提供的:ASP.NET 2.0 AJAX Extensions 1.0.msi。在安装后,VS2005编辑器将Ajax框架集成进来,可以建立Ajax环境,主要体现为WebConfig中自动设置其配置。如果是VS2008,不需要安装扩展包,已被自动集成。

使用Ajax框架,必然需要为整个框架环境设置一个脚本管理器(ScriptManager).

ScriptManager控件:
它用来处理页面上的所有组件以及页面局部更新,生成相关的客户端代理脚本以便能够在JavaScript中访问Web Service,所有需要支持ASP.NET AJAXASP.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的更新模式,有两个选项:AlwaysConditionalAlways是不管有没有Trigger,其他控件都将更新该UpdatePanelConditional表示只有当前UpdatePanelTrigger,或ChildrenAsTriggers属性为true时当前UpdatePanel中控件引发的异步回送或者整页回送,或是服务器端调用Update()方法才会引发更新该UpdatePanel

 

与区域设置相关的会使用到UpdateMode属性,当设置其为Conditional,UpdatePanel自成一区域,不会被自动刷新。只有当区域内触发事件、异步回送或者是整页回送时才会刷新。UpdateMode的默认属性为Always,允许被自动刷新。

异步回送例子:
【ASP.NET】Ajax下UpdatePanel和Timer的综合应用< asp:UpdatePanel ID = " UpdatePanel1 "  runat = " server "  UpdateMode = " Conditional " >
【ASP.NET】Ajax下UpdatePanel和Timer的综合应用  
< ContentTemplate >
【ASP.NET】Ajax下UpdatePanel和Timer的综合应用    
< asp:TextBox ID = " TextBox1 "  runat = " server " ></ asp:TextBox >& nbsp;
【ASP.NET】Ajax下UpdatePanel和Timer的综合应用  
</ ContentTemplate >
【ASP.NET】Ajax下UpdatePanel和Timer的综合应用  
< Triggers  >
【ASP.NET】Ajax下UpdatePanel和Timer的综合应用    
< asp:AsyncPostBackTrigger ControlID = " Button1 "   />
【ASP.NET】Ajax下UpdatePanel和Timer的综合应用    
< asp:AsyncPostBackTrigger ControlID = " Button2 " />
【ASP.NET】Ajax下UpdatePanel和Timer的综合应用  
</ Triggers >
【ASP.NET】Ajax下UpdatePanel和Timer的综合应用
</ 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">.