频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

深入剖析微软ASP.NET Ajax中的数据绑定架构上篇之二(3)

作者: 朱先忠 出处:51CTO.com  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2007-06-25 15:20
关 键 词:ASP.NET Ajax  ASP.NET  Ajax  绑定  数据  微软
阅读提示:在本系列文章中,作者详细剖析微软ASP.NET Ajax 1.0框架的客户端数据绑定架构部分所涉及的关键技术。在本篇(上篇)中,我们将主要从理论角度来探讨这个框架的数据绑定架构并给出一个简单示例实现。

在此,有几点需要强调一下:

①必须在ScriptManager控件下添加对必要的.asmx及.js文件的参考;
②我们定义了若干span和div HTML元素以作为MS AJAX客户端控件—ListView的占位符。如前所述,ListView提供有好几个有用的模板—layoutTemplate,itemTemplate,separatorTemplate,emptyTemplate,和一个必要的属性—itemTemplateParentElementId(指定temTemplate和separatorTemplate的父元素;通过这种方式,该itemTemplate和separatorTemplate相关联的元素都可以在其中反复生成);
③接下来,我们进行了声明性编程(在下篇中再详细讨论它)。为了实现把从web服务端返回的数据显示于ListView控件中,我们必须使用DataSource控件来指定这个服务的URL;
④我们定义了一个ListView框架,相应的模板对应于它们各自的HTML对应元素;
⑤在步骤④中,我们还建立了对web服务内的属性的绑定;
⑥最后,细心的读者应该还会注意到,我们在此使用声明性方式来调用按钮的点击事件处理器,它又进一步调用DataSource控件BooksDataSource的load方法。

2、创建一个Web服务

接下来,我们将使用声明性方式写一个web服务以便从浏览器端消费它。在本例中,我们让该服务返回一个Book对象数组。

右击工程并选择“添加新项”,然后创建一个新的Web服务,并命名为为BookDataService.asmx。然后,在文件BookDataService.cs中,我们要编写我们的WebMethod—GetTitles。下面的列表5展示了其中重要的代码片断:

列表5

using System.Collections.Generic;
using System.ComponentModel;
…………
using System.Data;
using System.Web.Script.Services;
using Microsoft.Web.Preview.Services;

[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[ScriptService]
public class BookDataService : DataService
{

public BookDataService()
{
//InitializeComponent();
}
[DataObjectMethod(DataObjectMethodType.Select)]
public Book[] GetTitles()
{
List _data = new List();
_data.Add(new Book("Hello,this is Title 1"));
_data.Add(new Book("Hello,this is Title 2"));
_data.Add(new Book("Hello,this is Title 3"));
_data.Add(new Book("Hello,this is Title 4"));

return _data.ToArray();
}
public class Book
{
private string _title;
public Book(){}
[DataObjectField(true)]
public string Title
{
get { return _title; }
set { _title = value; }
}
public Book(string title)
{
_title = title;
}
}
}

在此,有几点需要强调一下:

①根据有关资料,我们必须把属性ScriptService置于这个Web服务之前,这样才会使MS AJAX框架能够从客户端对它进行调用;
②我们令这个web服务派生自一个有些特殊的WebService—DataService,我们将在下篇中来讨论它;
③还要注意方法GetTitles前面使用一个特别的属性DataObjectMethod(定义于命名空间System.ComponentModel中)进行了修饰。这个属性含有两个参数—第一个是DataObjectMethodType,允许你指出是否此方法用于删除,插入,选择,填充或更新一个项;第二个属性(一个boolean值)用于指示是否某个方法是相应于它的操作类型的缺省方法。
④在此,还出现了另一个属性—DataObjectField。这个属性使用了三个参数以允许你指定:是否该属性是一个主键和一个自动增量值,它的字节长度,以及是否它可以为空。

现在,我们已经明确WebMethodGetTitles将返回一个Book对象数组。

3、消费Web服务

事实上,这项任务已经实现了。真的吗?是的。因为根据我们在前面对控件DataSource的load方法的解释,当你点击按钮“Get Book by Title”时,数据源BooksDataSource的方法load即被调用,然后,借助于修饰符[DataObjectMethod(DataObjectMethodType.Select)],WebMethod GetTitles被调用。最后,ListView Books被使用从WebMethod GetTitles返回的数据加以填充。

4、运行示例

如果没有什么问题的话,按F5并启动这个示例。然后,点击按钮“Get Book By Title”,你将看到如图6所示的运行时刻屏幕快照。

图6:示例程序运行时刻快照

【重要提示】为了正确运行这个示例,你还必须在配置文件web.config内添加下列转换器。

列表 6

 

至此,我们已经匆忙地介绍完一个简单的示例!

五、总结

在这个上篇中,我们首先概括介绍了MS AJAX框架中的数据绑定架构,然后我们较细致了分析了主要的用于实现的的客户端控件及其相互间的关系。最后,我们通过一个简单的示例给出MS AJAX框架中的数据绑定架构在实践的应用。在下篇中,我们将进一步分析两个更为复杂的示例以进一步挖掘MS AJAX客户端数据绑定所蕴含的思想。

【责任编辑:火凤凰 TEL:(010)68476606-8007】


共3页: 上一页 [1] [2] 3
【内容导航】
发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Java基础教程 (查看53147次)
·UML类图详解 (查看47544次)
·Java编程开发手册 (查看25519次)
·UML统一建模语言 (查看24906次)
·C#技术开发指南 (查看23253次)
·Java编程开发手册 (1195个砖)
·Java基础教程 (429个砖)
·C#技术开发指南 (306个砖)
·PB开发教程 (220个砖)
·.NET开发手册 (218个砖)
·Java编程开发手册 (653个好)
·Java基础教程 (570个好)
·.NET开发手册 (252个好)
·PB开发教程 (210个好)
·Delphi开发技术手册 (174个好)
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有