【原文地址】New ASP.NET Dynamic Data Support
【原文发表日期】 Friday, December 14, 2007 12:41 AM
上个周末发布的ASP.NET 3.5 Extensions CTP预览版包括了一堆很棒的新特性。
其中一个新特性是我们称之为“ASP.NET Dynamic Data Support(动态数据支持)”的东西。简单地说,这个东西允许你极其快速地建造可以使用LINQ to SQL(在将来LINQ to Entities)对象模型的数据驱动的网站,还允许你不用手工建造任何网页。
看它在实战中的例子的最佳方式是观看David Ebbo的精彩的17分钟屏播:
你也可以按下面的步骤来轻松上手,开始使用动态数据支持:
第一步: 创建ASP.NET动态数据网站
在安装ASP.NET 3.5 Extensions CTP预览版之后,你可以使用VS 2008或免费的Visual Web Developer 2008 Express版来创建启用ASP.NET动态数据支持的新网站项目或新Web应用项目:
这会创建一个可用的新网站,其中包括了一些默认的模板文件,以及你可以用来定制模板文件观感(look and feel)的CSS样式表:
第二步: 添加LINQ to SQL数据模型
LINQ to SQL是.NET 3.5中内置的O/RM(对象关系映射器),它允许你使用.NET类来对关系数据库建模。然后你可以使用LINQ来对数据库进行查询,以及在其中更新、插入和删除数据。 LINQ to SQL完全支持事务,视图和存储过程。它还提供了简易方式来将数据验证和业务逻辑规则集成进你的数据模型。
开始使用ASP.NET动态数据网站的最简便的方式是向你的项目中添加一个新的LINQ to SQL数据模型(右击->添加新项->LINQ to SQL类)。这会调出LINQ to SQL类设计器。从你的服务器管理器中把数据库数据表拖拉到设计器表面,为你的数据库数据定义(schema)来建立一些类(包括其间的关系):
第三步: 在项目中启用动态模板
在默认情形下,ASP.NET动态数据项目提供了内置支持,为你的LINQ to SQL和LINQ to Entities数据模型创建自动的“scaffolding(脚手架)”视图。动态数据项目包括了一些模板页和用户控件,可以自动地创建内置的浏览、编辑、选择和删除数据的用户界面,这些界面是根据你加到项目里的LINQ to SQL或者LINQ to Entities数据模型,在运行时动态构建的。
为启用这个自动scaffolding的支持,打开你项目的web.config文件,找一下其中的dynamicData节,把它的enableTemplates属性设为true:
注: 这个自动scaffolding特性在默认情形下为安全的原因是关掉的(我们要你明确地设置来启用这个特性)。
注: 就象你在上面看到的那样,ASP.NET动态数据配置节还提供了可选的URL映射支持,该支持允许你将你的动态scaffold网页定制成你想要的任何URL格式。
第四步: 运行你的网站
按F5运行你的项目,默认情形下,你会被转到default.aspx网页,上面列出了你数据模型中的所有数据表对象:
注: default.aspx主页是项目中的一个文件,如果你不喜欢这个网页的样子,你可以打开它,编辑成你想要的样子。
点击上面列表中的任何数据表名称,会把你转到一个动态数据网页,其上列出了对应数据表中的数据:
默认的数据视图网页自动创建了有效的数据导航界面,这些界面包括了内置的数据分页和编辑支持(其中启用了ASP.NET AJAX):
数据视图网页自动推断出关联对象间的关系,提供了自动的过滤支持:
数据视图网页还自动地显示你的对象间的关系,允许用户轻松地在其间导航。例如,注意,产品的Category字段允许我转到特定产品的分类细节网页上去:
数据视图网页还提供了自动选择,编辑和删除支持。注意下面,在行内编辑模式下,他们会自动推断出友好的外键名称(允许你编辑“Category”,从下拉框中挑一个名称,而不是指定一个“CategoryID”整数):
所有这些都是自动工作的,而不用创建任何自定义的.aspx 网页或者编写任何自定义代码。所有的web用户界面都是根据你的LINQ to SQL或LINQ to Entities数据模型动态生成的。
第五步: 进一步定制网站
对你的ORM数据模型现成提供上面所有的功能,对让你的网站很快开始运作大有好处。在实现基本的网站体验之后,你可以进行完全的定制,无论是数据验证/业务逻辑层次还是用户界面层次。
你可以添加标准的LINQ to SQL数据模型和业务验证规则到你的数据模型中,以执行约束条件。动态数据网页会自动执行这逻辑,提供基于这逻辑的适当的错误信息和验证用户界面。
你也可以定制任何数据网页中的用户界面,动态数据项目允许你定制网站上所有数据网页的默认观感,以及定制用在网站上的所有字段类型的默认观感。你可以通过对创建新的动态数据项目时加到“/App_Shared”文件夹中的默认模板文件做编辑来实现这2种定制:
只要编辑上面的任何文件就可定制默认的数据网页视图或默认的数据字段的外观。
然后,你还可以通过在项目中明确地添加一个映射到某个特定数据视图网页的.aspx网页,来覆盖对应的用户界面。例如,我可以往项目中加一个 \Products\ListDetails.aspx 来覆盖默认产品的 ListDetails 行为:
然后,你可以往网页上添加任何标准的ASP.NET数据控件。你还可以在网页上使用ASP.NET 3.5 Extensions CTP预览版中发布的有动态数据意识的ASP.NET数据控件。这些控件允许你完全定制用户界面的观感,同时还使用新的动态元数据提供器(dynamic meta-data provider)来推断你的数据模型类间的关系和的元数据,以提供默认行为。
有关详情
上面的示范只涉及了你可以通过ASP.NET动态数据项目来实现的几个场景和功能。要了解详情的话:
- 观看David的网播
- 看一下ASP.NET动态数据的快速上手文档
- 订阅David Ebbo, Scott Hunter, 和Marcin Dobosz的博客
- 访问ASP.NET动态数据论坛问问题
想了解有关LINQ to SQL,以及如何创建数据模型类的详情,参阅我以前写的下列博客帖子(【译注】博客园的韩现龙已经完成了其中的8篇,不久会在这里贴出来):
- 第一部分:LINQ to SQL简介(韩现龙译)
- Part 2: Defining our Data Model Classes
- Part 3: Querying our Database
- Part 4: Updating our Database
- Part 5: Binding UI using the ASP:LinqDataSource Control
- Part 6: Retrieving Data Using Stored Procedures
- Part 7: Updating our Database using Stored Procedures
- Part 8: Executing Custom SQL Expressions
- Part 9: Using a Custom LINQ Expression with the <asp:LinqDataSource> control
你还可以观看http://www.asp.net/learn/linq-videos/网站上此处的精彩LINQ和 LINQ to SQL “How do I?(该如何做)” 录像。
希望本文对你有所帮助,
Scott