.net core .NETCoreRazor页面和.NETCoreMVC之间有什么区别?

.net core .NETCoreRazor页面和.NETCoreMVC之间有什么区别?,.net-core,asp.net-core-mvc,.net Core,Asp.net Core Mvc,目前,我发现.net core有.net core Razor页面应用程序和.net core MVC应用程序。这里我有一些与之相关的问题 Razor页面应用程序的用途是什么?因为它类似于MVC MVC上的Razor页面应用程序有哪些好处 哪一个更快 有人能建议我们什么时候需要使用Razor页面,什么时候使用MVC吗 从功能上讲,Razor页面应用程序和MVC应用程序之间没有区别。ASP.NET核心是ASP.NET核心。如果需要,您可以在同一个应用程序中使用所有MVC、Razor页面、API和

目前,我发现.net core有.net core Razor页面应用程序和.net core MVC应用程序。这里我有一些与之相关的问题

  • Razor页面应用程序的用途是什么?因为它类似于MVC
  • MVC上的Razor页面应用程序有哪些好处
  • 哪一个更快
  • 有人能建议我们什么时候需要使用Razor页面,什么时候使用MVC吗

从功能上讲,Razor页面应用程序和MVC应用程序之间没有区别。ASP.NET核心是ASP.NET核心。如果需要,您可以在同一个应用程序中使用所有MVC、Razor页面、API和Razor组件(即Blazor)。项目模板的作用只是让您以某种方式开始,但没有锁定

就Razor页面与MVC的比较而言,Razor页面基本上没有控制器。它们遵循MVVM(模型-视图-模型)模式,而MVC适当地遵循MVC(模型-视图-控制器)模式。本质上,通过Razor页面,MVC的“控制器”被构建到页面的模型中

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

Razor页面的最后一个好处是它们是独立的、谨慎的,而MVC往往更模糊(多个操作返回多个不同的视图)。它们对于自给自足的事物非常有效。例如,ASP.NET Core的标识默认UI使用Razor页面,如
注册
登录
重置密码
,等等,其中每个事物的所有逻辑都是一个Razor页面。在MVC方法中,您将有一个类似于
AccountController
的东西,它将拥有所有逻辑,以及一组断开连接的视图来分别为每个操作提供服务。这并不是说MVC方法是坏的或错误的,而是Razor页面在这里更容易消化。然而,再次强调,这一切都是关于风格的,而不是任何一种方式的批评

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

来自Razor Pages的内容可以使编写以页面为中心的场景比使用控制器和视图更容易、更高效

有一个固执己见的介绍,但也包括链接到该主题的最佳帖子

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


当我移植到时,我没有看到Razor Pages(RP)比带有控制器和视图的MVC有什么显著的优势。直到我移植到,我才看到一个显著的生产力优势。MVC/EF绝对不是一个真正的生产应用程序,它要简单得多。然而,它有足够的复杂性来证明RP相对于MVC的优势。

>也就是说,它们只支持GET和POST方法,并且大多数情况下只返回所有不正确的视图。可以添加任何HTTP谓词的处理程序方法。