零基础入门ASP.NET MVC项目创建手把手教程助你快速掌握Web开发核心技能从环境配置到项目运行一步到位轻松构建现代化网站应用

1. ASP.NET MVC简介

ASP.NET MVC是微软推出的一个用于构建现代化Web应用程序的框架。MVC代表Model-View-Controller(模型-视图-控制器),这是一种软件设计模式,将应用程序分为三个主要组件:

Model(模型):负责处理应用程序的数据和业务逻辑。

View(视图):负责显示用户界面。

Controller(控制器):接收用户输入并协调模型和视图。

ASP.NET MVC框架提供了以下优势:

关注点分离,使代码更易于管理和维护

完全控制HTML输出

便于单元测试

支持TDD(测试驱动开发)

强大的路由系统

与现有ASP.NET功能的无缝集成

2. 环境配置

在开始创建ASP.NET MVC项目之前,我们需要配置开发环境。以下是详细步骤:

2.1 安装Visual Studio

Visual Studio是微软提供的集成开发环境(IDE),是开发ASP.NET MVC应用程序的首选工具。

访问Visual Studio官方网站:https://visualstudio.microsoft.com/

下载Visual Studio Installer(推荐使用Visual Studio 2022或2019版本)

运行安装程序,选择”社区”版(免费)或其他付费版本

在安装选项中,确保选择”ASP.NET和Web开发”工作负载

点击安装按钮,等待安装完成

2.2 安装.NET SDK

ASP.NET MVC需要.NET SDK的支持。最新版本的Visual Studio通常会自动安装所需的.NET SDK,但如果需要单独安装或更新:

访问.NET下载页面:https://dotnet.microsoft.com/download

下载适用于你的操作系统的.NET SDK(推荐.NET 6.0或更高版本)

运行安装程序并按照提示完成安装

2.3 验证安装

安装完成后,可以通过以下步骤验证环境是否配置正确:

打开Visual Studio

选择”创建新项目”

在项目模板中搜索”ASP.NET”,如果能看到相关模板,则说明环境配置正确

或者,打开命令提示符或PowerShell,运行以下命令:

dotnet --version

如果显示.NET SDK版本号,则说明安装成功。

3. 创建第一个ASP.NET MVC项目

现在,让我们创建第一个ASP.NET MVC项目:

打开Visual Studio

选择”创建新项目”

在项目模板中搜索并选择”ASP.NET Web应用程序(.NET Framework)”

点击”下一步”

输入项目名称(例如”MyFirstMvcApp”)和位置

点击”创建”

在下一个窗口中,选择”MVC”模板

确保身份验证设置为”无身份验证”(对于初学者,我们先不考虑身份验证)

点击”创建”

Visual Studio将创建一个新的ASP.NET MVC项目,并自动生成一些基本文件和文件夹结构。

4. 项目结构解析

创建完成后,让我们了解一下ASP.NET MVC项目的基本结构:

MyFirstMvcApp/

├── App_Data/

├── App_Start/

│ ├── BundleConfig.cs

│ ├── FilterConfig.cs

│ ├── RouteConfig.cs

│ └── WebApiConfig.cs

├── Content/

│ ├── bootstrap.css

│ ├── bootstrap.min.css

│ ├── Site.css

│ └── themes/

├── Controllers/

│ ├── AccountController.cs

│ ├── HomeController.cs

│ └── ManageController.cs

├── Models/

├── Scripts/

├── Views/

│ ├── Account/

│ ├── Home/

│ ├── Shared/

│ │ ├── _Layout.cshtml

│ │ ├── _LoginPartial.cshtml

│ │ └── Error.cshtml

│ └── Web.config

├── favicon.ico

├── Global.asax

├── packages.config

├── Web.config

└── MyFirstMvcApp.csproj

主要文件夹和文件的作用:

App_Data:用于存储数据库文件和其他数据。

App_Start:包含应用程序启动时需要运行的配置文件。

RouteConfig.cs:定义URL路由规则。

BundleConfig.cs:定义CSS和JavaScript文件的捆绑配置。

FilterConfig.cs:注册全局过滤器。

WebApiConfig.cs:配置Web API(如果项目包含Web API)。

