1. ASP.NET MVC 4.0 简介:它是什么,为什么学它,以及它和现在流行的 .NET 有什么关系。
  2. 开发环境准备:如何在现代电脑上配置一个可以学习和运行 MVC 4.0 项目的环境。
  3. 核心概念:MVC 架构、项目结构、Routting(路由)等基础理论。
  4. 实战项目:创建一个简单的“任务清单”应用:通过一步步编码,让你掌握最核心的 MVC 开发流程。
  5. 进阶学习资源:学完基础后,可以继续学习的方向。

ASP.NET MVC 4.0 简介

什么是 ASP.NET MVC?

  • ASP.NET:是微软用于构建 Web 应用程序的技术框架。
  • MVC:是一种软件设计架构模式,全称为 Model-View-Controller(模型-视图-控制器),它将应用程序的三个核心部分分离开来,使代码更清晰、更易于维护和测试。

MVC 三大核心组件:

  1. Model (模型)

    asp.net mvc4.0教程
    (图片来源网络,侵删)
    • 职责:负责数据和业务逻辑,它代表应用程序的数据(比如数据库中的用户信息、文章内容),并包含处理这些数据的逻辑(比如验证用户输入、计算价格等)。
    • 特点:Model 是完全独立于 UI 的,它不知道 View 和 Controller 的存在。
  2. View (视图)

    • 职责:负责用户界面,它展示 Model 的数据,并允许用户与数据进行交互(比如输入框、按钮、表格)。
    • 特点:View 通常是 HTML 模板,使用 Razor 语法(在 MVC 3/4/5 中非常流行)来嵌入 C# 代码,以动态显示数据,它应该只负责显示,不包含复杂的业务逻辑。
  3. Controller (控制器)

    • 职责:是应用程序的“交通警察”,它接收来自用户的请求(比如点击了一个链接或提交了一个表单),调用 Model 来处理数据,然后选择一个合适的 View 来返回响应。
    • 特点:Controller 本身不处理数据,也不负责生成 HTML,它只是协调 Model 和 View 之间的工作。

为什么学习 MVC 4.0?(以及为什么现在不直接用它做新项目)

  • 优点

    • 关注点分离:代码结构清晰,易于团队协作和维护。
    • 可测试性强:因为各个组件是解耦的,所以可以轻松地为 Model 和 Controller 编写单元测试。
    • 对 SEO 友好:URL 结构清晰(如 /Products/Details/5),有利于搜索引擎优化。
    • 完全控制:对 HTML 和请求/响应的生命周期有完全的控制权。
  • 现状与未来

    asp.net mvc4.0教程
    (图片来源网络,侵删)
    • MVC 4.0 已经非常古老,微软官方已停止对其提供安全更新和支持绝对不应该用于任何新的、面向生产环境的项目!
    • 它的“精神”和核心思想被后来的 ASP.NET Core MVC 继承和发展了,现在的 Web 开发,微软主推的是 .NET 5/6/7/8 及其对应的 ASP.NET Core 框架。

为什么还要学它?

  1. 学习成本低:很多经典的教程和书籍是基于 MVC 4/5 的,对于初学者来说,概念更简单,没有像 .NET Core 那样复杂的依赖注入和配置。
  2. 理解核心概念:MVC 的基本模式(Model-View-Controller-路由)在 .NET Core 中没有本质变化,学好 MVC 4.0,再转向 .NET Core MVC 会非常快,因为你已经懂了“骨架”。
  3. 维护旧项目:如果你需要维护一个使用 ASP.NET MVC 4.0 的旧系统,那么学习它是必要的。

开发环境准备

你不需要安装 Visual Studio 2012(当年 MVC 4.0 的配套 IDE),我们可以使用现代的工具来运行它。

使用 Visual Studio 2025 + .NET Framework 4.5 (推荐)

这是最接近原生体验的方式。

  1. 安装 Visual Studio 2025 Community (免费版): https://visualstudio.microsoft.com/zh-hans/vs/community/
  2. 安装 .NET Framework 4.5.1 Developer Pack:
  3. 创建和打开项目:
    • 打开 VS2025,选择“创建新项目”。
    • 在模板搜索框中输入 "ASP.NET Web 应用程序"注意:不要选择 "ASP.NET Core Web 应用程序"。
    • 选择模板后,点击“下一步”,给项目命名。
    • 在下一个窗口中,框架版本选择 .NET Framework 4.5,然后从左侧选择 "MVC" 模板。
    • 点击“创建”,你就可以得到一个功能完整的 MVC 4.0/5.0 项目了。

