问题标签 [mvp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2749 浏览

asp.net - Asp.Net WebForms 上的 MVP

这个我不是很清楚......

当在视图上有一个网格视图时,控制器是否必须设置数据源、列等?或者我只需要公开 DataBinding 的东西,从控制器触发它,让视图上的 html/codebehind 处理所有的渲染和连接?

更准确地说:关于我应该有的观点

或者应该是(来自MVP 模式 - Passive View 并通过 IView (Asp.Net, Web Forms) 公开复杂类型

也许我完全错了......

我在哪里可以找到一个不是 ASP.Net MVP 的“Hello world”示例的示例???

0 投票
1 回答
417 浏览

c# - 半复杂页面上的 MVP

我正在开发行为稍微复杂的 .NET 3.5 表单应用程序。是用来存书的。为了给您一个想法,工作流程将是:

  • 用户输入 ISBN 代码
  • 如果ISBN有效,检查是否存在,
  • 如果有效且存在,则显示图书详细信息并启用保存按钮,如果不是,则显示“添加图书”按钮,
  • 如果它无效,则显示错误,
  • 最终,用户将单击“保存”,因此必须保存条目。

这是四个责任:

  • 验证 ISBN,
  • 检查书的存在,
  • 显示图书详情,
  • 保存新书详细信息。

我的问题是:我应该将应用程序逻辑保留在一个 MVP 结构中,还是应该将其拆分为四个 MVP 结构,每个职责一个?

将其保持在一个 MVP 结构中

  • 使模型更复杂
  • 使测试设置更加复杂(每个测试都有很多设置代码来选择正确的验证器、退回的书等,即使它们没有被使用),
  • 使表示逻辑更容易遵循

将其保存在单独的 MVP 结构中将

  • 使模型更简单,
  • 为每个演示者创建更多但更简单的测试,
  • 在演示者之间的交互中增加复杂性(我如何向演示者表明 ISBN 有效,以便显示图书详细信息?)

我正在尝试演示者第一原则,所以: - 保持视图不变(所以没有像“演示者验证 ISBN”这样的事件), - 保持演示者无状态, - 保持模型简单(足够)

任何人都知道最好的方法是什么?

0 投票
3 回答
397 浏览

model-view-controller - .Net 的 MVP Taligent 编程模型

有没有人使用如下的智能编程模型创建.NET控制架构?

http://www.wildcrest.com/Potel/Portfolio/mvp.pdf

正如IBM所说 -

MVP 将使 IBM 能够在其所有主要的面向对象语言环境中提供统一的概念编程模型

问题是如何实现或将 IInteractor 概念(第 9 页)映射到 .NET 接口?目前的猜测是使用IInputElement接口作为所有 UI 输入控件的事件源。

如果有人已经在 .NET 中实现了 taligent 模式,我想知道它是否适用于 Silverlight 和 WPF。如果是这样,它是否适用于它们的接口的联合?

最后,这代表了统一的抽象架构,可以取代PresentationFramework.dll. 如果您认为这适用于控制架构,请发表评论。

0 投票
4 回答
3533 浏览

c# - 如何使用 C# WinForms 在 MVP 中的视图之间导航?

据我了解,当我们使用 MVP 时,我们会将所有表示逻辑移至 Presenter。但是我们不想让 Presenter 知道视图的实现,那么我们如何才能导航到应用程序中的另一个屏幕呢?您如何管理实际应用程序上的应用程序流?

0 投票
3 回答
1239 浏览

c# - WPF 和 Silverlight 命令实现对于 MV-VM (MVP) 模式是否无用?

请原谅我的无知,我最近才开始在 Silverlight 中编码。

我尝试在 Silverlight 中实现命令模式并碰壁。他们说命令很棒,因为您可以将它们写入 xaml,因此您可以保持代码隐藏干净,而且您的视图和视图模型之间存在松散耦合,因为视图中没有对视图模型的直接引用。

您不能保持代码隐藏干净,因为您只能将一个命令绑定到控件,并且您必须决定在绑定时哪个事件将触发您的命令。如果一个控件有 30 个事件,你必须选择一个来指挥。其他 29 个将从后面的代码执行来自事件处理程序的其他命令。

松散耦合可以通过依赖注入更简单地实现,命令添加了一个无用的间接层,没有提供任何额外的东西,它们只会使维护代码变得更加困难。当您针对接口进行编程并准确查看调用了什么方法时,维护代码会更容易,然后当您必须在命令定义和视图模型之间不断跳转时。

我是否遗漏了什么,或者命令真的不适合用于视图和视图模型交互?

请看下面的问题。这就是为什么我没有得到所有命令的炒作:

我应该如何在 Silverlight 中使用 MVVM 处理每个带有命令模式的控件的多个事件?

0 投票
2 回答
1155 浏览

c# - C# Noob - 在模拟接口类中触发事件 - 此代码如何工作?

我对这里发生的事情有点困惑。我正在查看 Atomic Object 中的 Puzzle 示例,展示如何测试 Model-View-Presenter 模式Puzzle.zip

视图有一个私人事件。该视图还有一个订阅(delegate) 函数,用于将委托添加到事件中。Presenter 在 IView 和 IModel 中传递。在构建期间,它订阅视图并将其连接到模型上的函数。

为了对 Presenter 进行单元测试,使用 NMock 模拟 View 类。所以它只是一个愚蠢的类,Subscribe() 函数实际上并没有做任何事情。当然,要测试presenter,你必须模拟视图和模型,然后在视图中触发事件并确保调用了模型函数。示例代码工作得很好 - 但是,我不明白它是如何工作的!

部分摘录:

不知何故,“触发器(点)”调用实际上连接到视图,并导致视图中的私有事件触发。我不知道它是如何工作的——我看不到它与视图实例的连接位置。我错过了什么?

更新: 我正在尝试使用 NMock 2。看来 moveRequestConstraint 变量接收到在 TestSetup 函数中传递给 SubscribeMoveRequest() 的值。但是,那是 NMock 1 语法 - 而 NMock 2 似乎不支持该语法。我将如何使用 NMock 2 做到这一点?

0 投票
1 回答
1966 浏览

asp.net - ASP.NET MVP 和 AJAX 发布/网络服务

将 MVP 模式应用于 ASP.NET 应用程序时,使用 AJAX 发布数据适合哪些地方?在我所知道的 MVP 模式中,UI 很简单(外观),所有繁重的工作都在 Presenter 中完成。我看不出您如何遵循该模式并仍然使用 AJAX 与客户端上的 Web 服务进行交互。是否有人对如何使用 AJAX 和 Web 服务并仍然遵循 MVP 模式有任何参考?

谢谢!

0 投票
1 回答
824 浏览

design-patterns - 这是命令模式吗?

我有一个 MVP Gui,现在我想为某些视图定义某些操作或命令(修改、保存、关闭……)。

是否有捷径可寻?我应该为每个视图提供命令吗?

0 投票
3 回答
2242 浏览

c# - 将 WinForm ClickNCode 重构为 MVP Passive View

我正在尝试重构现有的 Winform 应用程序以使用 MVP Passive View 模式。应用程序的 UI、业务逻辑和数据存储代码多年来一直自由混合。看起来它要么从单独的层开始,要么有人试图将其分成层。在任何情况下,层边界都没有得到尊重。

由于表单直接操作域对象和数据源(反之亦然),我的首要任务是创建演示者/控制器对象并委派这些职责。

该应用程序是一个 .NET 1.1 应用程序,我正在 VS.NET 2003 中使用相当有限的重构加载项进行开发。我使用现有代码的测试生成器来创建样板单元测试,然后通过并手动编辑每个测试。当然,这最终会测试代码的作用,而不一定是它应该做的事情。对于新课程,我正在做 TDD。

在这种规模的重构工作中,有什么技巧、资源、陷阱需要注意吗?

我已经掌握了一些资源:

  • 编程书籍合集;重构, PEAA , WELC
  • 互联网(显然)
  • 大量含咖啡因的饮料

更新:作为一个例子,你会采取什么步骤来改变这个:

进入这个:

0 投票
1 回答
1337 浏览

design-patterns - 在 MFC 应用程序中使用 Model-View-Presenter 模式

我在一个“相当”大的 MFC 应用程序的 ui 中工作。

我们试图将应用程序拆分为模块以隔离业务逻辑,但无论如何,仍然有很多地方 ui 有一些不应该存在的业务逻辑。这种业务逻辑很难测试,更改控件有时会很痛苦。但是……你们都知道我的意思……

现在我们想使用 MVP 模式来尝试真正隔离 ui。我已经阅读了很多关于该模式的论文,并看到了一些小例子。理解模式没有问题,但无论如何我想在开始之前先了解一些更复杂的示例(如果它们来自 MFC 应用程序更好)。

如果有人有一些好的资源或知道一本关于这种模式的好书(带有示例),那将非常有用。

谢谢。