




















2008-10-20 13:17 Animax! 阅读(4523) 评论() 收藏 举报
Asp.net Dynamic Data 是一个快速开发框架,只需要指定Linq To Sql 或 ADO.Net Entity 数据实体并设置动态数据模板它便能动态生成整个网站。
使用安装了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。
直接运行项目,Asp.net Dynamic Data 便按照数据模型动态生成了整个网站。
再次打开Global.asax观看里面的代码,发现Dynamic Data也使用了Routing:
routes.Add(new DynamicDataRoute("{table}/{action}.aspx") {

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里注释掉上面的代码,并且反注释下面的代码断:
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
});
这里的作用是让Action为PageAction.List和PageAction.Details都访问到名为ListDetails的视图上,根据MVC的约定,就是使用ListDetails.aspx为视图页面。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。