Asp.net核心2中View和Page有什么区别?

时间:2018-05-03 14:49:08

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

我是Asp.net核心2的新手.Asp.net核心2中的新内容之一是页面。 但我无法弄清楚

  1. 页面和视图有什么区别?
  2. 网页与观看有什么好处?
  3. 在什么情况下应该使用该页面?
  4. 我可以同时使用两者吗?

1 个答案:

答案 0 :(得分:12)

真的,你的问题是Razor Page和传统MVC之间的区别。两者都使用Razor视图。 Razor Page是独立的(有点)。它有一个像Web窗体一样的代码隐藏,所以从技术上讲,你有一个cshtml和一个cshtml.cs文件,后者将充当你的控制器和你的模型。然而,对于传统的MVC,您将拥有单独的FooControllerFooViewModelFoo.cshtml。除了一些轻微的功能差异(例如必须使用基于约定的“动作”,例如OnGetAsyncOnPostAsync等等与Razor页面),这几乎就是它。

正如我所看到的,Razor Pages的主要好处是它的独立性。关于特定功能的所有代码基本上都集中在一个地方。然而,其缺点是它可能使代码重用变得困难,或者至少在某些地方不那么直观。就个人而言,我认为MVC提供的明确责任分工是更理想的方法,也不那么“神奇”。 Razor Pages的营销接触点之一是它非常简单。这可能是真的,但它的“轻松”归咎于Web开发人员实际上应该认识到的东西,这可能是危险的。如果你实际上并不了解某些事情是如何起作用的,那么你就不会知道你做得对不对。

我有偏见,但要诚实地回答“什么时候应该使用Razor Pages?”,我会说永远不会。我不喜欢混合责任,所有的“魔法”等等。自从他们被介绍以来,这里的ASP.NET核心问题数量激增,而且大多数Razor Pages问题都是关于显而易见的事情或者是使用MVC最不直观。也就是说,如果你 要使用它们,那么它们对CRUD类型的东西最有意义 - 这些东西没有很多功能并且相当简单和/或重复。< / p>

最后,是的,你可以自由地混合和匹配Razor Pages和MVC。但是,应该注意的是,对每个人来说都不是很明显:Razor Pages在用作Razor Pages时仅用作Razor Pages。换句话说,如果您创建一个带有代码隐藏(Razor页面)的视图,然后将该视图用作MVC操作,部分等的返回,则实际上并未使用代码隐藏,只是“观察”部分。实际上,为了更准确,它被“使用”但仅用于在一般意义上为视图提供模型,因为视图使用代码隐藏中的Page作为其模型。但是,这实际上并不是“活跃的”,因为页面操作不会被触发,事情可能无法正确初始化等等。