75
|
Display Name Camilo Terevinto · 技术社区 · 7 年前 |
![]() |
1
71
从…起 this
MVC
大型控制器
它处理了许多不同的依赖项和视图模型,并返回了许多
不同的观点。这导致了很大的复杂性,并且经常导致控制器不遵循
剃刀页面 解决这个问题 通过在web应用程序中封装给定逻辑页的服务器端逻辑来解决问题。没有服务器端逻辑的Razor页面可以简单地由Razor文件组成(例如Index.cshtml)。然而,大多数非平凡的Razor页面将具有关联的页面模型 类,按照约定,该类的名称与Razor文件的名称相同。cs扩展(例如,Index.cshtml.cs)。这个页面模型类结合了控制器和ViewModel的职责。与使用控制器动作方法处理请求不同,像OnGet()这样的页面模型处理程序是 执行,默认情况下呈现其关联页面。 Razor页面简化了构建过程 ASP中的单个页面。NET核心应用程序,同时仍提供ASP的所有架构功能。NET Core MVC。对于新的基于页面的功能,它们是一个很好的默认选择。 何时使用MVC 如果您正在构建web API,MVC模式比尝试使用Razor页面更有意义。 如果您的项目将只公开web API端点,那么您最好从web API项目开始 模板,但在其他方面它很容易添加控制器和相关的API端点到任何ASP。净核心 应用程序。如果重新迁移现有应用程序,还应该使用基于视图的MVC方法 来自ASP。NET MVC 5或更早版本到ASP。NET核心MVC,您希望使用最少的 气力完成初始迁移后,您可以评估采用 剃须刀页面的新功能,甚至作为一个批发迁移。 注: 无论您选择使用Razor页面还是MVC视图构建web应用程序,您的应用程序都将具有 相似的性能 并将包括对依赖注入、过滤器、模型绑定、验证等的支持。 更新: 我读了更多的原因 this github 问题评论人 scott sauber : 我们正在为一个[复杂的]健康保险门户网站使用Razor页面。。。我们有60多个页面,我可以说,对于服务器呈现的HTML,我永远不会回到MVC。这也不仅仅是为了简单的事情。健康保险领域本身就很复杂,再加上它是一个多租户应用程序(我们将产品出售给其他保险公司),这增加了复杂性,因为应用程序高度可配置,因为不同的保险公司做的事情略有不同。 为什么要使用它?
更新2: here MVC变得非常复杂,非常快, MVC在脸书上分崩离析 .
|
![]() |
2
50
Razor页面针对基于页面的工作流进行了优化,可以在这些场景中使用,与传统MVC模型相比,移动部件更少。这是因为您不需要处理控制器、动作、路由、视图模型和视图(通常是这样)。相反,您的路由是基于约定的,您的页面模型集控制器、动作和视图模型于一体。当然,页面将替换视图。你也不必像MVC中那样有那么多的文件夹,进一步简化了你的项目。 从…起 ASP.NET Core - Simpler ASP.NET MVC Apps with Razor Pages ,2017年9月MSDN文章作者 Steve Smith
第三方编辑-经典MVC文件夹组织的缺点ASP.NET Core - Feature Slices for ASP.NET Core MVC ,一篇来自2016年9月的旧MSDN文章,描述了为什么组织视图和控制器的经典MVC约定对于大型项目可能有缺点。本文给出了四个松散相关的应用程序概念的示例: 忍者、植物、海盗和僵尸 . 本文概述了一种在默认文件夹约定之外构建它们的方法,即按功能或责任区域将文件组织到文件夹中。 |
![]() |
3
10
微软正在回归WebForms方法,以简化项目结构,相信“约定优先于配置”的口号,同时对开发人员隐藏配置,使事情更快。但它的缺点是,一切都会再次混合。这看起来不是一个明智的组织举措。但是嘿一些新的东西必须引起开发者对微软的注意。
在大型项目中,模型和控制器在同一个文件中,维护将是一场噩梦。它适用于只有2个属性长的类,但违反了面向对象的开闭原则。您应该设计和使用一个架构,该架构可以随时间增长(可扩展),并且仍然是稳定和逻辑的(无需重新构建项目),只需使用相同的模式进行扩展即可。 |
![]() |
4
3
作为一名软件架构师,我会自动使用设计模式。我最喜欢的是 外观 设计模式。您可以将与HomeController相关的所有内容隐藏在HomeController后面,并且可以对存储库执行相同的操作。
对的支持如何 共享 和 分组 Razor页面中的操作。如果您查看MVC控制器,您可以看到可以根据功能对控制器动作进行分组。你可以说主页就是这样一种功能。然后你有一个HomeController,里面有About()和Contact(),但对于Razor页面,这将是不同的页面。也许你有一个大的HomeController,里面有5个其他视图。它们都可以在同一个HomeController中分组。 控制器有两个Razor页面没有的东西:
Razor pages的处理方式是什么:目录的使用我认为:
问题: 对于一个简单的家来说,这就足够了。但是假设我们有一个XController,用于同一存储库中的所有操作。您可以在XController的初始化器函数中初始化该存储库。但是对于X子目录中的页面,您必须再次对所有X操作执行该操作。那是干的吗?
问题
或Razor页面是否只适用于简单的网站,这是否可以作为这个版本的Razor页面的结论。 |
![]() |
5
0
Blazor服务器的架构很奇怪。它看起来像是一个使用信号器的聊天应用程序。我对此类应用程序的经验是,事件可能会丢失。我不想丢失事件,更好的是它们是堆叠的,并保证像邮件一样处理。 |
![]() |
6
-3
2013年,开发者们在论坛上问“微软是什么意思,Silverlight不是推荐的……” 只是这一次,MVC将被宣告为死亡和长寿的MVVM。 你很可能期望MVC被扔进垃圾堆,慢慢地,但在18个月后会加速,你花在学习MVC上的任何时间都会被扔进同一个垃圾堆。 |
![]() |
user1946932 · .Net正则表达式在所有字符前添加空格 5 月前 |
![]() |
TSDrake · 发布ASP。没有特定文件夹的.NET应用程序 6 月前 |
![]() |
Vengat Ramanan · 用户登录Asp时隐藏导航和页脚。网络核心 10 月前 |
![]() |
ramamoorthy_villi · 输入验证错误外键字段 10 月前 |
![]() |
Enderbyte09 · ASP。NET Core绝对拒绝在其他端口上托管 11 月前 |