使用 VS Code + .NET CLI (适合熟悉命令行的用户)

  1. 安装 Visual Studio Code: https://code.visualstudio.com/
  2. 安装 C# Dev Kit 扩展: 在 VS Code 的扩展市场搜索并安装。
  3. 安装 .NET SDK: 你需要安装一个包含 .NET Framework 运行时的旧版 SDK,一个比较方便的版本是 .NET Framework 4.7.2 SDK,你可以从 .NET 官网的归档版本中找到。
  4. 创建项目:
    • 打开终端,运行命令:dotnet new mvc -f net452 -n MyMvc4Project
    • 这会在 MyMvc4Project 文件夹中创建一个 MVC 4.0 项目。
    • 用 VS Code 打开这个文件夹,按 F5 即可启动调试。

核心概念

项目结构

当你创建一个新的 MVC 项目后,会看到几个关键的文件夹:

  • Controllers/: 存放所有的控制器类,每个类通常对应一个功能模块。
  • Models/: 存放所有的模型类。
  • Views/: 存放所有的视图文件,Views 文件夹下通常会有与控制器同名的子文件夹(如 Home/, Account/)。
  • App_Start/: 存放应用程序的配置文件,最重要的一个是 RouteConfig.cs,用于配置 URL 路由。
  • App_Data/: 用于存放数据文件,如 .mdf 数据库文件。
  • Scripts/: 存放 JavaScript 文件。
  • Content/: 存放 CSS 和图片等静态内容。

路由

路由是连接 URL 和 Controller/Action 的桥梁,它的作用是将用户请求的 URL 映射到相应的控制器方法上。

asp.net mvc4.0教程
(图片来源网络,侵删)

打开 App_Start/RouteConfig.cs,你会看到默认的配置:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}
  • url: "{controller}/{action}/{id}":这是 URL 的模式。
    • {controller}: 将被替换为控制器的名称(不包含 "Controller" 后缀,如 HomeController -> Home)。
    • {action}: 将被替换为控制器中的方法(Action)名称。
    • {id}: 是一个可选的参数,用于传递 ID 等信息。
  • defaults: 定义了默认值,如果用户只访问 http://your-site.com/controller 默认是 Homeaction 默认是 Index

示例:

  • http://your-site.com/ -> 映射到 HomeControllerIndex 方法。
  • http://your-site.com/Home/About -> 映射到 HomeControllerAbout 方法。
  • http://your-site.com/Product/Details/5 -> 映射到 ProductControllerDetails 方法,并传递 id=5

实战项目:创建一个简单的“任务清单”应用

我们将创建一个可以添加和显示任务列表的简单应用。

创建 Model (模型)

  1. Models 文件夹上右键 -> 添加 -> 类。
  2. 命名为 TaskItem.cs
  3. 编写代码:
// Models/TaskItem.cs
using System;
using System.ComponentModel.DataAnnotations;
namespace Mvc4Tutorial.Models
{
    public class TaskItem
    {
        public int Id { get; set; }
        [Required(ErrorMessage = "任务标题不能为空")]
        [Display(Name = "任务标题")]
        public string Title { get; set; }
        [Display(Name = "任务描述")]
        public string Description { get; set; }
        [Display(Name = "是否完成")]
        public bool IsDone { get; set; }
        [Display(Name = "创建时间")]
        public DateTime CreatedDate { get; set; }
        public TaskItem()
        {
            CreatedDate = DateTime.Now;
            IsDone = false;
        }
    }
}

创建 Controller (控制器)

  1. Controllers 文件夹上右键 -> 添加 -> 控制器。
  2. 选择 “MVC 5 控制器 - 空” (即使你用的是 VS2025,创建针对 .NET Framework 的 MVC 项目时,模板仍然是旧的命名,但功能是兼容的)。
  3. 命名为 TaskController.cs
  4. 编写代码,实现一个列表页和一个添加页。
