代码之家  ›  专栏  ›  技术社区  ›  topcool

Asp中视图和页面的区别是什么。净核心2?

  •  20
  • topcool  · 技术社区  · 7 年前

    我是Asp新手。净核心2。Asp中的新事物之一。net core 2是页面。 但我想不出来

    1. 页面和视图之间的区别是什么?
    2. 与视图相比,页面有哪些好处?
    3. 在什么情况下应该使用该页面?
    4. 我可以同时使用两者吗?
    1 回复  |  直到 7 年前
        1
  •  36
  •   Chris Pratt    7 年前

    真的,你的问题是Razor页面和传统MVC有什么区别。两者都利用Razor视图。剃须刀页面是独立的(有点)。它有一个类似于Web表单的代码隐藏,所以从技术上讲 cshtml 和a cshtml.cs 文件,后者将充当控制器和模型。然而,使用传统的MVC,您将有 FooController ,则, FooViewModel Foo.cshtml .除了一些轻微的功能差异(例如必须使用基于约定的“操作”,如 OnGetAsync ,则, OnPostAsync 等)差不多就是这样。

    在我看来,Razor Pages的主要好处是它的自包含性。关于特定功能的所有代码基本上都在一个地方。然而,这样做的缺点是,它会使代码重用变得困难,或者至少在某些地方没有那么直观。就我个人而言,我认为MVC提供的明确职责划分是更理想的方法,也不太“神奇”。剃须刀页面的一个营销接触点是,它非常简单。这可能是真的,但它的“轻松”归功于抽象出web开发人员实际上应该知道的东西,这可能是危险的。如果你真的不了解某件事是如何运作的,你就不知道你做的事情是否正确。

    我有偏见,但老实说,“什么时候应该使用刮胡刀?”,我会说永远不会。我不喜欢职责的混合,所有的“魔法”,等等,因为他们引入了ASP的数量。NET核心问题激增,大多数剃须刀页面的问题都是关于MVC显而易见或至少更直观的事情。也就是说,如果你 如果要使用它们,它们在CRUD类型的东西上最有意义,这些东西没有太多功能,而且相当直接和/或重复。

    最后,是的,您可以自由混合和匹配Razor页面和MVC。然而,应该注意的是,这并不是每个人都清楚的:剃须刀页面仅在用作剃须刀页面时才起到剃须刀页面的作用。换句话说,如果您创建了一个带有代码隐藏(Razor页面)的视图,然后将该视图用作MVC操作、部分等的返回,那么实际上不会使用代码隐藏,只会使用“视图”部分。实际上,更准确地说,它是“使用”的,但仅在一般意义上为视图提供模型,因为视图使用 Page 在代码背后作为其模型。然而,这实际上不会是“活动的”,因为页面操作不会被命中,事情可能不会正确初始化,等等。