问题标签 [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 投票
1 回答
912 浏览

controls - Model View Presenter - 处理更复杂的 UI 控件

我正在研究模型视图演示者模式。到目前为止,我喜欢我所看到的,但是几乎所有的文章、网络广播、播客等。我看到、阅读或听到的倾向于处理从文本框中设置和检索简单类型,我正在努力理解如何处理具有更复杂的 UI 控件。

例如,假设我有一个 CheckedListBox。在这个 CLB 中,我想显示所有可用选项以及为给定实例选择的选项(想象一个带有 FavouriteIceCreamFlavours 列表的 Friend 类)。我可以轻松地填写列表框,但是我将如何设置哪些被选中(比如在这个朋友的后续编辑中)。此外,我将如何将这些更改保留回底层的 Friend 对象?

另一个候选者是 TreeView。假设通过右键单击电视中的一个节点,我希望用户能够删除该节点 - 将该操作返回给演示者的最佳方法是什么?

干杯,

莱尼。

(PS 我在 C# 3.5/WinForms 环境下开发)

0 投票
2 回答
184 浏览

model-view-controller - 从模型层获取用户输入

在遵循 MVP 或 MVC 设计模式(适用于任何一种)时遇到问题。我不知道如何从模型层清晰地提示用户输入?根据模型中的某些值,我可能需要在过程中间提示用户输入。

例如,我们将假设一个 PO 输入流程。假设用户点击视图中的按钮后,它会调用演示者从视图中传递 PO 详细信息。演示者然后调用模型来验证新 PO 并将其插入到 PO 集合中。模型中的一项验证检查是确保尚未输入具有相同项目的另一个采购订单。如果有,应用程序需要提示用户确认 PO 不是重复的。该应用程序目前已深入模型。如何一直返回视图以检索操作员输入,然后返回到模型代码停止的位置以完成 PO 输入过程?

0 投票
2 回答
1354 浏览

winforms - 公共方法或订阅查看事件

我编写了一个 MVP 项目,其中 View 是一个实现我的 IView 接口的 WinForm。我正在审查代码,尽我所能改进它,并想询问您对视图和演示者如何交互的想法。您认为以下哪项是最佳实践?

  1. 公开演示者类的方法以供视图使用。(即公开)。
  2. 让演示者监听 View 类引发的事件。

例如,我的 MVP 使用通过串行端口进行通信的服务。为了连接到远程设备,我的视图调用公共 Presenter 方法 Connect(),然后调用适当的服务方法。

引发 Connect() 事件并让演示者监听它会更好吗?

0 投票
3 回答
1725 浏览

c# - 我应该如何将 TreeView 控件中的分层数据公开给 MVP 演示者?

我在 Winforms TreeView 控件中有一些分层数据,我需要将其作为属性公开,以便我的演示者可以同步对其的更改。为了清楚起见,我使用的是被动视图模式。对于大多数 WinForm 控件来说,这是显而易见的。控件本身将其数据公开为系统类型,可以轻松传递给演示者。TreeViews,因为它们的复杂性,不容易映射到系统类型。我寻找了一个框架集合类型,但树似乎被忽略了。(微软似乎在引擎盖下使用树结构用于几个更高级别的类,但选择不创建通用类家族。)

在任何情况下,我试图公开的数据都不会超过两个节点的深度,所以我什至不确定我是否会继续使用 TreeView。更有理由避免将演示者绑定到 TreeNodeCollection。

我已经提出了一些想法,但我只是想将它们从 SO 社区中反弹:

  • 将树公开为集合的集合......比如说一个列表字典。
  • 创建自定义树结构,在流程中将依赖项引入视图。

顶级节点平均有 5-10 个条目,而它们的子节点理论上可以达到 50 个,但实际上不会超过 3 或 4 个。

有什么建议么?

0 投票
4 回答
305 浏览

c# - 我的演示者需要提示用户提供更多信息。我该如何接线?

我正在使用被动视图模式。用户单击新帐户按钮。视图使用无参数方法调用将责任委托给演示者。

问题是有多种帐户类型,因此用户需要选择他们想要创建的帐户类型。我该如何解决这个问题?

  1. 从视图中创建一个新表单,获取所需信息并将其作为属性公开,以便演示者可以检索它。(这忽略了视图中不应包含任何逻辑的概念)
  2. 从演示者创建和使用新表单。(这将演示者直接与表单联系起来,忽略了 MVP 的全部要点)
  3. 在其他地方创建新表单并将其作为构造函数参数传递给演示者......或视图。
  4. 忘记它并为每种帐户类型添加一个新按钮。(有许多帐户类型,这会使 UI 变得混乱,但就这样吧。)
  5. 我正在以错误的方式解决这个问题,需要重新考虑我的设计。(如果是这种情况,将不胜感激朝正确方向轻推。)
0 投票
3 回答
2672 浏览

c# - 使用 MVP 加载子视图

在过去的几天里,我一直在使用 winforms 玩 MVP 模式,只有一件事我不知道该怎么做。如何从另一个视图创建子表单。这将是一个有效的选择。

我主要关心如何使用此模式加载子表单,以及如何将 ID 从第一页传递给子表单。

谢谢。

0 投票
2 回答
1058 浏览

asp.net - Visual Studio 是否有任何 MVP 模板

像MS提供的MVC框架创建文件夹结构?

0 投票
4 回答
639 浏览

design-patterns - 是否有任何 MVP 框架项目?

MVC 用于许多流行的框架。仅举几例,Ruby on Rails、ASP.NET MVC、Monorail、Spring MVC。

是否有使用任何 MVP 变体的等效框架?

我在网上找到的大多数示例似乎都是该模式的自定义实现,而不是可重用的框架。

建议不必针对任何特定的编程语言,我的兴趣主要是学术性的。

0 投票
1 回答
670 浏览

design-patterns - 监督控制器模式理解

我正在尝试在一个简单的 Web 应用程序中使用监督控制器模式。我的视图是一个注册表单,有许多字段供用户输入(想想几页 gmail 注册)此数据将填充一个实体,并在用户提交时处理此实体。

例如:

我对此有几个问题:

1)当我有这么多属性时,我应该在我的视图中拥有这样的属性吗?我不应该只使用我将填充的实体对象吗?

2) 由于此数据最终将填充实体对象,我的控制器是否应该持有对该对象的引用?

