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 文件,然后转到浏览器并刷新它。您现在将收到来自我们的主控制器的响应。