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

MVC 3.0 Code First 入门

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.75/5 (18投票s)

2012年7月31日

CPOL

6分钟阅读

viewsIcon

69457

该系列文章的第一部分,旨在介绍如何创建一个信息系统,教师可以管理他们的学生和课程。本教程将深入讲解 MVC 的 Code First 方法,并涉及 Nuget 包管理器中的 MvcScaffolding 的使用。

引言  

为了在暑期进行一项关于使用 MVC 3.0 的独立研究,我整理了这篇文章,以展示这项技术是多么的强大,以及它提供的令人难以置信的易用性,能够让你在快速敏捷的环境中为企业或个人开发 Web 应用程序。这篇文章将介绍一种使用 MVC 的新方法,称为 Code First 方法,它使得应用程序的开发非常简单,无需太多麻烦。我们还将通过使用一个名为 Nuget 包管理器 的扩展来构建我们的 Views 和 Controllers。 

关于 MVC     

MVC 是 Model-View-Controller 的缩写,这是一种将你的应用程序分为三个主要组件—“模型、视图和控制器”的架构模式。 这里 有一个很好的资源,解释了这种设计模式。在继续之前,请务必查看此资源。 

可以在 这里 找到一些很棒的教程,它们可以帮助你理解 MVC。如果你完成了其中一个教程,那么跟随本教程应该没有问题。    

Microsoft 刚刚发布了 MVC 4.0 RC ,它配备了新的功能,如 Web API 支持、移动应用功能以及对异步 方法的增强支持。  发布候选说明 中阅读完整的功能列表。    

尽管新版本仍处于发布候选阶段,但新增的功能仅能让你轻松地开发从移动到 Web 的高度复杂的 Web 应用程序。 

先决条件 

要开始,你必须安装以下软件

1. Visual Studio 2010 

2. MVC 3.0 

3. Service Pack 1

4. Nuget  

5. 第一部分的源代码 *建议下载,方便跟随学习,但非必需*

我们将要构建什么  

在本教程中,我们将使用 Code First 方法构建一个学生管理系统。在这个学生管理系统中,教师可以添加课程和学生。他们将能够管理每个课程中的学生,并为与不同课程相关的讲座做笔记。本教程将是一个三部分系列,将帮助你构建一个学生信息系统,允许教师管理学生、讲座、课程,为讲座和/或学生做笔记,并跟踪学生的出勤情况。它还会提醒教师学生是否因缺课过多而落后。在本篇文章中,我们将介绍系列文章的第一部分。第一部分将创建基础层来启动这个项目。完成第一部分后,用户将能够添加和创建课程或学生,以及为学生和课程做笔记。

这个信息系统可以用很少的代码创建一个,如果你熟悉这种方法,可以在一小时内完成。这里有一个关于 Code First 方法 的精彩描述,在继续之前你应该阅读它。 

**第二部分和第三部分将在本文创建日期后几周内,在我有一些空闲时间时发布** 

第一部分  

步骤 1 - 创建项目    

1. 打开 Visual Studio,在文件菜单下 选择创建新项目。  

2. 选择创建新的 MVC 3 项目。 

3. 创建一个具有 Internet Application 模板的 MVC 3 项目,并使用 HTML5 语义标记,就像 图 1 一样。为你的项目/解决方案命名,随意命名。    

 

 图 1 

步骤 2 - 创建模型  

1. 在解决方案资源管理器中,右键单击 Model 文件夹并创建一个新类。 图 2 

 图 2 

2. 将类命名为 ManagementModel.cs 

创建类后,类中会创建以下代码。  

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
namespace MvcApplication.Models
{
    public class ManagementModel
    {
    }
}     

3. 将 public class MangementModel 更改为以下代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
 
namespace MvcApplication.Models
{
    public class Course
    {
        public int CourseId { get; set; }
        public string Name { get; set; }
        public virtual ICollection<Student> Students { get; set; }
        public virtual ICollection<Lecture> Lectures { get; set; } 
    }
 
    public class Lecture
    {
        public int LectureId { get; set; }
        public string Name { get; set; }
        public DateTime Date { get; set; }
        public string Description { get; set; }
        public string Notes { get; set; }
        public int CourseId { get; set; }
        public virtual Course Course { get; set; }
    }
 
    public class Student
    {
        public int StudentId { get; set; }
        public string Name { get; set; }
        public string Notes { get; set; }
        public int CourseId { get; set; }
        public virtual Course Course { get; set; }
    }
}   

从我们创建的模型中,MVC 将自动在我们的 app-data 文件夹中创建一个数据库,该数据库将在完成步骤 3 后存储所有数据,这消除了大量繁琐的工作。正如你所见,Courses 类与 Lectures 和 Students 类之间存在一对多关系。要了解更多关于创建具有不同关系的模型的信息,以及更深入地理解我们将在步骤 3 中做什么,请点击这里