任何帮助或建议将不胜感激。

0 投票
4 回答
3443 浏览

c# - winforms 的复杂监督控制器示例

抱歉,如果之前已经问过这个问题,但我找不到任何帮助。

我想知道是否有人有任何使用监督控制器 MVP 模式创建的复杂 winform 的好例子。我读过很多例子,但它们真的很简单,只处理一种形式和一种模型。

我正在寻找的是一个示例,该示例显示了如何将数据从一个视图传递到另一个视图以及通信线路应该在哪里以及应该绑定什么。

假设我有这样的用户界面: alt text http://img12.imageshack.us/img12/2683/layoutcroped.jpg

对不起,狡猾的 UI 模型。基本上每个用户控件都有自己的演示者和模式层对象。

我需要做的是在用户控件 1 上输入文本框,使用服务对象(在用户控件 1 的演示者中)从数据库中获取正确的项目,并将其作为模式传递给用户控件 2。

我的问题是:我是通过视图界面将模型传递给用户控件 2 还是传递给它的演示者?

抱歉,如果这有点难以理解,我只是一直看到人们说您可以使用带有使用 MVP 模式的用户控件的表单,但找不到任何关于如何在两者之间传递数据的示例。

编辑: 我已经制定了两种不同的方法,我认为我可以这样做:

我认为 Ex1 更好,因为它仍然让主持人负责。去做他们想做的事。

你怎么看?

谢谢。