ASP.NET 动态数据概述
更新: 2008 年 7 月
ASP.NET 动态数据框架可使您轻松创建数据驱动的 ASP.NET Web 应用程序。它通过在运行时自动发现数据模型元数据并从其派生 UI 行为来实现此目的。基架框架可提供正常工作的网站以供查看和编辑数据。通过更改元素或创建新元素以重写默认行为,您可以轻松地自定义基架框架。现有应用程序可以轻松地将基架元素与 ASP.NET 页集成。
本主题包含以下部分:
介绍
功能
背景
类参考
其他信息
功能
可以使用 ASP.NET 动态数据来创建新的数据驱动网站,只需最少的代码,而且能够充分利用动态数据框架的功能。还可以选择要添加到现有网站的特定动态数据功能。
动态数据提供以下功能:
Web 基架,可以运行基于读取基础数据库架构的 Web 应用程序。动态数据基架可从数据模型生成标准 UI。
完全数据访问操作(创建、更新、移除、显示)、关系运算和数据验证。
自动支持外键关系。动态数据可以自动检查表之间的关系并创建 UI,让用户能够通过相关表轻松查看数据。有关更多信息,请参见演练:使用基架创建新的动态数据网站。
可以自定义所呈现的用来显示和编辑特定数据字段的 UI。有关更多信息,请参见如何:自定义 ASP.NET 动态数据默认的字段模板和如何:在数据模型中自定义数据字段的外观和行为。
可以自定义所呈现的用来显示和编辑特定表的数据字段的 UI。有关更多信息,请参见如何:使用自定义网页模板自定义单个表的布局。
自定义数据字段验证的功能。这使您能够将业务逻辑保持在数据层,而不涉及表示层。有关更多信息,请参见如何:在数据模型中自定义数据字段验证。
背景
动态数据的动态特性在于它能够在运行时从基础数据库架构推断数据字段的外观和行为。通过这种机制,结合利用默认页和字段模板,可以实现很多可能的自定义方式,为您提供丰富多样的设计选择,包括:
使用基架构建网站。
向现有网站中添加动态数据。
添加数据字段验证业务逻辑。
自定义所呈现的 UI(用来显示和编辑特定数据字段或特定表)。
数据模型
数据模型表示数据库中的信息以及数据库中项之间的相互关系。
动态数据支持 LINQ-to-SQL 数据模型和 ADO.NET Entity Framework 数据模型。可以在 Web 应用程序中包括数据模型的多个实例,但在动态数据中使用的模型必须属于同一类型。
在 Web 应用程序的 Global.asax 文件中,可以注册您要在动态数据中使用的一个或多个数据模型。在数据模型注册到动态数据后,数据模型可以执行数据字段的自动验证,让您能够在数据层级别控制数据的外观和行为。
基架
基架是一种机制,可以基于数据模型动态显示页面,从而增强现有 ASP.NET 页面框架。基架提供了以下功能:
只需少量代码或者不需代码即可创建数据驱动的 Web 应用程序。
可缩短开发时间。
可基于数据库架构进行内置数据验证。
可提供针对每个外键或布尔型字段创建的自动数据选择。
网页模板
动态数据基架使用网页模板来提供数据表的默认视图。网页模板是 ASP.NET Web 页,配置为显示动态数据可用的任何表的数据。动态数据包括不同数据视图的网页模板,例如列出表(“列表”视图)、显示主表和详细信息表(“详细信息”视图)及编辑数据(“编辑”视图)等。默认情况下,动态数据配置为仅使用“列表”视图网页模板。可以更改默认网页模板或更改动态数据,以针对不同用途使用不同的网页模板。有关更多信息,请参见 ASP.NET 动态数据基础结构。
字段模板
动态数据使用字段模板来呈现用于显示和编辑各个数据字段的 UI。它可以根据数据字段类型确定相应的字段模板。动态数据包括单独的字段模板,用于显示和编辑数据字段。
例如,对于 DateTime 数据字段,动态数据使用以下字段模板:
DateTime.ascx。此模板可将 DateTime 数据类型显示为文本(字符串),并将其呈现为 Literal 控件。
DateTime_Edit.ascx。此模板呈现 TextBox 控件。如果数据库中的字段不能为 null,或者如果已将数据模型自定义为需要条目,则此控件还呈现 RequiredFieldValidator 控件。DateTime_Edit.ascx字段模板提供 DynamicValidator 控件,该控件处理数据模型引发的所有异常。它还支持 Regex 类。
在创建动态数据 Web 项目时,Visual Studio 将向项目中添加 DynamicData\FieldTemplates 文件夹。此文件夹包含默认字段模板。
为了指定如何呈现各个数据字段,可以自定义内置字段模板或创建新模板。例如,可以创建字段模板,呈现用于显示和编辑电话号码或电子邮件地址的 UI。再举一个例子,还可以创建字段模板,呈现用于使用可选方式(例如滑块)让用户指定数值数据的 UI。
增强现有数据控件
动态数据通过以下方式增强现有数据控件以包括动态行为:
DetailsView 和 GridView 控件可以使用预定义的动态数据模板来动态显示数据,而不要求您为每页中的数据控件重新创建相同的标记和代码。可以自定义这些模板,更改要使用的控件,并更改用于显示和编辑数据字段的 UI 的呈现方式。这使得您只需在一个位置进行更改,即可影响整个 Web 应用程序中数据控件的外观和行为。这是独立于特定表的,因而一个网页模板可用于数据库中的任何表。有关更多信息,请参见如何:使用 DynamicField 向数据绑定控件添加动态行为。
FormView 和 ListView 控件可以通过在模板中使用 DynamicControl 控件并指定行中要显示的字段,实现与 DetailsView 和 GridView 控件的行为相似的行为。然后,动态数据将基于您指定的模板,自动生成这些控件的 UI。DynamicControl 控件不会自动呈现任何字段的 UI;必须将控件绑定到特定数据字段。有关更多信息,请参见如何:在模板化数据绑定控件中使用 ASP.NET 动态数据。
动态数据会检查 LINQ-to-SQL 或 Entity Framework 数据模型的数据模型元数据,并基于元数据提供自动验证。例如,如果数据库中的某个列标记为不可以为 null,则自动为该列呈现 RequiredFieldValidator 控件。为了进一步自定义呈现和验证数据字段的方式,还可以应用自定义元数据。有关更多信息,请参见如何:在数据模型中自定义数据字段验证。
类参考
下表列出了包含 ASP.NET 动态数据类的命名空间。
命名空间 |
说明 |
---|---|
提供用于为动态数据控件定义元数据的属性类。 |
|
包含为 ASP.NET 动态数据提供核心功能的类。还提供用于自定义动态数据行为的扩展性功能。 |
其他信息
建议研究的方面如下:
了解 URL 路由。有关更多信息,请参见 ASP.NET 路由。
了解 LINQ-to-SQL 对象关系映射。有关更多信息,请参见 LINQ to SQL。
了解 ADO.NET Entity Framework。有关更多信息,请参见 ADO.NET Entity Framework。
返回页首
请参见
任务
概念
修订记录
日期 |
修订历史记录 |
原因 |
---|---|---|
2008 年 7 月 |
新增了主题。 |
SP1 功能更改。 |