Asp.net core mvc ASP.NET核心剃须刀页面与完整MVC核心

Asp.net core mvc ASP.NET核心剃须刀页面与完整MVC核心,asp.net-core-mvc,razor-pages,Asp.net Core Mvc,Razor Pages,这里有一个问题,SteveSmith从拥有更少文件的角度,善意地解释了使用Razor页面优于完整MVC的好处 我使用Razor页面已经有一段时间了,我注意到尽管Razor页面具有简单的优点,但在定制路由、构建文件夹和复杂的视图模型(页面模型似乎杂乱无章)方面,它有点复杂 因此,问题是: 如果除了页面的简单性之外,还有什么别的东西可以让我更喜欢Razor页面而不是控制器/视图——具体来说,我对这两个框架的性能感兴趣 可以同时合并Razor页面和控制器/视图吗 如果有人分享你关于使用Razor页面更

这里有一个问题,SteveSmith从拥有更少文件的角度,善意地解释了使用Razor页面优于完整MVC的好处

我使用Razor页面已经有一段时间了,我注意到尽管Razor页面具有简单的优点,但在定制路由、构建文件夹和复杂的视图模型(页面模型似乎杂乱无章)方面,它有点复杂

因此,问题是:

  • 如果除了页面的简单性之外,还有什么别的东西可以让我更喜欢Razor页面而不是控制器/视图——具体来说,我对这两个框架的性能感兴趣
  • 可以同时合并Razor页面和控制器/视图吗

  • 如果有人分享你关于使用Razor页面更好地理解这个框架的想法(优点和缺点),我也会很感激

    我们最近发布了一个相当不错的应用程序,前端使用Razor页面,客户端组件使用MVC控制器使用API。我的经验是:

    当您的内容围绕站点上实际“页面”的概念进行结构化时,pages范例工作得很好。考虑一些事情,比如联系我们或关于甚至登录页面。当然,这些都可以通过MVC来完成,但MVC确实是不必要的。一个简单的页面就足够了。将控制器留给更多类似控制器的东西,如产品目录或用户数据库


    如果MVC架构主要围绕视图结构展开,那么razor页面可能是一个很好的选择。您仍然可以将MVC位用于API相关的内容,但页面的好处是,前端结构变得更显式,而非隐式(“基于约定”)与MVC一样,每个动作都可以或不可以有一个通常以动作命名的视图。

    尽管Chris对标准ASP.NET核心实现附带的框架提供了明确的意见。人们还必须注意到,微软推荐Razor Pages有着更深层次的原因,我很清楚,因为我是Razor Pages的忠实粉丝

    如果除了页面的简单性之外还有什么其他的东西可以选择的话 控制器/视图上的页面-特别是我感兴趣的 这两个框架的性能如何

    • 要回答这个问题,如果你问这个问题的话,你听起来好像还没有在MVC中完成一个非常繁重的应用程序。控制器中充斥着代码,考虑到并非所有程序员都遵循良好的编程实践(注释和适当的代码管理),这可能会非常混乱。。。因此,想象一个控制器有几个页面方法,逻辑都放在里面。好的,结果是你很容易得到一个由超过400行代码组成的控制器,这些代码很容易被分割,因为它涉及不同的部分(页面或方法)。那么,如何打破这300多行代码,并根据它们所做的事情将它们分开呢?这就是剃须刀页面背后的全部想法。您只将与特定页面相关的代码放在它自己的模型中,而不是将与10个页面相关的代码混合在一个文件中。其他人可能会争辩说,你可以创建外部类,在这些类中你可以使用这种逻辑来保持控制器干净,但是为什么要多做一点呢?其次,性能不应该是一个问题。我认为这一点无关紧要
    是否可以将Razor页面和控制器/视图组合在一起 同一时间

    • MVC是WebAPI在.NET中的巅峰。所以这两者可以在任何时间任何地点混合。Razor页面与“真实页面”非常相似,但它们可以灵活地适应任何内容,无论是目录还是您希望构建的任何内容。每个页面都可以提供自己的请求获取、发布等。。。因此,你可以用剃须刀页面做任何你想做的事情。还必须清楚的是,路由对于Razor页面并不复杂。它和MVC一样灵活
    我使用剃须刀页面已经有一段时间了,我注意到尽管 剃刀页面的优点是简单,当它 自定义路由、结构化文件夹和复杂视图模型 (页面模型似乎杂乱无章)

    • 我不同意这一点。对于Razor页面,路由是灵活的,只是您还没有解决它。另外,razor页面可以构建一个非常复杂的视图,因为您可以将尽可能多的视图模型绑定到它,而无需任何额外的工作。使用注释规则
      [BindProperties]
      [BindProperty]
      ,您可以将任意多个字段导入到视图中。。。记住,绑定是双向的
    除非你开始使用Razor页面,否则你会听到很多关于它的意见,有些会影响你使用它,有些像Chris会给你真正的反馈。但我的建议是,Razor页面已经进化,在任何大小的应用程序中表现最好

    我希望你觉得这本书读起来很有趣


    .Net核心家庭

    克里斯和莫西娅给出了很好的答案。克里斯写道

    你听起来好像还没有在MVC中开发出一款真正意义上的应用程序

    当我移植到时,我没有看到Razor Pages(RP)比带有控制器和视图的MVC有什么显著的优势。直到我移植到,我才看到一个显著的生产力优势。MVC/EF绝对不是一个真正的生产应用程序,它要简单得多。然而,它有足够的复杂性来证明RP相对于MVC的优势

    在与客户的访谈中,我听说坚持使用UI的控制器和视图的最常见原因是,他们有一个现有的控制器/视图代码库

    与MVC相比,RP更受欢迎的最常见原因是防止控制器臃肿,以及更好地集成页面和视图

    及 提供更多信息,并添加指向所有最佳MVC与RP内容的链接

    中许多最好的评论都是隐藏的。搜索隐藏并选择