.net core razor 页面和 .net core MVC 有什么区别?

Har*_*avi 3 asp.net-core-mvc .net-core

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

  • Razor页面应用有什么用?因为它和MVC类似。
  • Razor页面应用在MVC上有哪些好处?
  • 哪一个更快?
  • 谁能建议我们什么时候需要使用 Razor 页面以及什么时候使用 MVC?

Chr*_*att 6

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

就 Razor Page 与 MVC 方法而言,Razor Pages 本质上没有控制器。它们遵循 MVVM(模型-视图-视图模型)模式,而 MVC 则适当地遵循 MVC(模型-视图-控制器)模式。本质上,对于 Razor 页面,MVC 中的“控制器”内置于页面的模型中。

何时使用这主要是一种风格偏好。MVC 更加灵活,适用于所有用例。Razor Pages 稍微简单一些,但实用性也比较有限。也就是说,它们仅支持 GET 和 POST 方法,并且大多数情况下仅返回视图(即cshtmlRazor 页面的部分)。您可以它们返回 JSON 等,但它们确实不适合这样做。如果您有一个需要通过 AJAX 检索数据的 Razor 页面,最好为此创建一个 MVC/API 样式的控制器。

Razor 页面的最后一个好处是它们独立且谨慎,而 MVC 往往更加模糊(多个操作返回多个不同的视图)。它们非常适合独立的事物。例如,ASP.NET Core 的身份默认 UI 使用 Razor 页面,例如、Register、等,其中每个单独事物的所有逻辑都是一个 Razor 页面。在 MVC 方法中,您将拥有类似 的东西,其中包含所有内容的所有逻辑,以及一组断开连接的视图来单独为每个操作提供服务。这并不是说 MVC 方法不好或错误,而是 Razor Pages 在这里更容易理解。然而,这又是关于风格的,而不是任何关键的方式。LoginResetPasswordAccountController

最后,总结一下,两者都不是“更快”或“更好”。这只是个人喜好。

  • > 也就是说,它们仅支持 GET 和 POST 方法,并且大多数情况下仅返回视图 所有这些都是错误的。可以添加任何 HTTP 谓词的处理程序方法。 (2认同)