【发布时间】:2012-07-14 22:02:43
【问题描述】:
我是 MVP 新手。
我可以使用为 asp.net MVC 创建的教程来学习 MVP 模式基础和基础知识吗? 还是差异太大?
【问题讨论】:
-
通过源代码练习,单元测试也解释了它的好处 - advertisingmarket.co.uk/MVPPattern
标签: asp.net-mvc mvp
我是 MVP 新手。
我可以使用为 asp.net MVC 创建的教程来学习 MVP 模式基础和基础知识吗? 还是差异太大?
【问题讨论】:
标签: asp.net-mvc mvp
这两种模式完全不同。 MVP 模式可以与经典的 WebForms 一起使用,而 ASP.NET MVC 已经在框架本身中集成了许多 MVC 模式的部分。关注点分离已经存在。如果您想将 MVP 与经典 WebForms 一起使用,您将需要做更多的工作,因为框架中不存在该模式。
【讨论】:
MyView.Redirect(MyUri) 时,将执行重定向的是页面(视图),并且 Presenter 仅将位置发送给它。这也使得测试您的演示者变得更加容易,因为您可以模拟自己的视图而不依赖于 httpContext。
Object not initialized 错误,因为单元测试框架不会初始化http上下文。由于 HttpContext 是一个不从任何接口继承的密封类,因此您无法模拟/伪造它。您最好确保您的 httpContext 只能从视图(您的页面)本身访问,并通过 IView 接口等向演示者公开对功能的访问。
MVC 适用于普通的服务器端脚本。在 MVC 中,开发人员总是尽量保持控制器非常精简。控制器主要用于选择合适的模型并反映在视图上。但是在今天的 Web 应用程序中,视图部分已经发生了根本性的变化,变得复杂到足以产生一个又大又肥又杂乱的控制器。所以现在我们需要一个新的地方来放置用户界面的复杂控制逻辑。这里MVP的P进来了,就是presenter。因此演示者负责控制特定用户界面组件的逻辑。不用担心控制器还在,名为Application Controller。它最终负责在相对较大的应用程序组件之间进行切换。所以MVP也可以说是MVPC(!!)。顺便说一句,这是我理解 MVP 的方式,显然不是任何基本规则。但是 Google 有一些关于 MVP 的非常酷的文档。
【讨论】: