登录
注册
程序人生
个人空间
个人相册
帮助
界面
简洁版本
拼吾爱程序人生
其他编程
Ajax
AJAX开发工具Atlas:实现机制浅析(二)
Web
www.pin5i.com
输入您的搜索字词
提交搜索表单
.Net编程
Asp.Net
C#
ADO.Net
Visual Studio.NET
Silverlight
F#
WCF
WPF
Linq
其他编程
Java
Ajax
javascript
RegExp
XML
Web Service
C & C++
Ruby
Flex
PHP
数据库编程
SQL
SQL Server
Oracle
DB2
MySQL
Other DB
编程应用
软件测试
应用系统
SEO
Google Adsense
建站软件
程序人生
程序人生
社区管理
网站事务
公益活动
管理团队
回收站
1
/ 1 页
1
跳转
页
查看:
1041
AJAX开发工具Atlas:实现机制浅析(二)
Systemjudge
个人空间
相册
性别:
来自:
积分:
6204
帖子:
6032
注册:
2007-04-10
2007-08-06 05:04
|
只看楼主
树型
|
收藏
|
小
中
大
复制帖子链接到剪贴板
1F
AJAX开发工具Atlas:实现机制浅析(二)
UpdatePanel 与局部重绘模式 (Partial Rendering Mode)
在上一节介绍 Altas 整体结构时曾经提到,可以在启用局部重绘模式的情况下,通过通过 <altas:UpdatePanel .../> 标签定义需要异步更新的范围。
我们知道,传统的 HTTP 协议应用场景中,客户端在用户点击 submit 提交 form 的时候,一个 GET/POST 请求被发送到后台服务器;服务器则根据 form 的 action 指定页面,调用相应的处理者返回 HTML 格式的文本;返回结果并最终由客户端在浏览器中绘制,通常导致浏览器一次明显的刷新。
这种模式从 Web 早期的 CGI 一直沿用到现在的 ASP.NET 中。其优点是简单易用且较为成熟,缺点则是刷新明显且速度慢。因为一个页面中可能大多数内容在此次请求中是无需改变的,而这部分冗余的内容在每次请求都会被反复传输。尤其是对一些交互性较强的页面,每个操作都沿用这个冗长的流程,响应速度和负载都是难以容忍的。期间大家也想过很多缓解方法,例如使用 iframe 等嵌入帧封装独立部件,或者在服务器端针对不同区域进行缓存等等,但因为都还是基于这个传统思路,无法从本质上解决问题。
而对遵循 AJAX 思想的 Altas 框架,则是大大迈出一步,真正实现按需出发进行重绘。
首先,页面在定义时可以根据逻辑被分成若干个更新区域,通过 <altas:UpdatePanel .../> 标签直接定义。
其次,Altas 将接管 ASP.NET 客户端的顶级 Post Back 用 form,并针对局部重绘模式加入特定的参数。
然后,Altas 将接管 ASP.NET 服务器端的页面重绘方法。如果是在局部重绘模式下,则对客户端请求进行解析,并判断需要对那些区域进行重绘。可以通过在 UpdatePanel 中指定重绘条件,来避免不必要的重绘操作。
最后,重绘的结果会被封装成 XML 脚本,通过异步的 XMLHTTP 方式传递会客户端。客户端 Altas 引擎对返回内容进行解析后,更新到页面的相应控件上。
整个过程完全由 Altas 自动在后台完成,不会对前台页面造成刷新或其它的影响。
接下来我们来详细了解一下,Altas 是如何完成这一奇妙的功能。
首先,在 ScriptManager 启用局部重绘模式后(ScriptManager.EnablePartialRendering = true),可以通过 UpdatePanel 定义任意多个更新区域,例如:
<atlas:UpdatePanel runat="server" ID="UpdatePanel1">
<ContentTemplate>
<strong><span style="text-decoration: underline">Shipping Address</span>:</strong>
<br />
<asp:Label ID="lblFirstLineShipping" runat="server" Font-Bold="False"></asp:Label><br />
<asp:Label ID="lblSecondLineShipping" runat="server"></asp:Label><br />
<asp:Label ID="lblThirdLineShipping" runat="server"></asp:Label><br />
</ContentTemplate>
</atlas:UpdatePanel>
更新区域的实际内容,在 ContentTemplate 属性定义。UpdatePanel.ContentTemplate 是一个 ITemplate 接口类型的属性。ASP.NET 通过此接口来定义服务端控件与其子控件的关系,定义如下:
[ParseChildren(true), PersistChildren(false)]
public class UpdatePanel : Control
{
[TemplateInstance(TemplateInstance.Single), PersistenceMode(PersistenceMode.InnerProperty)]
public ITemplate ContentTemplate { get; set; }
}
感谢原创者的辛勤劳动,希望对您有所帮助,转载请注明原出处。
您可能对 [Ajax] 的这些文章也感兴趣:
AJAX初体验之上手篇
Ajax / Javascript 框架简介及集合列表
ASP AJAX打造无刷新新闻评论系统
Ajax教程:注册应用
用ASP.NET AJAX框架扩展HTML Map控件
使用javascript和Ajax发出异步请求
Ajax与WCF交互
AJAX开发中XMLHttpRequest有效性问题
asp.net ajax客户端编程+jquery:实现泛型数据的客户端数据调用、添加、删除
利用AJAX J2EE开发组织机构管理系统
发送短消息
查看公共资料
查找该会员全部帖子
UID:
4
精华:
7
威望:
20
金钱:
1632.3 拼元
状态:
离线
<<
上一主题
|
下一主题
>>
1
/ 1 页
1
跳转
页
快速回复帖子
标题
禁用 URL 识别
禁用表情
禁用 Discuz!NT 代码
使用个人签名
default
正在加载表情...
[完成后可按 Ctrl+Enter 无刷新发布]
论坛跳转...
.Net编程
Asp.Net
C#
ADO.Net
Visual Studio.NET
Silverlight
F#
WCF
WPF
Linq
其他编程
Java
Eclipse
Spring
EJB
Ajax
ExtJS
Dojo
javascript
jQuery
RegExp
XML
Web Service
C & C++
Ruby
Flex
PHP
数据库编程
SQL
SQL Server
Oracle
DB2
MySQL
Other DB
编程应用
软件测试
应用系统
SEO
Google Adsense
建站软件
程序人生
程序人生
社区管理
网站事务
公益活动
管理团队
回收站
下载权限不够?五招教你快速提升权限。。。
我的主题
我的帖子
我的精华
我的空间
我的相册
帖子标题
空间日志
相册标题
作 者
我的主题
我的帖子
我的附件
我的精华
我的空间
我的相册