`
cloudtech
  • 浏览: 4577696 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

使用ASP.NET MVC(C#)15分钟内创建一个电影数据库程序

 
阅读更多

这篇教程的目的是让你体会一下创建一个 ASP.NET MVC 程序是一种什么样的感觉。在这篇教程里,我通过从头到尾地创建一整个ASP.NET MVC程序来进行说明。我会教你如何创建一个简单的数据库驱动程序,此程序会演示你如何以列表显示、新建和编辑数据库记录。

为了简化我们创建程序的过程,我们将利用Visual Studio 2008的“脚手架”特性。我们让Visual Studio来生成控制器,模型和视图的代码和内容。

如果你已经用过ASP或ASP.NET,那么你会发现ASP.NET MVC和它们是很相似的。 ASP.NET MVC 中的视图与ASP中的页(pages)非常像。而且,就像ASP.NET WebForm程序那样, ASP.NET MVC 可以让你使用.Net Framework提供的语言和类来进行开发。

我希望这个教程可以让你感觉到创建ASP.NET MVC程序与创建ASP或ASP.NET WebForm程序是多么的相似。

电影数据库程序概述

由于我们的目的是要使所有事情都尽量简单,所以我们就创建一个很简单的电影数据库程序。我们这个简单的程序能够做3件事情:

1、列表显示电影数据库记录

2、新建一个电影数据库记录

3、编辑一个电影数据库记录

再说一次,由于我们要尽量简单,我们将利用 ASP.NET MVC 所需的最少特性来创建我们的程序。例如,我们不会用到测试驱动开发。

为了创建我们的程序,我们需要完成以下各个步骤:

1、创建 ASP.NET MVC Web Application项目

2、创建数据库

3、创建数据库对象

4、创建 ASP.NET MVC 控制器

5、创建 ASP.NET MVC 视图

准备工作

你需要Visual Studio 2008或者Visual Web Developer 2008 Express 来创建 ASP.NET MVC 程序,你还需要下载 ASP.NET MVC 框架。

如果你还没有Visual Studio 2008,你可以从以下网址下载一个90天试用版:

http://msdn.microsoft.com/en-us/vs2008/products/cc268305.aspx

或者,你可以使用 Visual Web Developer Express 2008,如果你决定用这个的话,你必须安装Service Pack 1,你可以从以下网址下载带有Service Pack 1的Visual Web Developer 2008 Express

http://www.microsoft.com/downloads/details.aspx?FamilyId=BDB6391C-05CA-4036-9154-6DF4F6DEBD14&displaylang=en

安装完 Visual Studio 2008或者 Visual Web Developer 2008之后,你需要安装ASP.NET MVC 框架,你可以从以下网址下载到:

http://www.asp.net/mvc

如果不想下载ASP.NET 框架和ASP.NET MVC 框架的话,你可以使用Web PlatForm Installer,这是一个可以让你轻松管理电脑上已安装程序的应用程序。

http://www.microsoft.com/web/gallery/Install.aspx

创建一个 ASP.NET MVC Web Application 项目

让我们开始吧,先在Visual Studio 2008里创建一个ASP.NET MVC Web Application 项目。选择菜单“文件(File)”,“新建项目(New Project)”,你就会看到图1所示的“新建项目”对话框,选择C#作为程序语言并选择ASP.NET MVC Web Application 模板,将名称起为MovieApp 后点击“确定”按钮。

图1.“新建项目”对话框

图1.“新建项目”对话框

确保你在对话框顶部的下拉框中选择了.NET Framework 3.5,否则 ASP.NET MVC Web Application 项目模板不会出现。

当你创建了一个新的MVC Web Application项目之后,Visual Studio 会提示你创建一个分离的单元测试项目,出现图2所示的对话框。我们在此教程里由于时间限制(额,当然,我们对此感到一点点愧疚)不会创建测试,所以选择“No”选项后点击"OK"继续。

Visual Web Developer 不支持测试项目.

图2、创建单元测试对话框

图2、创建单元测试对话框

一个ASP.NET MVC 程序有一套标准的文件夹目录:一个Models,Views和Controllers目录,你可以在解决方案资源管理器中看到这些文件夹,我们需要在每一个文件夹中添加文件来创建我们的电影数据库程序。

当你用Visual Studio创建了一个新的MVC程序,就会得到一个样例程序。由于我们打算从简开始,所以我们需要删除这个样例中的内容。你需要删除以下文件和文件夹:

  • Controllers/HomeController.cs
  • Views/Home

创建数据库

我们需要一个数据库来存储我们的电影数据库记录。很幸运的是,Visual Studio包括了一个名为SQL Server Express的免费数据库。参照以下步骤来创建数据库:

1、在解决方案资源管理中的App_Data文件上右键,选择菜单项“添加(Add)”,“新建项(New Item)”

2、选择“数据(Data)”目录,并选择SQL Server 数据库(SQL Server Database )模板(见图3)

3、起名为 MoviesDB.mdf ,点击“添加(Add)”按钮

创建数据库后你可以双击App_Data文件夹中的MoviesDB.mdf 文件来连接到数据库。双击之后会出现服务器资源管理器窗口。

在 Visual Web Developer中服务器资源管理器名为数据库资源管理器

3、创建一个Microsoft SQL Server 数据库

图3、创建一个Microsoft SQL Server 数据库

接下来,我们需要新建一个数据库表。在服务器资源管理器中的“表(Tables)”目录上右键,选择“添加新表(Add New Table)”菜单,将打开数据库表设计器,创建以下数据列:

字段名 数据类型 可否为空
Id Int False
Title Nvarchar(100) False
Director Nvarchar(100) False
DateReleased DateTime False

第一列,Id列,有2个特殊属性。第一,你需要将Id列标记为主键列。选择Id列,点击“设置主键(Set Primary Key)”按钮(钥匙图标)。第二,将Id列标记为标识列。在“列属性( Column Properties )”窗口中,滚动条下拉到“标识规范(Identity Spcification)”区展开。将“是标识(Is Identity)”换成“是(Yes)”。完成以后,表结构如图4所示。

图4、电影数据表

图4、电影数据表

最后一步是保存新表,点击“保存”按钮(软盘图标)并将新表命名为Movies。

新建完表之后,向表里添加以下电影数据。在服务器资源管理器中右键点击Movies表,选择“显示表数据(Show Table Data)”。输入几组你喜欢的电影(如图5)

图5、输入电影数据

图5、输入电影数据

创建模型

我们接下来要创建一组类来表示我们的数据库。我们需要创建一个数据库模型。我们将利用Microsoft Entity Framework 来自动为我们的数据库模型生成类。

ASP.NET MVC框架并没与Microsoft Entity Framework捆绑在一起,你可以利用很多对象关系映射(OR/M)工具,包括LINQ to SQL, Subsonic, 和NHibernate来创建你的数据库模型类。

参考以下步骤来启动“实体数据模型向导( Entity Data Model Wizard)”:

1、在解决方案资源管理器上右键点击Models文件夹,选择“添加”,“新建项”。

2、选择“数据”目录并选择 ADO.NET Entity Data Model 模板。

3、命名为MoviesDBModel.edmx 并点击“确定”按钮。

然后你会看到图6所示的实体数据模型向导,参照以下步骤来完成向导。

1、在“选择模型内容”这一步,选择“从数据库生成”。

2、在“选择您的数据连接”这一步,使用 MoviesDB.mdf 数据连接,为连接设置命名为MoviesDBEntities ,点击“下一步”。

3、在“选择数据库对象”这一步,展开“表”节点,选择“Movies”表,输入命名空间MovieApp.Models ,点击“完成”按钮。

图6、使用实体数据模型向导生成数据库模型

图6、使用实体数据模型向导生成数据库模型

完成向导之后,实体数据模型设计器会打开。设计器会显示Movies数据库表。(图7)

图7、实体数据模型设计器

图7、实体数据模型设计器

在我们继续之前要做一下改动。实体数据向导生成的类名为Movies,用以表示Movies数据库表。由于我们用Movies来指代一部特定的电影,所以我们要把类名由Movies改为Movie(单数形式而不用复数形式)。

在设计器界面上双击类名并把类名改为Movie。做完此改动后,点击“保存”按钮(软盘图标)来生成Movie类。

创建ASP.NET MVC 控制器

下一步是要创建ASP.NET MVC 控制器。控制器负责控制用户与ASP.NET MVC 程序如何进行交互。

参照以下步骤:

1、在解决方案资源管理器中右键点击Controllers文件夹,选择“添加”,"Controller"。

2、在Add Controller对话框中,输入名称HomeController 并将 Add action methods for Create, Update, and Details scenarios复选框勾上 (见图8)

3、点击“Add”按钮,将新的控制器添加到你的项目中。

完成这些步骤以后,代码1的控制器就创建好了。注意它包括了名为Index,Details,Create和Edit方法。在以下章节我们将添加必要的代码来使这些方法正常运作。

图8、增加ASP.NET MVC控制器

图8、增加ASP.NET MVC控制器

代码1 – Controllers/HomeController.cs

列表显示数据库记录

Home控制器中的Index()方法是 ASP.NET MVC 程序的默认方法。当运行一个 ASP.NET MVC 程序时,Index()方法是第一个被调用的控制器方法。

我们将用Index()方法从Movies数据库表显示记录列表。我们将利用先前创建的数据库模型类来取得电影数据记录。

我在代码2中修改了HomeController 类,增加了一个名为_db的私有字段。MoviesDBEntities 类代表了我们的数据模型,我们将用这个类来与我们的数据库进行通信。

在代码2中我还修改了Index()方法。Index()方法用MoviesDBEntities 类来从Movies数据库表中取得所有电影数据记录。表达式 _db.MovieSet.ToList() 从Movies数据库表返回一组电影数据记录。

这组电影传递到视图中。任何获得View()方法通过的东西都会作为视图数据获得视图通过。

代码2– Controllers/HomeController.cs (修改了Index 方法)

Index()方法返回一个名为Index的视图。我们需要创建这个视图来显示电影数据记录的列表。参照以下步骤:

在打开Add View对话框前你要先生成你的项目(选择“生成”,“生成解决方案”菜单)否则在View data class下拉框中你看不到任何类。

1、在代码编辑区中右键点击Index()方法,选择Add View。(见图9)

2、在Add View对话框中,将Create a strongly-typed view 复选框勾上。

3、从View data class下拉框中选择MovieApp.Models.Movie。

4、从View content下拉框中选择List。

5、点击“Add”按钮来创建新的视图。(见图10)

完成后,一个名为Index.aspx的新视图被添加到Views/Home 目录下。Index视图代码见代码3.

图9、从控制器动作中添加视图

图9、从控制器动作中添加视图

图10、用Add View对话框添加新视图

图10、用Add View对话框添加新视图

Index视图在一个HTML表格中显示了Movies数据库表中的电影数据记录。视图包括了一个foreach循环,它遍历每一个由ViewData.Model属性代表的电影。如果你按F5运行你的程序,那将看到如图11的网页。

图11、Index视图

图11、Index视图

新增数据库记录

在上一节我们创建的Index视图中包括了一个用来新增数据库记录的链接。让我们继续来实现逻辑并为新增数据库记录添加必要的视图。

Home 控制器包含了2个名为Create()的方法。第一个Create()方法没有参数。这个Create()方法的重载是用来显示一个新增数据库记录的HTML表单的。

第二个Create()方法有一个FormCollection参数。这个Create()方法的重载,当新增数据库记录的HTML表单post到服务器时就会被调用。注意这个Create()方法有一个AcceptVerbs 特性,用以保证方法只有在执行HTTP POST操作时才会被调用。

这第二个Create()方法在代码4的HomeController类 中被修改过了。新版本的Create()方法接受一个Movie参数并且包含了为插入一个新电影到Movies数据库表的逻辑。

注意Bind特性。因为我们不想从HTML表单中修改电影Id属性,所以我们必须显式排除此属性。

Visual Studio 可以轻松地创建用来新增电影数据记录的表单 (见图12). 参照以下步骤:

  1. 在代码编辑区中右键Create()方法,选择 Add View.
  2. 将复选框Create a strongly-typed view勾上.
  3. View content 下拉框中, 选择Create.
  4. View data class 下拉框中, 选择MovieApp.Models.Movie.
  5. 点击Add 按钮创建新视图.

图12、添加Create视图

图12、添加Create视图

Visual Studio 自动创建了如代码5中的视图.这个视图包含了一个与Movie类各个属性相对应的字段的HTML表单。

由Add View对话框生成的HTML表单生成了Id字段。由于Id列是标识列,所以我们不需要这个字段,你可以安全地删除它。

创建完Create视图之后,你就可以添加新电影数据到数据库了. 按F5运行程序,点击Create New 链接显示如图13的表单. 完成输入并点击提交按钮,新电影数据就会被创建.

注意你会自动得到表单验证. 如果你不输入release date, 或者你输入一个非法的日期, 那么表单会重新显示并且release date那里会被高亮。

图13、新增电影数据记录

图13、新增电影数据记录

修改现有数据记录

在前面的章节, 我们讨论了如何显示和新增数据库记录. 在这最后一节中, 我们来讨论如何修改现有的数据记录.

首先, 我们需要生成Edit表单.既然Visual Studio会自动为我们生成Edit表单,那么这一步就很简单了。在Visual Studio代码编辑区打开HomeController.cs 并参照以下步骤:

  1. 在代码编辑区域右键Edit()方法,选择Add View (见图14).
  2. 复选框Create a strongly-typed view勾选上.
  3. View content 下拉框中, 选择Edit.
  4. View data class 下拉框中, 选择MovieApp.Models.Movie.
  5. 点击Add 按钮添加新视图.

完成这些步骤以后一个名为Edit.aspx的新视图将会被创建到Views/Home 目录下. 这个视图包含了用来修改数据记录的表单。

图14、添加Edit视图

图14、添加Edit视图

Edit 视图包含了一个与Movie类的Id属性对应的字段。你不会想别人修改Id属性的值吧?删掉它吧。

最终,我们需要修改Home控制器以使它支持修改数据库记录。修改后的HomeController类见代码6.

代码6 – Controllers/HomeController.cs (Edit 方法)

在代码6,我在两个Edit()方法都添加了额外的逻辑。 第一个Edit()方法返回与传入方法中的Id参数对应的电影数据记录。第二个重载执行修改数据库中电影记录的方法。

注意你必须取得原电影,然后调用ApplyPropertyChanges()方法来修改数据库中现有的电影。

总结

这篇教程的目的是要让你感受一下创建ASP.NET MVC 程序. 我希望你已经发现了创建ASP.NET MVC web 程序与创建ASP与ASP.NET程序是很相似的。

在这篇教程里, 我们只考察了ASP.NET MVC框架的基本特性。在以后的教程里,我们将钻的更深入到诸如控制器,控制器 action,视图,视图数据和HTML helpers等主题里

原文地址:http://www.asp.net/learn/mvc/tutorial-21-cs.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics