为什么在创建 Razor Pages 项目时添加 app.UseMvc()?

Why is app.UseMvc() added when creating a Razor Pages Project?

我是 ASP.NET CoreRazor 的新手,如果这在某处非常明显,我深表歉意。

经过一些研究,我选择使用 Razor Pages 而不是 MVC,因为我认为会有更多好处,并且喜欢页面模型背后的代码等想法。我选择了 ASP.NET Core Web Application -> Web Application 并针对 ASP.NET Core 2.2.

创建一个新项目

默认模板似乎可以创建 "pure" RP 项目 - 例如。 Pages 文件夹而不是 MVC 的 Controller/Models/Views.

我真的很困惑,因为 RP 项目中仍然有 MVC 的元素 - 例如。 app.useMvc()在Startup.cs中,包含_ViewStart.cshtml,使用ViewData["x"]。

实际上这很好,可以继续,但随后遵循 RP 指南和假定的约定似乎失控了 - 例如。 _PageStart.cshtml 根据我的测试实际上不起作用。

我哪里出错了 - 我是在读它还是太在意了?希望有人能赐教!在此先感谢您的尝试:)

razor 页面虽然不使用控制器,但实际上是 mvc 框架的一部分,需要您调用 app.UseMvc() 才能初始化它所需的一切,包括路由等。

您还可以使用 UseMvc 对您的应用程序进行一些配置:

 app.AddMvc()
    .AddRazorPagesOptions(options =>
        {
            options.Conventions.Add("options");
        });

有关这方面的更多信息,请访问 https://docs.microsoft.com/en-us/aspnet/core/razor-pages/razor-pages-conventions?view=aspnetcore-2.2