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

top*_*ool 6 asp.net-mvc razor asp.net-core asp.net-core-2.0

我是Asp.net核心2的新手.Asp.net核心2的新内容之一是页面.但我无法弄明白

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

Chr*_*att 16

真的,你的问题是Razor Page和传统MVC之间的区别.两者都使用Razor视图.Razor Page是独立的(有点).它有一个像Web窗体一样的代码隐藏,所以从技术上讲,你有一个cshtml和一个cshtml.cs文件,后者将充当你的控制器和你的模型.然而,与传统的MVC,你就必须独立FooController,FooViewModelFoo.cshtml.除了一些细微的功能差异(如必须使用以公约为基础的"行动"一样OnGetAsync,OnPostAsync等用剃刀页)这几乎是它.

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

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

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

  • 不,相反.我认为Razor Pages是Web Forms的重生以及随之而来的所有弊端.尽管如此,从代码的角度来看,它们并不像Web Forms那么糟糕,并且节约使用可能并不算太糟糕.但是,我认为MVC提供了更好的整体解决方案,并带来了更好,更易维护的代码库. (5认同)
  • @ChrisPratt"网页形式的重生" - 当我第一次看到它时,这正是我的想法大声笑 (4认同)
  • @ChrisPratt 你的评论是典型的有偏见的开发人员,他们从未做过任何重要的 RP 编程。所有的罪恶都是错误的。请参阅[为什么选择 MVC 教程而不是 Razor Pages](https://github.com/dotnet/AspNetCore.Docs/issues/6146) 提供更多信息并添加所有最佳 **MVC VS 的链接。RP** 内容。 (3认同)
  • 非常感谢,您的回答对初学者来说是一个很好的指导。如果您还知道其他情况请告诉 (2认同)