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,如以下程序所示。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Threading.Tasks;
  5. namespace MyFirstCoreWebApp.Controllers {
  6. public class HomeController:Controller {
  7. public string Index() {
  8. return "Hello, World! this message is from Home Controller...";
  9. }
  10. }
  11. }

步骤 5:当您转到网站的根目录时,您希望看到控制器的响应。但是,目前显示的是 index.cshtml 文件。

我们希望控制器响应而不是输出 index.cshtml 文件。

步骤 6:现在转到 Startup 类中的 Configure 方法,添加 MVC 路由 MapControllerRoute

步骤 7:除了添加 NuGet 包和中间件,我们还需要在 ConfigureServices 中添加 AddControllersWithViews 设置 MVC 模式。这里是 Startup 类的完整实现。

  1. using Microsoft.AspNet.Builder;
  2. using Microsoft.AspNet.Hosting;
  3. using Microsoft.AspNet.Http;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using Microsoft.Extensions.Configuration;
  6. namespace MyFirstCoreWebApp
  7. {
  8. public class Startup
  9. {
  10. public Startup(IConfiguration configuration)
  11. {
  12. Configuration = configuration;
  13. }
  14. public IConfiguration Configuration { get; }
  15. // 此方法由运行时调用。使用此方法将服务添加到容器中。
  16. public void ConfigureServices(IServiceCollection services)
  17. {
  18. services.AddRazorPages();
  19. //MVC 模式
  20. services.AddControllersWithViews();
  21. }
  22. // 此方法由运行时调用。使用此方法配置 HTTP 请求管道。
  23. public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  24. {
  25. if (env.IsDevelopment())
  26. {
  27. app.UseDeveloperExceptionPage();
  28. }
  29. else
  30. {
  31. app.UseExceptionHandler("/Error");
  32. }
  33. app.UseStaticFiles();
  34. app.UseRouting();
  35. app.UseAuthorization();
  36. //MVC 常规路由
  37. app.UseEndpoints(endpoints =>
  38. {
  39. endpoints.MapControllerRoute(
  40. name: "default",
  41. pattern: "{controller=Home}/{action=Index}/{id?}");
  42. });
  43. }
  44. }
  45. }

步骤 8:保存 Startup.cs 文件,然后转到浏览器并刷新它。您现在将收到来自我们的主控制器的响应。