【问题标题】:Why is app.UseMvc() added when creating a Razor Pages Project?为什么在创建 Razor Pages 项目时添加了 app.UseMvc()?
【发布时间】:2019-08-12 06:07:01
【问题描述】:

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

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

默认模板似乎创建了一个“纯”RP 项目 - 例如。 Pages 文件夹而不是 MVC 的 Controller/Models/Views。

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

实际上,这很好,可以继续前进,但随后遵循 RP 指南和假定的约定似乎变得混乱 - 例如。 _PageStart.cshtml 在我的测试中实际上不起作用。

我哪里出错了——我是在读它还是在乎太多?希望有人能启发我!提前感谢您的尝试:)

【问题讨论】:

  • 对于它的价值,您不必二选一。特定的项目模板只是为了让您快速入门,但您可以在同一个项目中使用 Razor Pages、MVC 甚至 Web Api。 Razor Pages 在某些方面更适合,而 MVC 在某些方面更适合。您应该酌情混合搭配。不要试图强制你的代码采用一种或另一种特定的约定。

标签: asp.net-core razor razor-pages


【解决方案1】:

剃须刀页面虽然不使用控制器,但实际上是 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

【讨论】:

    猜你喜欢
    • 2021-03-24
    • 2018-05-09
    • 1970-01-01
    • 2018-03-28
    • 1970-01-01
    • 2019-05-24
    • 2019-01-29
    • 2020-03-15
    • 1970-01-01
    相关资源
    最近更新 更多