Welcome 微信登录
编程资源 图片资源库

首页 / 软件开发 / .NET编程技术 / VS 2008 sp1 + .NET 3.5 sp1(8) - Dynamic Data(动态数据)

VS 2008 sp1 + .NET 3.5 sp1(8) - Dynamic Data(动态数据)2011-11-23 博客园 webabcd介绍

以Northwind为示例数据库,演示Dynamic Data(动态数据)

MetaModel - 数据库和域对象之间的映射的抽象

MetaModel.RegisterContext() - 使用指定的配置上下文注册指定的数据上下文

Scaffold - 译为基架。即基于数据库架构(linq to sql 或 entity framework)生成网页模板的机 制

ScaffoldTableAttribute(false) - 隐藏指定的表

ScaffoldColumn(false) - 隐藏指定的字段

MetadataTypeAttribute(Type metadataClassType) - 指定要与数据模型类关联的元数据类

DynamicField - 显示指定的动态数据字段,相当于 BoundField

DynamicControl - 通过指定的字段模板显示指定的动态数据字段

示例

全局配置

Global.asax

<%@ Application Language="C#" %><%@ Import Namespace="System.Web.Routing" %><%@ Import Namespace="System.Web.DynamicData" %><script runat="server">        public static void RegisterRoutes(RouteCollection routes)    {        MetaModel model = new MetaModel();        // MetaModel - 数据库和域对象之间的映射的抽象        // MetaModel.RegisterContext(Type contextType, ContextConfiguration configuration) - 使用指定的配置上下文注册指定的数据上下文        //     contextType - 数据模型中所定义的数据上下文类型        //     configuration - 相关的配置。其 ScaffoldAllTables 属性为是否要启用基架,基架就是基于数据库架构(linq to sql 或 entity framework)生成网页模板的机制        model.RegisterContext(typeof(VS2008SP1.Business.NorthwindEntities), new ContextConfiguration() { ScaffoldAllTables = true });        // 下面的语句支持分页模式,在这种模式下,“列表”、“详细”、“插入”        // 和“更新”任务是使用不同页执行的。若要启用此模式,请取消注释下面        // 的 route 定义,并注释掉后面的合并页模式部分中的 route 定义。        routes.Add(new DynamicDataRoute("{table}/{action}.aspx")        {            Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),            Model = model        });        // 下面的语句支持合并页模式,在这种模式下,“列表”、“详细”、“插入”        // 和“更新”任务是使用同一页执行的。若要启用此模式,请取消注释下面        // 的 routes,并注释掉上面的分页模式部分中的 route 定义。        // routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") {        //     Action = PageAction.List,        //     ViewName = "ListDetails",        //     Model = model        // });        // routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx") {        //     Action = PageAction.Details,        //     ViewName = "ListDetails",        //     Model = model        // });    }    void Application_Start(object sender, EventArgs e)    {        RegisterRoutes(RouteTable.Routes);    }</script>