Asp.net动态数据(Dynamic Data) 笔记一
2008-10-20 13:17 Animax! 阅读(4441) 评论(4) 编辑 收藏 举报
Dynamic Data:
Asp.net Dynamic Data 是一个快速开发框架,只需要指定Linq To Sql 或 ADO.Net Entity 数据实体并设置动态数据模板它便能动态生成整个网站。
创建Dynamic Data Web Site:
使用安装了sp1补丁的Visual Studio 2008 新建网站。在网站模板中有两个Dynamic Data网站,一个是 "Dynamic Data实体网站(Dynamic Data Entities Web Stie)"它是使用ADO.net Entity作为数据模型的,另一个是 "Dynamic Data 网站(Dynamic Data Web Stie)"。我们新建一个Dynamic Data 网站,用LINQ TO SQL 来作为数据模型。
在创建完成后可以发现,Dynamic Data 网站比其他网站多了一个文件夹DynamicData,这文件夹里面放置的是生成网站的模板。
创建数据模型:
直接在网站中新建一个LINQ To sql类。
打开Global.asax,取消注释数据模型注册那句代码:
model.RegisterContext(
typeof(YourDataContextType), new ContextConfiguration() { ScaffoldAllTables = true });
并将其中的YourDataContextType替换成LINQ TO SQL生成的DataContext。
Dynamic Data 网站:
直接运行项目,Asp.net Dynamic Data 便按照数据模型动态生成了整个网站。
Routing:
再次打开Global.asax观看里面的代码,发现Dynamic Data也使用了Routing:
Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
Model = model
});
把一个继承自Route的DynamicDataRoute添加到Routing规则表中。添加的这个规则只规定了只是接受Action为List、Details、Edit、Insert的访问。
可以看出,这四个Aciton是对应着DynamicData/PageTemplates文件夹中的四个页面文件。在那文件夹中还有一个ListDetails.aspx页面文件,是用于"合并页模式",就是所有的操作都会在一页中完成。
要打开这个功能需要在Global.asax里注释掉上面的代码,并且反注释下面的代码断:
{
Action = PageAction.List,
ViewName = "ListDetails",
Model = model
});
routes.Add(new DynamicDataRoute("{table}/ListDetails.aspx")
{
Action = PageAction.Details,
ViewName = "ListDetails",
Model = model
});
这里的作用是让Action为PageAction.List和PageAction.Details都访问到名为ListDetails的视图上,根据MVC的约定,就是使用ListDetails.aspx为视图页面。