【问题标题】:MVC tutorials for MVPMVP 的 MVC 教程
【发布时间】:2012-07-14 22:02:43
【问题描述】:

我是 MVP 新手。

我可以使用为 asp.net MVC 创建的教程来学习 MVP 模式基础和基础知识吗? 还是差异太大?

【问题讨论】:

标签: asp.net-mvc mvp


【解决方案1】:

这两种模式完全不同。 MVP 模式可以与经典的 WebForms 一起使用,而 ASP.NET MVC 已经在框架本身中集成了许多 MVC 模式的部分。关注点分离已经存在。如果您想将 MVP 与经典 WebForms 一起使用,您将需要做更多的工作,因为框架中不存在该模式。

【讨论】:

  • thanx ,我已阅读有关 MVP 概念和定义的信息。但是我对如何将用户重定向到另一个页面或在哪一层有问题?在哪里实施验证?实际上如何将 MVP 实施到实际项目中。据我搜索,没有足够好的 MVP 教程
  • 我知道这是旧的,但只是为了完成。您的页面(视图)正在执行重定向,因为它可以访问 HttpContext。您的 Presenter 不应直接访问 HttpContext。您的页面(视图)派生自一个接口,即:IView,它可以有一个将 URI 作为参数的 Redirect 方法。然后您的页面(视图)实现重定向。因此,当 Presenter 调用 MyView.Redirect(MyUri) 时,将执行重定向的是页面(视图),并且 Presenter 仅将位置发送给它。这也使得测试您的演示者变得更加容易,因为您可以模拟自己的视图而不依赖于 httpContext。
  • 澄清一下,您的 Presenter 在执行时可以访问 HttpContext 但是当您针对您的 Presenter 编写单元测试时,您将收到 Object not initialized 错误,因为单元测试框架不会初始化http上下文。由于 HttpContext 是一个不从任何接口继承的密封类,因此您无法模拟/伪造它。您最好确保您的 httpContext 只能从视图(您的页面)本身访问,并通过 IView 接口等向演示者公开对功能的访问。
【解决方案2】:

MVC 适用于普通的服务器端脚本。在 MVC 中,开发人员总是尽量保持控制器非常精简。控制器主要用于选择合适的模型并反映在视图上。但是在今天的 Web 应用程序中,视图部分已经发生了根本性的变化,变得复杂到足以产生一个又大又肥又杂乱的控制器。所以现在我们需要一个新的地方来放置用户界面的复杂控制逻辑。这里MVPP进来了,就是presenter。因此演示者负责控制特定用户界面组件的逻辑。不用担心控制器还在,名为Application Controller。它最终负责在相对较大的应用程序组件之间进行切换。所以MVP也可以说是MVPC(!!)。顺便说一句,这是我理解 MVP 的方式,显然不是任何基本规则。但是 Google 有一些关于 MVP 的非常酷的文档。

【讨论】:

    猜你喜欢
    • 2011-01-25
    • 1970-01-01
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2011-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多