首页 > 解决方案 > 我需要 services.AddMvc 吗?

问题描述

我试图找出为什么在我看到的所有文档services.AddMvcservices.AddMvcCoreStartup.cs 但在由 VS 创建的 ASP.NET Core MVC 3.1 模板中我没有 AddMvc 但 mvc 仍然有效....

我唯一与 MVC 相关的是

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});

谁能解释为什么?

标签: asp.net-core

解决方案


正如文档所说,asp.net core 3.0+ 模板使用这些新方法AddControllersWithViews,,AddRazorPagesAddControllers不是AddMvc.

但是,AddMvc它会继续像以前的版本一样运行。AddMvc()实际上只是一堆注册服务的其他方法的包装器。见来源:

https://github.com/aspnet/AspNetCore/blob/0303c9e90b5b48b309a78c2ec9911db1812e6bf3/src/Mvc/Mvc/src/MvcServiceCollectionExtensions.cs#L27

您可以使用AddMvc注册 MVC、Razor 页面、API 或使用个人AddControllersWithViews(仅适用于 MVC)和AddRazorPages(仅适用于 Razor 页面)。


推荐阅读