步骤 3 - 使用 Nuget 命令行进行脚手架

为了继续,你必须确保已安装最新版本的 Nuget,如本文先决条件 部分所列。 

Nuget 是管理 Mvc 项目扩展/包的好方法。它使得创建我们正在构建的应用程序变得极其容易且速度快。如果你是 Nuget 新手,这里 是一个很好的资源,解释了安装和可以在 Nuget 命令行输入的各种命令。开始时,我们将确保已安装最新版本的 Entity Framework。 

1. 在工具菜单的 Library Package 子菜单下打开 Nuget 命令行控制台。

2. 在命令行中输入 Update-Package EntityFramework ,如图图 3 所示。   

图 3 

在更新 Entity Framework 后,我们将要安装一个新包,该包允许我们轻松地将模型脚手架成 View 和 Controller。为此,我们将添加一个名为 MVC Scaffolding 的扩展。  Steve Sanderson 的博客是那些考虑这种方法的人以及更深入的教程的绝佳资源。 Steve Sanderson 的博客。 

3. 在 Nuget 命令行中键入以下命令: Install-Package MvcScaffolding 

4. 然后在命令行中键入以下命令

Scaffold Controller Course 

这将自动从 ManagementModel.cs 文件中的 Course 类生成 Controller 和 View。

5. 通过键入以下代码为 ManagementModel.cs 中的其他三个类(Student 和 Lecture)生成 Controller: 

Scaffold Controller Student 

然后 

Scaffold Controller Lecture  

6. 运行解决方案,并通过在本地主机端口号后添加以下内容来创建一个新课程:localhost:yourprojectport#/Courses/Create  

正如你所见,一个自动创建的表单允许我们创建一个新课程。  

7. 创建一个你选择的所需名称的新课程。我将创建一个名为“系统分析与设计”的新课程。  

创建课程后,你将被重定向到 localhost/Courses 视图。此视图包含一个网格,显示你创建的课程,如图图 4 所示。它还包括每个课程的学生和讲座数量。目前有 0 名学生和 0 节讲座,因为我们还没有创建任何学生或讲座。让我们添加一些学生和讲座。

8. 在 Course Grid View 下选择 Create New,再添加几个课程。   

 

 图 4  

9. 转到 url localhost/yourprojectport#/Students/Create,填写表单来创建一些学生。 

10. 转到 url localhost/yourprojectport#/Lectures/Create,为每个课程创建一些讲座。   

你可能已经注意到,MVC 已经自动为我们的表单进行了错误处理,以确保用户输入每个字段的正确要求,如图 5 所示。  


图 5 

步骤 4 - 布局视图 

1. 在解决方案资源管理器中 Views 下的 Shared 文件夹中,你会注意到一个名为 _Layout.cshtml 的文件。此文件允许你创建网站的外部布局。布局将包围每个创建的 View。让我们添加菜单项,以便用户可以轻松导航到 Students/Lectures 或 Courses 视图。为此,我们将在此代码添加到 <nav> 标签下。

   <li>@Html.ActionLink("Courses", "Index", "Courses")</li>
   <li>@Html.ActionLink("Lectures", "Index", "Lectures")</li>
   <li>@Html.ActionLink("Students", "Index", "Students")</li>   

进行上述更改后,你的布局视图应如下所示。 

<pre lang="html"><!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" />
    <script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
    <script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
</head>
<body>
    <div class="page">
        <header>
            <div id="title">
                <h1>My MVC Application</h1>
            </div>
            <div id="logindisplay">
                @Html.Partial("_LogOnPartial")
            </div>
            <nav>
                <ul id="menu">
                    <li>@Html.ActionLink("Home", "Index", "Home")</li>
                    <li>@Html.ActionLink("About", "About", "Home")</li>
 
                     <li>@Html.ActionLink("Courses", "Index", "Courses")</li>
                    <li>@Html.ActionLink("Lectures", "Index", "Lectures")</li>
                     <li>@Html.ActionLink("Students", "Index", "Students")</li>
                </ul>
            </nav>
        </header>
        <section id="main">
            @RenderBody()
        </section>
        <footer>
        </footer>
    </div>
</body>
</html>    

 2. 运行解决方案,你就完成了第一部分!最终结果应如图图 6-9 所示。 

 

图 6 


图 7 

图 8 

图 9 

摘要

正如你所见,使用 MvcScaffolding 在 Mvc 3.0 中使用 Code First 方法创建简单的应用程序非常容易。在第二部分中,我们将实现教师考勤功能,以及一个通知系统,允许教师查看那些经常缺课的学生。第三部分将讨论安全性,并深入探讨我们的 Controllers。请稍后回来获取这些教程。

© . All rights reserved.