下面是一份从零到能独立开发的 ASP.NET MVC 经典教程(基于 ASP.NET MVC 5 + Razor + Entity Framework 6),适合初学者到中级开发者。虽然现在主流是 ASP.NET Core,但 MVC 5 在很多企业内部系统、旧项目维护中仍然非常常见,学好了对 Core 也完全无缝衔接。
1. 环境准备(2025 年还能正常安装)
| 工具 | 推荐版本 | 下载方式 |
|---|---|---|
| Visual Studio | 2022 Community(免费) | 官网下载 |
| .NET Framework | 4.7.2 或 4.8 | VS 安装时勾选 |
| SQL Server | Express 2019/2022(免费) | 官网下载 |
| IIS Express(自带) | – | – |
安装时一定要勾选“Web 开发工作负载”。
2. 创建第一个 ASP.NET MVC 5 项目
- 打开 Visual Studio → 创建新项目
- 选择 “ASP.NET Web 应用程序 (.NET Framework)”
- 项目名:
MvcDemo - 选择模板:MVC(勾选“添加单元测试”可选)
- 身份验证:无身份验证(先学基础,再学 Identity)
项目结构一目了然:
MvcDemo/
├─ App_Start/
├─ Controllers/ ← 控制器
├─ Models/ ← 模型
├─ Views/ ← 视图(.cshtml 或 .vbhtml)
│ ├─ Home/
│ ├─ Shared/ ← _Layout.cshtml 在这里
│ └─ Account/
├─ Content/ ← css
├─ Scripts/ ← js
└─ web.config
3. MVC 核心三件套快速上手
Controller(控制器)
// Controllers/ProductsController.cs
public class ProductsController : Controller
{
private readonly ApplicationDbContext db = new ApplicationDbContext();
// GET: /Products/
public ActionResult Index()
{
var products = db.Products.ToList();
return View(products); // 自动找 Views/Products/Index.cshtml
}
// GET: /Products/Details/5
public ActionResult Details(int id)
{
var product = db.Products.Find(id);
if (product == null) return HttpNotFound();
return View(product);
}
}
Model(模型)
// Models/Product.cs
public class Product
{
public int Id { get; set; }
[Required, StringLength(100)]
public string Name { get; set; }
[Column(TypeName = "money")]
public decimal Price { get; set; }
public bool IsActive { get; set; }
}
View(视图)- Razor 语法(C#)
<!-- Views/Products/Index.cshtml -->
@model IEnumerable<MvcDemo.Models.Product>
<h2>商品列表</h2>
<table class="table table-striped">
<thead>
<tr>
<th>@Html.DisplayNameFor(m => m.Name)</th>
<th>@Html.DisplayNameFor(m => m.Price)</th>
<th>操作</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@Html.ActionLink(item.Name, "Details", new { id = item.Id })</td>
<td>@item.Price.ToString("C")</td>
<td>
@Html.ActionLink("编辑", "Edit", new { id = item.Id }) |
@Html.ActionLink("删除", "Delete", new { id = item.Id })
</td>
</tr>
}
</tbody>
</table>
<p>@Html.ActionLink("新增商品", "Create", null, new { @class = "btn btn-primary" })</p>
4. 使用 Entity Framework 6(Code First)
- 安装 NuGet 包(必装三个):
EntityFramework
EntityFramework.SqlServer
Microsoft.AspNet.Mvc (通常已自带)
- 创建 DbContext
// Models/ApplicationDbContext.cs
public class ApplicationDbContext : DbContext
{
public ApplicationDbContext() : base("DefaultConnection") { }
public DbSet<Product> Products { get; set; }
public DbSet<Category> Categories { get; set; }
}
- 在 Web.config 添加连接字符串
<connectionStrings>
<add name="DefaultConnection"
connectionString="Server=(localdb)\MSSQLLocalDB;Database=MvcDemoDb;Trusted_Connection=true;"
providerName="System.Data.SqlClient" />
</connectionStrings>
- 启用迁移(Package Manager Console)
Enable-Migrations
Add-Migration InitialCreate
Update-Database
5. 常用功能实战清单(建议按顺序做)
| 功能 | 关键知识点 | 建议练习 |
|---|---|---|
| CRUD 完整增删改查 | Action、HttpGet/HttpPost、ModelState | 商品管理 |
| 表单验证 | Data Annotations、[ValidateAntiForgeryToken] | 注册页面 |
| 分页 | PagedList.Mvc 或自己写 Skip/Take | 商品列表 |
| 布局页 _Layout | @RenderBody、@RenderSection、Sections | 全站统一布局 |
| 部分视图 PartialView | @Html.Partial、@Html.Action | 菜单、购物车小部件 |
| 区域 Area | 后台管理、前台分离 | Admin 区域 |
| 身份认证 | ASP.NET Identity 2.x(MVC5 自带模板) | 登录/注册 |
| 过滤器 Filter | [Authorize]、自定义异常过滤器 | 权限控制 |
| Ajax 无刷新 | Unobtrusive Ajax、jQuery 或 fetch | 加入购物车 |
| Bundles 打包压缩 | BundleConfig.cs | 提升加载速度 |
6. 推荐免费完整实战项目(跟着敲完基本功就扎实了)
- MVC 音乐商店(官方经典)
https://github.com/MicrosoftDocs/visualstudio-docs/tree/main/docs/downloads/mvc-music-store - 简易博客系统(推荐自己写)
功能:文章增删改查 + 分类 + 评论 + 后台管理 - 企业 OA 小系统
功能:员工管理、请假审批、公告、文件上传
7. 学习资源(2025 年仍然有效)
- 微软官方文档(最权威):https://learn.microsoft.com/zh-cn/aspnet/mvc/
- 《Pro ASP.NET MVC 5》中文版(经典书)
- Bilibili 搜索 “ASP.NET MVC 5 教程” → 黑马、传智、老张等都有 100+ 集免费课
8. 最后提醒
- MVC 5 项目默认用 .cshtml(C# Razor),你如果想用 VB.NET 就选 .vbhtml,语法基本一样,只是控制器用 VB 写。
- 学会 MVC 5 后,转 ASP.NET Core MVC/Core Razor Pages 只需要 1~2 周。
需要我给你一个完整可运行的 MVC 5 + EF6 + Bootstrap 5 后台管理系统模板(带登录、菜单、CRUD 示例),直接发你下载也可以,随时说一声!祝你玩得开心~