Content:包含CSS文件和图像等静态内容。

Controllers:包含所有控制器类。

Models:包含模型类。

Scripts:包含JavaScript文件。

Views:包含所有视图文件。

Shared:包含共享视图,如布局页(_Layout.cshtml)。

Global.asax:应用程序的入口点,处理应用程序级别的事件。

Web.config:包含应用程序的配置设置。

5. 创建控制器和视图

现在,让我们创建一个简单的控制器和对应的视图。

5.1 创建控制器

在解决方案资源管理器中,右键单击”Controllers”文件夹

选择”添加” > “控制器”

选择”MVC 5 控制器 - 空”

点击”添加”

输入控制器名称(例如”HelloWorldController”)

点击”添加”

Visual Studio将创建一个名为HelloWorldController.cs的新文件,其中包含以下代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

namespace MyFirstMvcApp.Controllers

{

public class HelloWorldController : Controller

{

// GET: HelloWorld

public ActionResult Index()

{

return View();

}

}

}

5.2 创建视图

现在,让我们为Index操作创建一个视图:

在HelloWorldController.cs文件中,右键单击Index方法

选择”添加视图”

保持默认设置(视图名称为”Index”,模板为”Empty”,不使用布局页)

点击”添加”

Visual Studio将在Views/HelloWorld/文件夹下创建一个名为Index.cshtml的新文件。编辑这个文件,添加以下内容:

@{

ViewBag.Title = "Hello World";

}

Hello World!

这是我的第一个ASP.NET MVC视图。

5.3 运行应用程序

现在,让我们运行应用程序并查看结果:

按F5或点击工具栏上的”开始调试”按钮

浏览器将打开并显示默认主页

在URL中输入/HelloWorld(例如:https://localhost:44300/HelloWorld)

浏览器将显示我们刚刚创建的”Hello World”页面

6. 添加模型和数据库交互

接下来,让我们创建一个模型类并设置数据库交互。

6.1 创建模型类

在解决方案资源管理器中,右键单击”Models”文件夹

选择”添加” > “类”

输入类名(例如”Product”)

点击”添加”

编辑Product.cs文件,添加以下代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.ComponentModel.DataAnnotations;

namespace MyFirstMvcApp.Models

{

public class Product

{

public int Id { get; set; }

[Required]

[StringLength(100)]

public string Name { get; set; }

[DataType(DataType.MultilineText)]

public string Description { get; set; }

[Range(0.01, 10000.00)]

public decimal Price { get; set; }

[DataType(DataType.Date)]

public DateTime ReleaseDate { get; set; }

}

}

6.2 创建DbContext

为了与数据库交互,我们需要创建一个DbContext类:

确保已安装Entity Framework包。如果没有,右键单击项目,选择”管理NuGet程序包”,搜索并安装”EntityFramework”。

在Models文件夹中创建一个新类,命名为”ProductDbContext”。

编辑ProductDbContext.cs文件,添加以下代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Data.Entity;

namespace MyFirstMvcApp.Models

{

public class ProductDbContext : DbContext

{

public ProductDbContext() : base("ProductDbContext")

{

}

public DbSet Products { get; set; }

}

}

6.3 配置数据库连接

打开Web.config文件,在节点中添加以下连接字符串:

connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\Products.mdf;Initial Catalog=Products;Integrated Security=True"

providerName="System.Data.SqlClient" />

6.4 启用数据库迁移

数据库迁移是Entity Framework的一个功能,允许我们管理数据库架构的变化:

打开”程序包管理器控制台”(工具 > NuGet包管理器 > 程序包管理器控制台)

运行以下命令启用迁移:

Enable-Migrations

运行以下命令创建初始迁移:

Add-Migration InitialCreate

运行以下命令应用迁移并创建数据库:

Update-Database

现在,我们的数据库已经创建并准备好存储产品数据。

7. 实现基本的CRUD操作

CRUD代表创建(Create)、读取(Read)、更新(Update)和删除(Delete),这是大多数应用程序的基本操作。让我们为Product模型实现这些操作。

7.1 创建ProductController

在Controllers文件夹中创建一个新控制器,命名为”ProductController”。

编辑ProductController.cs文件,添加以下代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using MyFirstMvcApp.Models;

namespace MyFirstMvcApp.Controllers

{

public class ProductController : Controller

{

private ProductDbContext db = new ProductDbContext();

// GET: Product

public ActionResult Index()

{

return View(db.Products.ToList());

}

// GET: Product/Details/5

public ActionResult Details(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);

}

Product product = db.Products.Find(id);

if (product == null)

{

return HttpNotFound();

}

return View(product);

}

// GET: Product/Create

public ActionResult Create()

{

return View();

}

// POST: Product/Create

[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Create([Bind(Include = "Id,Name,Description,Price,ReleaseDate")] Product product)

{

if (ModelState.IsValid)

{

db.Products.Add(product);

db.SaveChanges();

return RedirectToAction("Index");

}

return View(product);

}

// GET: Product/Edit/5

public ActionResult Edit(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);

}

Product product = db.Products.Find(id);

if (product == null)

{

return HttpNotFound();

}

return View(product);

}

