top*_*ool 6 asp.net-mvc razor asp.net-core asp.net-core-2.0
我是Asp.net核心2的新手.Asp.net核心2的新内容之一是页面.但我无法弄明白
Chr*_*att 16
真的,你的问题是Razor Page和传统MVC之间的区别.两者都使用Razor视图.Razor Page是独立的(有点).它有一个像Web窗体一样的代码隐藏,所以从技术上讲,你有一个cshtml和一个cshtml.cs文件,后者将充当你的控制器和你的模型.然而,与传统的MVC,你就必须独立FooController,FooViewModel和Foo.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代码隐藏作为其模型.但是,这实际上并不是"活跃的",因为页面操作不会被触发,事情可能无法正确初始化等等.
| 归档时间: |
|
| 查看次数: |
1703 次 |
| 最近记录: |