说明:对Atlas系列文章的翻译将以先前制定的翻译顺序进行,为了保持原文的味道,翻译过程中尽量保证不做删节。为了保证可读性和连贯性,文中对一些词汇的翻译作了英文注释,由于能力有限,在翻译和学习过程中可能有疏漏和不当之处,还望大家多多指点。总体来说这部分翻译的文章只是一个介绍和概括性的,更详细的部分请参考请他园子里讲解atlas的文章。
原文地址:这里
翻译:范维肖
UpdatePanel Class
作用:将一个页面分成多个区域,每个区域都可以在不重新刷新整个页面的前提下更新其内容(局部回发)
语法:
当页面的一部分在回发后需要改变时,通常整个页面都需要刷新,UpdatePanel解决了这个问题,通过UpdatePanel我们可以使用部分更新(patial update)通过更多的频繁多回发来减少屏幕的闪烁(整个页面刷新时会造成screen flicker),同时可以使得您创建更具有交互能力的web应用程序。
当您在开发一个asp.net页时使用部分更新(partial rendering)时,这个页面看起来和普通的没有什么区别。不同之处在于这个页面里包含了一个ScriptManager控件,它用作管理部分更新。这使得页面上的各个UpdatePanel可以独立工作,互不影响。当然,您也可以把UpdatePanel控件放到User Control里或者Master里去用。
当使用部分更新(partial-rendering)时,控件能执行原始的整页回发(regular postback)或使用单独的UpdatePanel的异步回发(asynchronous poskback),如果允许异步回发,将控件放如UpdatePanel里就能使用这个功能了。所有在UpdatePanel以外的控件都将导致整页回发,但是这里有几个例外情况:
1. 像TimerControl这样的没有用户界面的组件。
2. 注册到ScriptManager.RegisterAsyncPostBackControl方法的控件
3. 被连接到UpdatePanel的触发器(triggers)的控件
这三种情况下的控件始终进行部分回发。
为了使得页面的某些部分可以更新,您需要把ScriptManager控件加入到您的页面并且设置它的partialRedering属性为true。然后使用UpdatePanel控件把页面分成可以独立更新的区域,同时指定一个引起这些区域刷新的触发条件。更新区域的内容可以在UpdatePanel中的ContentTemplate里描述。
当页面第一次被加载(render)时,UpdatePanel控件的内容被渲染并且发送到客户端。当回发被触发时,每个UpdatePanel的Mode属性指明了这个UpdatePanel是总是被回发还是在触发器控制下回发。当Mode被设置为Always的时候,这个UpdatePanel将会在任何一次回发触发时回发,当Mode被设置为Conditional的时候,这个UpdatePanel只会在下面的情况发生时回发:
1. 当连接到这个UpdatePanel的触发器(trigger)触发时
2. 当您强制调用Update方法时
Triggers集合的内容指定了可以引起UpdatePanel回发的事件。您可以使用ControlValueTrigger对象使得当一个控件的值改变时回发,同时您还可以使用ControlEventTrigger对象使得当一个控件的特定事件被触发时引起回发。
RenderMode属性有两个值,分别为Inline和Block,他们会分别将这个UpdatePanel渲染成<span>和<div>标记。
IsUpdating属性是只读的,bool类型,用来判断UpdatePanel是否作为异步回发的一部分正在更新。它为true的条件是:
1.在部分回发模式下当前请求正在被执行
2.当一个客户端触发器被触发
3.Update方法被执行
在服务器端,异步回发所引起的页面生命周期时间和普通的回发是一样的,只不过UpdatePanel里的内容需要被更新而被送到了浏览器而已。
注意:
1.不能把文件上传控件放入UpdatePanel里,因为数据的传输与部分页面更新相冲突。
2.ContentTemplate被定义为一个单实例模板(single instance template)
UpdatePanel的声明语法:
附加:UpdatePanel如果放入User Control或MasterPage里的话,一定要注意ScriptManager的问题。此外,UpdatePanel的嵌套问题要注意Mode的设置和在读取IsUpdating属性时的取值问题。
原文地址:这里
翻译:范维肖
UpdatePanel Class
作用:将一个页面分成多个区域,每个区域都可以在不重新刷新整个页面的前提下更新其内容(局部回发)
语法:
Public Class UpdatePanel:Control
备注:当页面的一部分在回发后需要改变时,通常整个页面都需要刷新,UpdatePanel解决了这个问题,通过UpdatePanel我们可以使用部分更新(patial update)通过更多的频繁多回发来减少屏幕的闪烁(整个页面刷新时会造成screen flicker),同时可以使得您创建更具有交互能力的web应用程序。
当您在开发一个asp.net页时使用部分更新(partial rendering)时,这个页面看起来和普通的没有什么区别。不同之处在于这个页面里包含了一个ScriptManager控件,它用作管理部分更新。这使得页面上的各个UpdatePanel可以独立工作,互不影响。当然,您也可以把UpdatePanel控件放到User Control里或者Master里去用。
当使用部分更新(partial-rendering)时,控件能执行原始的整页回发(regular postback)或使用单独的UpdatePanel的异步回发(asynchronous poskback),如果允许异步回发,将控件放如UpdatePanel里就能使用这个功能了。所有在UpdatePanel以外的控件都将导致整页回发,但是这里有几个例外情况:
1. 像TimerControl这样的没有用户界面的组件。
2. 注册到ScriptManager.RegisterAsyncPostBackControl方法的控件
3. 被连接到UpdatePanel的触发器(triggers)的控件
这三种情况下的控件始终进行部分回发。
为了使得页面的某些部分可以更新,您需要把ScriptManager控件加入到您的页面并且设置它的partialRedering属性为true。然后使用UpdatePanel控件把页面分成可以独立更新的区域,同时指定一个引起这些区域刷新的触发条件。更新区域的内容可以在UpdatePanel中的ContentTemplate里描述。
当页面第一次被加载(render)时,UpdatePanel控件的内容被渲染并且发送到客户端。当回发被触发时,每个UpdatePanel的Mode属性指明了这个UpdatePanel是总是被回发还是在触发器控制下回发。当Mode被设置为Always的时候,这个UpdatePanel将会在任何一次回发触发时回发,当Mode被设置为Conditional的时候,这个UpdatePanel只会在下面的情况发生时回发:
1. 当连接到这个UpdatePanel的触发器(trigger)触发时
2. 当您强制调用Update方法时
Triggers集合的内容指定了可以引起UpdatePanel回发的事件。您可以使用ControlValueTrigger对象使得当一个控件的值改变时回发,同时您还可以使用ControlEventTrigger对象使得当一个控件的特定事件被触发时引起回发。
RenderMode属性有两个值,分别为Inline和Block,他们会分别将这个UpdatePanel渲染成<span>和<div>标记。
IsUpdating属性是只读的,bool类型,用来判断UpdatePanel是否作为异步回发的一部分正在更新。它为true的条件是:
1.在部分回发模式下当前请求正在被执行
2.当一个客户端触发器被触发
3.Update方法被执行
在服务器端,异步回发所引起的页面生命周期时间和普通的回发是一样的,只不过UpdatePanel里的内容需要被更新而被送到了浏览器而已。
注意:
1.不能把文件上传控件放入UpdatePanel里,因为数据的传输与部分页面更新相冲突。
2.ContentTemplate被定义为一个单实例模板(single instance template)
UpdatePanel的声明语法:
1 <atlas:UpdatePanel
2 ID="string"
3 Mode="Always|Conditional"
4 RenderMode="Block|Inline"
5 runat="server"
6 >
7 <ContentTemplate>
8 <!-- UpdatePanel content -->
9 </ContentTemplate>
10 <Triggers>
11 <ControlValueTrigger
12 ControlID="string"
13 PropertyName="string"
14 />
15 <ControlEventTrigger
16 ControlID="string"
17 EventName="string"
18 />
19 </Triggers>
20 </atlas:UpdatePanel>
2 ID="string"
3 Mode="Always|Conditional"
4 RenderMode="Block|Inline"
5 runat="server"
6 >
7 <ContentTemplate>
8 <!-- UpdatePanel content -->
9 </ContentTemplate>
10 <Triggers>
11 <ControlValueTrigger
12 ControlID="string"
13 PropertyName="string"
14 />
15 <ControlEventTrigger
16 ControlID="string"
17 EventName="string"
18 />
19 </Triggers>
20 </atlas:UpdatePanel>
附加:UpdatePanel如果放入User Control或MasterPage里的话,一定要注意ScriptManager的问题。此外,UpdatePanel的嵌套问题要注意Mode的设置和在读取IsUpdating属性时的取值问题。