65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET Dynamic Data 初体验

starIconstarIconemptyStarIconemptyStarIconemptyStarIcon

2.00/5 (6投票s)

2008年11月21日

CPOL

3分钟阅读

viewsIcon

34194

让创建数据驱动的网站变得简单。

1.JPG

引言

ASP.NET Dynamic Data 提供了一个框架,使您能够基于 LINQ to SQL 或 Entity Framework 数据模型快速构建一个功能强大的数据驱动应用程序。它还为 DetailsView、FormView、GridView 和 ListView 控件增加了极大的灵活性和功能,例如智能验证和使用模板轻松更改这些控件的显示能力。Dynamic Data 是 .NET Framework 3.5 SP1 版本的一部分。

背景

我们想创建一个网站,在安装 SP1 后,我们将看到两个模板,一个是“Dynamic Data Website”,另一个是“Dynamic Data Entity Website”。现在,我们将通过生成一些脚手架来创建我们的第一个 Dynamic Data 网站。 如下所示,我们可以看到由模板自动生成的文件。

2.JPG

Using the Code

已生成的代码具有极大的灵活性。因此,您基本上可以更新您的应用程序如何工作以及您的数据将如何显示的每一个细节。 这不是其他类型的代码生成。而且,这不仅仅是关于代码生成;代码生成只是 Dynamic Data 的一个特性。因此,您可以选择代码生成,也可以不生成任何代码,您可以从头开始,或者您可以将 Dynamic Data 添加到您现有的应用程序中。首先,您可以看到一个 Global.asax 文件已添加到您的应用程序中。Dynamic Data 应用程序依赖于从 Global.asax 文件管理的一些设置。另一件事是“Dynamic Data”目录。在目录中,您可以查看“页面模板”部分。请注意,那里有数据库应用程序中可能使用的所有页面。您需要记住的是,这些只是模板,到目前为止您还没有选择任何数据库!所以这与数据库无关,这是一个高度模板化的模型。您还可以创建新的模板或特定于表的页面以与您的应用程序一起使用。接下来,您可以看到“字段模板”。在那里您可以看到很多 ascx 控件文件。请注意,您可以看到 Text、Integer、Boolean、DateTime,对于许多这些,您都有 Text.ascx、Text_Edit.ascx 用于 Text。在这种情况下,对于 TextFields,Text.ascx 用于以不可编辑的方式查看文本字段,而 Text_Edit 用于特定字段的编辑体验。同样,这些是模板,因此,您可以修改文本模板之一来更改文本框在应用程序中任何地方的显示方式。现在您可以看到一个自定义页面部分。您可以添加您想创建并从您的应用程序调用的自定义页面。

3.JPG

接下来我们需要向我们的应用程序添加一些数据。我为此应用程序使用了 Northwind 示例数据库。我通过服务器资源管理器创建了连接。

4.JPG

现在我们需要添加一些 API 来访问我们的数据库。所以为了得到它,我使用了“Linq to SQL Classes”

5.JPG

在这里您可以看到“NorthwindDataContext”是我们的数据上下文。这是我们数据库操作的主要入口点。

6.JPG

现在我选择了几个表,并将其放入 dbml 设计器中。请注意,应该更新背景 CS 代码。您可以在设计器上看到表和关系。

现在让我们看一下我们的 Global.asax 文件。了解该文件非常重要。

8.JPG

在这里,“YourDataContextType”是我们的“NorthwindDataContext”,在代码的末尾,您还可以看到 { ScaffoldAllTables = false }。它默认是 false,因为您可能不希望将脚手架应用于整个模式。在我的文章中,我将脚手架设置为 true,因为我不喜欢制作任何自定义页面,因此 Dynamic Data 运行时可以为我们生成所有脚手架。有了这个,我们就可以运行该项目了。

 
        model.RegisterContext(typeof(NorthwindDataContext), new ContextConfiguration() { ScaffoldAllTables = true });

        // The following statement supports separate-page mode, where the List, Detail, Insert, and 
        // Update tasks are performed by using separate pages. To enable this mode, uncomment the following 
        // route definition, and comment out the route definitions in the combined-page mode section that follows.
        routes.Add(new DynamicDataRoute("{table}/{action}.aspx") {
            Constraints = new RouteValueDictionary(new { action = "List|Details|Edit|Insert" }),
            Model = model
        });

10.JPG

就这样。您可以看到样式已添加到脚手架代码中,因为已将 css 文件添加到整个应用程序中。您可以修改 CSS 或将自定义内联样式添加到模板中。

关注点

我对最新的 .NET 技术和最佳实践很感兴趣。

历史

2008年11月21日。第一稿。

ASP.NET Dynamic Data 初体验 - CodeProject - 代码之家
© . All rights reserved.