ASP.NET Core 设置 MVC 框架
在本章中,我们将在 FirstAppDemo 应用程序中设置 MVC 框架。我们将在 ASP.NET Core(更具体地说,ASP.NET Core MVC框架)之上构建一个 web 应用程序。从技术上讲,我们可以只使用中间件构建整个应用程序,但 ASP.NET Core MVC 为我们提供了可以轻松创建 HTML 页面和基于 HTTP 的 API 的功能。
要在我们的空项目中设置 MVC 框架,请按照以下步骤:
- 安装 Microsoft.AspNetCore.Mvc.Core 包,它使我们能够访问框架提供的程序集和类。
- 安装包后,我们需要注册 ASP.NET MVC 在运行时所需的所有服务。我们将在 ConfigureServices 方法中执行此操作。
- 最后,我们需要为 ASP.NET MVC 添加中间件以接收请求。本质上,这件中间件接受一个 HTTP 请求,并尝试将该请求定向到我们将编写的 C# 类。
步骤 1:右键单击 Manage NuGet Packages(管理 NuGet 包),进入 NuGet 包管理器。安装 Microsoft.AspNetCore.Mvc.Core 包,它使我们能够访问框架提供的程序集和类。

步骤 2:安装 Microsoft.AspNetCore.Mvc.Core 包后,我们需要注册 ASP.NET Core Mvc 在运行时所需的所有服务。我们将使用 ConfigureServices 方法执行此操作。我们还将添加一个简单的控制器,我们将看到该控制器的一些输出。
让我们在此项目中添加一个新文件夹,并将其称为 Controller 控制器。在此文件夹中,我们可以在解决方案资源管理器中放置多个控制器,如下所示。

现在右键单击 Controllers 文件夹并选择添加→ 类菜单选项。

步骤 3:这里我们要添加一个简单的 C# 类,并调用这个类 HomeController,然后单击上面截图中的添加按钮。记得 HomeController 需要继承 Controller。

这将是我们的默认页面。
步骤4:让我们定义一个返回字符串的公共方法,并调用该方法 Index,如以下程序所示。
using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;namespace MyFirstCoreWebApp.Controllers {public class HomeController:Controller {public string Index() {return "Hello, World! this message is from Home Controller...";}}}
步骤 5:当您转到网站的根目录时,您希望看到控制器的响应。但是,目前显示的是 index.cshtml 文件。

我们希望控制器响应而不是输出 index.cshtml 文件。
步骤 6:现在转到 Startup 类中的 Configure 方法,添加 MVC 路由 MapControllerRoute。
步骤 7:除了添加 NuGet 包和中间件,我们还需要在 ConfigureServices 中添加 AddControllersWithViews 设置 MVC 模式。这里是 Startup 类的完整实现。
using Microsoft.AspNet.Builder;using Microsoft.AspNet.Hosting;using Microsoft.AspNet.Http;using Microsoft.Extensions.DependencyInjection;using Microsoft.Extensions.Configuration;namespace MyFirstCoreWebApp{public class Startup{public Startup(IConfiguration configuration){Configuration = configuration;}public IConfiguration Configuration { get; }// 此方法由运行时调用。使用此方法将服务添加到容器中。public void ConfigureServices(IServiceCollection services){services.AddRazorPages();//MVC 模式services.AddControllersWithViews();}// 此方法由运行时调用。使用此方法配置 HTTP 请求管道。public void Configure(IApplicationBuilder app, IWebHostEnvironment env){if (env.IsDevelopment()){app.UseDeveloperExceptionPage();}else{app.UseExceptionHandler("/Error");}app.UseStaticFiles();app.UseRouting();app.UseAuthorization();//MVC 常规路由app.UseEndpoints(endpoints =>{endpoints.MapControllerRoute(name: "default",pattern: "{controller=Home}/{action=Index}/{id?}");});}}}
步骤 8:保存 Startup.cs 文件,然后转到浏览器并刷新它。您现在将收到来自我们的主控制器的响应。
