跳转到内容

用户:小朱/sandbox1

维基百科,自由的百科全书
ASP.NET Dynamic Data Framework
[[File:SPNETlogo.png -->|frameless|upright=0.55]]
开发者Microsoft
当前版本3.5.30729.1 (3.5 SP1)(2008年8月11日 (2008-08-11)
编程语言.NET 编程语言,例如C#VB.NET
类型Web应用程序
许可协议专有软件
网站www.asp.net

ASP.NET Dynamic Data FrameworkASP.NET 3.5中新添加的一个快速应用程序开发框架,它可以让开发人员快速的开发出以资料驱动式 (Data Driven) 的应用程序,并且拥有供开发人员弹性客制化的能力,它可以利用自动推测开发人员设定的资料模型的能力,自动产生必要的使用者界面,简化开发人员在发展资料驱动式应用程序时的工作量。

原理

[编辑]

ASP.NET Dynamic Data Framework 分为资料模型、使用者界面以及ASP.NET Routing技术三个部分,ASP.NET Routing 技术会将 URL 与资料表定义整合,并决定在现阶段要显示的网页类型为何;而资料模型 (data model) 可以是LINQ to SQL或是ADO.NET Entity Framework这样的资料模型来源;使用者界面则是由 Dyanmic Data Framework 预先定义的数种范本,Dynamic Data Framework 会配合 URL 所指向的网页类型来决定要输出何种网页。

Dynamic Data Framework 在处理资料模型与显示网页时,会使用推测 (infer) 的机制来决定部分资料内容,像是资料表中若有外部参考键(Foreign Key)时,Dynamic Data Framework 会产生一个可供筛选的下拉式清单方块,并且在资料方格(GridView)中针对对应的栏位显示超链接以指向其资料表的资料列以查询对应的资料,其推测规则是:以外部参考键所在的资料表中,可以找到的第一个文字栏位来作为显示的资料(值则是其对应代码)。

当 ASP.NET Routing 发现 URL 规则是指向 Dynamic Data Framework 的网站时,会将控制权交给存在于 System.Web.DynamicData 命名空间中的DynamicDataHandler处理器中,这个处理器会产生对应的网页范本路径,并将它转交给 UrlRoutingHandler 执行接下来的 ASP.NET 绘制动作。

Dyanmic Data Framework 在各个范本页面中的控件均由DynamicDataManager来管理,资料来源在内部会使用LinqDataSource,因此实际的表格或资料集合必须要使用 LINQ 相容的资料来源才可以。LinqDataSource 会自动处理资料的存取,包含撷取与写入等动作。

技术

[编辑]

ASP.NET Dynamic Data Framework 使用了Scaffolding(自动配置产生)、Templating(范本化)以及中介资料式客制化 (Customization by metadata) 等技术以实现在资料驱动式应用程序的快速开发能力。

自动配置产生

[编辑]

Scaffolding 技术是在 Dynamic Data Framework 中使用的预设范本能力,它利用 ASP.NET 中许多资料系结控件 (data bound control) 提供的自动栏位产生能力,以及侦测外部索引键产生控件的能力来生成必要的控件,开发人员可以在不写任何一行程式码的情况下产生足够的控件。

使用 Scaffolding 技术所需的页面范本 (page templates) 都存在网站根目录中的 DynamicData\PageTemplates 目录中,共有下列几个范本:

  • Details.asp:使用 DetailView 控件,显示该资料列的所有资料。
  • Insert.aspx:使用 DetailView 控件的新增模式,让使用者可新增资料。
  • Edit.aspx:使用 DetailView 控件的编辑模式,让使用者可修改资料。
  • List.aspx:使用 GridView 控件,列出资料表中的所有资料,若资料量大时会启用分页。
  • ListDetails.aspx:与 List.aspx 相同,但它在使用者选择一笔资料时,在 GridView 的下方显示出 DetailView 以显示详细资料,或是直接插入新资料。

范本化

[编辑]

范本化技术

中介资料式客制化功能

[编辑]

参考资料

[编辑]


外部链接

[编辑]