// Controllers/TaskController.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Mvc4Tutorial.Models;
namespace Mvc4Tutorial.Controllers
{
    public class TaskController : Controller
    {
        // 模拟一个数据库,实际项目中这里会是 Entity Framework 等
        private static List<TaskItem> _taskDb = new List<TaskItem>();
        // GET: Task
        public ActionResult Index()
        {
            // 获取所有任务,并按创建时间倒序排列
            var tasks = _taskDb.OrderByDescending(t => t.CreatedDate).ToList();
            return View(tasks);
        }
        // GET: Task/Create
        public ActionResult Create()
        {
            // 返回一个空的创建表单页面
            return View();
        }
        // POST: Task/Create
        [HttpPost]
        [ValidateAntiForgeryToken] // 防止跨站请求伪造
        public ActionResult Create(TaskItem newTask)
        {
            if (ModelState.IsValid)
            {
                // 模拟保存到数据库
                _taskDb.Add(newTask);
                return RedirectToAction("Index"); // 重定向到列表页
            }
            return View(newTask); // 如果模型验证失败,返回表单并显示错误信息
        }
    }
}

创建 View (视图)

  1. TaskControllerIndex 方法上右键 -> 添加视图。
  2. 选择 “Razor” 引擎,“创建强类型视图”,在模型类下拉框中选择 Mvc4Tutorial.Models.TaskItem scaffolding template(模板)选择 "List"
  3. 点击“添加”,VS 会自动生成一个 Views/Task/Index.cshtml 文件。
  4. 同样,在 Create 方法上右键 -> 添加视图,选择 “Razor”,创建强类型视图,模型类选择 Mvc4Tutorial.Models.TaskItem scaffolding template(模板)选择 "Create"
  5. 点击“添加”。

运行你的项目,在浏览器地址栏输入 /Task,你应该能看到一个任务列表页面,并且可以通过 /Task/Create 访问添加页面。

修改和美化视图 (可选)

打开 Views/Task/Index.cshtml,你可以看到自动生成的代码,修改一下,让它更美观:

@model IEnumerable<Mvc4Tutorial.Models.TaskItem>
@{
    ViewBag.Title = "任务列表";
}
<h2>我的任务清单</h2>
<p>
    @Html.ActionLink("添加新任务", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Title)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.Description)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.IsDone)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.CreatedDate)
        </th>
        <th></th>
    </tr>
@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Title)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Description)
        </td>
        <td>
            @if (item.IsDone)
            {
                <span style="color:green;">已完成</span>
            }
            else
            {
                <span style="color:red;">未完成</span>
            }
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.CreatedDate)
        </td>
        <td>
            @Html.ActionLink("编辑", "Edit", new { id=item.Id }) |
            @Html.ActionLink("详情", "Details", new { id=item.Id }) |
            @Html.ActionLink("删除", "Delete", new { id=item.Id })
        </td>
    </tr>
}
</table>

打开 Views/Task/Create.cshtml,也可以稍微调整一下布局。


进阶学习资源

当你掌握了以上基础后,可以继续学习以下内容:

  • 数据访问:学习使用 Entity Framework (EF),这是微软的 ORM(对象关系映射)框架,可以让你用 C# 对象直接操作数据库,而不用写 SQL 语句。
  • 表单验证:深入学习 DataAnnotations,实现更复杂的客户端和服务器端验证。
  • 会员和授权:学习如何使用 ASP.NET Identity(MVC 5 引入的更现代的会员系统)来管理用户登录、注册和权限控制。
  • 依赖注入:了解什么是依赖注入以及它如何让代码更灵活、更易于测试(虽然 MVC 4 本身对 DI 的支持不如 .NET Core 完善,但了解这个概念很重要)。
  • JavaScript 前端框架:学习使用 jQuery、KnockoutJS 或 AngularJS 来构建更丰富的用户交互体验。

推荐书籍和网站

  • 经典书籍:《ASP.NET MVC 4 高级编程》(Pro ASP.NET MVC 4),虽然书很旧,但前几章关于 MVC 基础的讲解非常经典。
  • 在线教程:虽然很多新教程都是针对 .NET Core 的,但可以重点关注那些讲解“MVC 思想”而非“.NET Core 特定配置”的内容,官方的 ASP.NET Core 教程,忽略 .NET Core 的项目创建部分,专注于其 MVC 的结构和代码逻辑,这些与 MVC 4 是相通的。

学习 ASP.NET MVC 4.0 是一个非常好的起点,它能帮助你牢固地理解 MVC 设计模式,虽然它不是当前工业界的主流技术,但掌握它后,你会发现学习现代的 ASP.NET Core MVC 变得非常轻松,因为核心思想一脉相承,祝你学习愉快!