代码改变世界

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:

        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为视图页面。