【问题标题】:Do I need services.AddMvc or not?我需要 services.AddMvc 吗?
【发布时间】:2020-01-04 00:12:16
【问题描述】:

我试图找出为什么在所有文档中我在 Startup.cs 中看到 services.AddMvcservices.AddMvcCore 但是在由 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


【解决方案1】:

正如文档所说,asp.net core 3.0+ 模板使用这些新的 方法AddControllersWithViews,AddRazorPages,AddControllers 而不是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 页面)。

【讨论】:

  • 如果你有 mvc、razor pages 和 web api 端点的混合,你会怎么做?
【解决方案2】:

我认为您看到的所有文档都是针对 .net core 2.* 的。
更多信息 -> https://docs.microsoft.com/en-us/aspnet/core/migration/22-to-30?view=aspnetcore-2.2&tabs=visual-studio

【讨论】:

    猜你喜欢
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多