asp.net-mvc - 为什么选择 Asp.net MVC 而不是 Asp.net MVP

标签 asp.net-mvc mvp

就理论而言,Asp.net MVC 框架似乎可以更好地描述为 MVP 软件模式......为什么不呢?

因为在我看来,我将 Asp.net MVC 视为一个框架,它具有调用 Controller 操作的功能 View (正在运行的脚本)。看来意见才是大师。

最佳答案

有两个明显的区别(取自源代码):

被动 View :

View 尽可能愚蠢,几乎包含零逻辑。演示者是与 View 和模型对话的中间人。 View 和模型是完全相互屏蔽的。模型可能会引发事件,但演示者订阅这些事件以更新 View 。在被动 View 中,没有直接的数据绑定(bind),而是 View 公开演示器用来设置数据的 setter 属性。所有状态都在 Presenter 中管理,而不是在 View 中管理。

Pro:最大可测试表面; View 和模型完全分离

缺点:更多工作(例如所有 setter 属性),因为您自己进行所有数据绑定(bind)。

监督控制者:

演示者处理用户手势。 View 通过数据绑定(bind)直接绑定(bind)到模型。在这种情况下,演示者的工作是将模型传递给 View ,以便它可以绑定(bind)到它。 Presenter 还将包含手势逻辑,例如按下按钮、导航等。

优点:通过利用数据绑定(bind),可以减少代码量。

缺点:可测试的表面较少(由于数据绑定(bind)),并且 View 中的封装较少,因为它直接与模型对话。

查看这个问题:What are MVP and MVC and what is the difference?

关于asp.net-mvc - 为什么选择 Asp.net MVC 而不是 Asp.net MVP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006478/

相关文章:

android - Dagger2 + Kotlin 上的 MVP

java - 在演示者之间传递控件/值,GWT 模型 View 演示者?

Android MVP : login credential validation

asp.net-mvc - mvc5附加信息: 'object' does not contain a definition for 'Action'

asp.net - 绕过表单例份验证自动重定向到登录,如何?

asp.net-mvc - asp.net mvc : why is Html. CheckBox 生成额外的隐藏输入

gwt - 如何使用 gwt 以 MVP 模式向演示者公开表格小部件

Android MVP - Activity 应该是 View 还是 Presenter?

c# - ASP.NET - ChildActionOnly 和 NonAction 属性之间有什么区别?

c# - 在 ASP.NET 的 IdentityUserRole 2.0 中获取角色名称