.net核心剃须刀页面和.net核心MVC有什么区别?

时间:2020-01-22 16:37:12

标签: .net-core asp.net-core-mvc

当前,我发现.net核心具有.net核心Razor Page应用程序和.net核心MVC应用程序。在这里,我有一些与此有关的问题。

  • Razor页面应用程序有什么用途?因为它类似于MVC。
  • 在MVC上使用Razor页面应用程序有哪些好处?
  • 哪个更快?
  • 有人可以建议我们何时需要使用Razor页面以及何时使用MVC吗?

2 个答案:

答案 0 :(得分:1)

在功能上,Razor Page应用程序和MVC应用程序之间没有区别。 ASP.NET Core是ASP.NET Core。如果需要,您可以在同一应用程序中全部使用所有MVC,Razor页面,API和Razor组件(即Blazor)。项目模板仅用于使您以一种或另一种方式开始,但没有锁定。

就Razor Pages与MVC方法而言,Razor Pages本质上没有控制器。它们遵循MVVM(模型-视图-视图模型)模式,而MVC适当遵循MVC(模型-视图-控制器)模式。本质上,使用Razor页面时,来自MVC的“控制器”已内置到页面的模型中。

何时使用,这主要是样式偏好。 MVC更加灵活,可以在所有用例中使用。剃刀页面稍微简单一些,但实用性也受到更多限制。即,它们仅支持GET和POST方法,并且大多数情况下仅返回视图(即Razor页面的cshtml部分)。您可以各种各样的让它们返回JSON之类的东西,但是它们确实不适合这样做。如果您的Razor Page需要通过AJAX检索数据,则最好为此创建MVC / API样式的控制器。

Razor Pages的最后一个好处是它们是独立的且谨慎的,而MVC往往更模糊(多个动作返回多个不同的视图)。它们对于独立的事物非常有用。例如,ASP.NET Core的“身份默认默认UI”使用诸如RegisterLoginResetPassword等的Razor页面,其中每件事的逻辑都是一个Razor页面。在MVC方法中,您将拥有AccountController之类的东西,它将具有所有逻辑,并且具有一组断开连接的视图来分别为每个操作提供服务。并不是说MVC方法是好是坏,但是Razor Pages在这里更容易理解。但是,这再次与风格有关,而不是一种或另一种至关重要的方式。

最后,总而言之,“更快”或“更好”都不是。这只是个人喜好。

答案 1 :(得分:0)

与使用控制器和视图相比,Introduction to Razor Pages的“剃刀页面”可以使以页面为中心的方案的编码更容易且更有效率。

Razor Pages vs ASP.NET Core MVC的演讲自以为是,但也包含指向该主题最佳文章的链接。

我们发现做出此决定的最佳方法是使用这两种方法进行一些非平凡的开发。

当我将Get started with ASP.NET Core MVC移植到Get started with Razor Pages in ASP.NET Core时,没有看到Razor Pages(RP)优于具有控制器和视图的MVC。直到我将Get started with EF Core in an ASP.NET MVC web app移植到Razor Pages with Entity Framework Core in ASP.NET Core时,我看到了显着的生产力优势。 MVC / EF绝不接近真正的生产应用程序,它要简单得多。然而,它具有足够的复杂性来证明RP相对于MVC的优势。