// POST: Product/Edit/5

[HttpPost]

[ValidateAntiForgeryToken]

public ActionResult Edit([Bind(Include = "Id,Name,Description,Price,ReleaseDate")] Product product)

{

if (ModelState.IsValid)

{

db.Entry(product).State = System.Data.Entity.EntityState.Modified;

db.SaveChanges();

return RedirectToAction("Index");

}

return View(product);

}

// GET: Product/Delete/5

public ActionResult Delete(int? id)

{

if (id == null)

{

return new HttpStatusCodeResult(System.Net.HttpStatusCode.BadRequest);

}

Product product = db.Products.Find(id);

if (product == null)

{

return HttpNotFound();

}

return View(product);

}

// POST: Product/Delete/5

[HttpPost, ActionName("Delete")]

[ValidateAntiForgeryToken]

public ActionResult DeleteConfirmed(int id)

{

Product product = db.Products.Find(id);

db.Products.Remove(product);

db.SaveChanges();

return RedirectToAction("Index");

}

protected override void Dispose(bool disposing)

{

if (disposing)

{

db.Dispose();

}

base.Dispose(disposing);

}

}

}

7.2 创建视图

现在,让我们为ProductController的每个操作创建视图:

7.2.1 Index视图

在ProductController.cs文件中,右键单击Index方法

选择”添加视图”

设置以下选项:

视图名称:Index

模板:List

模型类:Product (MyFirstMvcApp.Models)

数据上下文类:ProductDbContext (MyFirstMvcApp.Models)

勾选”使用布局页”

点击”添加”

Visual Studio将创建一个包含产品列表的视图。你可以根据需要自定义这个视图。

7.2.2 Create视图

在ProductController.cs文件中,右键单击Create方法

选择”添加视图”

设置以下选项:

视图名称:Create

模板:Create

模型类:Product (MyFirstMvcApp.Models)

数据上下文类:ProductDbContext (MyFirstMvcApp.Models)

勾选”使用布局页”

点击”添加”

7.2.3 Edit视图

在ProductController.cs文件中,右键单击Edit方法

选择”添加视图”

设置以下选项:

视图名称:Edit

模板:Edit

模型类:Product (MyFirstMvcApp.Models)

数据上下文类:ProductDbContext (MyFirstMvcApp.Models)

勾选”使用布局页”

点击”添加”

7.2.4 Details视图

在ProductController.cs文件中,右键单击Details方法

选择”添加视图”

设置以下选项:

视图名称:Details

模板:Details

模型类:Product (MyFirstMvcApp.Models)

数据上下文类:ProductDbContext (MyFirstMvcApp.Models)

勾选”使用布局页”

点击”添加”

7.2.5 Delete视图

在ProductController.cs文件中,右键单击Delete方法

选择”添加视图”

设置以下选项:

视图名称:Delete

模板:Delete

模型类:Product (MyFirstMvcApp.Models)

数据上下文类:ProductDbContext (MyFirstMvcApp.Models)

勾选”使用布局页”

点击”添加”

7.3 添加导航链接

为了方便用户访问产品管理功能,让我们在网站导航栏中添加一个链接:

打开Views/Shared/_Layout.cshtml文件

找到导航菜单的代码(通常在