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

.net - MVP 事件或财产

我在 Windows 窗体应用程序中使用 MVP 模式。我需要更改视图上的单选按钮。我可以通过在视图上公开一个布尔属性来做到这一点,但是我应该使用事件来操作视图吗?

0 投票
7 回答
2299 浏览

web-applications - MVP - Presenter 应该使用 Session 吗?

我正在为网页使用 Model-View-Presenter 模式。演示者应该知道 Session 还是应该只有视图知道它?

我想我得到的是像 Session 这样的概念与视图的体系结构非常相关,所以它们应该被限制为视图使用吗?否则,如果我想在不同架构的类似页面上重用演示者会发生什么(或者我不需要担心,除非我有计划这样做)?

0 投票
2 回答
849 浏览

c# - MEF,在请求分支时创建导入树

使用 MEF 我想做以下事情。

我有一个 WPF 外壳。我想从另一个 DLL 导入一个 UserControl 到 shell,它也是我的 MVP 三元组的一个视图。MVP 三元组的工作方式是,在演示者中,我有一个构造函数,它同时接受 IModel 和 IView 并将它们连接起来。因此,为了使其正常工作,我需要 MEF 执行以下操作:

  1. 创建 IView 实现
  2. 创建 IModel 实现
  3. 创建 Presenter 并将 IModel 和 IView 传递给它的构造函数
  4. 显示时将 IView 实现导入我的 shell

相反,它的作用是只创建类型 Exporting IView 并将其传递给 shell,基本上跳过步骤 2 和 3。当您考虑它时,它非常合乎逻辑,但是我如何告诉 MEF 也创建整个三元组我要一个IView。我不需要在我的 Shell .dll 中的其他任何地方引用 Presenter 或模型,因此将其作为 Import 也不是一种选择(无论如何它都会非常难看:)。

我正在使用最新的 MEF(Preview 2 Refresh)。任何人?

==更新==

我找到了一个解决方案,并在这里写了一篇博客:
Krzysztof Koźmic's blog - Creating tree of dependencies with MEF

但是,如果有人提出更好的解决方案,我会非常高兴。**

0 投票
2 回答
988 浏览

repeater - 模型视图演示器和中继器

我正在使用监督控制器模式(模型视图演示器)构建一个应用程序,但我遇到了困难。在我的页面中,我有一个转发器控件,它将显示我传递给它的集合的每个项目。中继器项目包含 2 个下拉列表,允许用户选择特定值。当我单击下一个按钮时,我希望控制器检索这些值。

我怎么能以干净的方式做到这一点?

0 投票
2 回答
4415 浏览

.net - Windows 窗体中的 MVP 和 IOC?

我已经开始在我的几个表单的 Windows 表单应用程序中使用 MVP 模式。这些表单创建一个演示者并将它们自己传回给演示者。

我没有使用任何特定的框架,表单仍然可以打开其他表单。

我是否应该更改此设置以便演示者可以打开其他表单(通过视图)?我相信必须使用 IOC 框架来做到这一点?

这可能会节省我在 UI 中打开相关表单的逻辑,并允许我从表单中删除对演示者的引用。

0 投票
4 回答
279 浏览

c# - 模型去哪儿了?

我有一个 VS 解决方案,有以下项目。

-GUI -DataAccess -BusinessLogic
-BusinessObjects

但是主模型类应该在哪里?这通常是一组对象的缓存,这些对象是数据访问层和使用虚拟网格查看模型内部数据的 GUI 的结果。使用 MVC 或 MVP 的问题是一样的

想法?

0 投票
1 回答
270 浏览

winforms - 我应该如何将对象的引用传递给 MVC 中的控制器?

我正在尝试在我的 WinForm 应用程序中更好地使用 MVC/MVP 样式模式,并且我正在努力解决一些问题,也许这里有更多经验的人可以帮助我。

以下是我的基本项目布局:
替代文字

该类G2.cs处理各种线程的运行,并包括启动/停止和与这些线程相关的其他各种方法。我想这是我的“主要”课程。它还包含我的应用程序的主循环。

到目前为止,我的 GUI 由 3 个表单和一个关联的控制器组成。具有MainForm开始/停止按钮,需要调用我的G2类上的方法以及可能的未来形式。

将我的 G2 类的引用传递给所有需要它的视图控制器的正确方法是什么? 我是否需要G2在创建表单时传递对表单的引用,然后表单又将其传递给我的控制器,或者......这不是处理事情的好方法吗?

另外,我是否正确,因为 Views 有责任创建它的控制器的实例并且它“拥有”控制器?

0 投票
4 回答
6978 浏览

wpf - Model-View-Presenter 和 Modal 对话框.... 如何?

我正在 WPF 中实现 MVP/MV-VM,到目前为止我很幸运。但是,我看不到这个模型如何支持实现模态对话框。我从 Crack.NET ( http://www.codeplex.com/cracknetproject ) 获得了我的工作,以了解这些东西是如何工作的。

我有一个带有菜单的 ShellView 视图(它只是 XAML)。该菜单绑定到 ShellModelView 中显示“EditPreferences”的命令。

ShellModelView 实现了 EditPreferences 的 ICommand,在这里我们要放置一个对话框,让用户编辑应用程序的首选项。

这里有几个问题: 1. ShellModelView 没有对 ShellView 的引用来正确地作为对话框的父级。ShellModelView 是 ShellView 的 DataContext,但我没有看到设置的反向引用。2. ShellModelView 无论如何都不应该加载显式 UI。那么这里正确的交互模型是什么?3. 我如何建立我的 PreferencesDialog 以便它在逻辑和视图之间正确分离?PreferencesDialog 本身需要是一个 Window,因此您可以在其上调用 ShowDialog,但这意味着您需要对 Window(例如 View)的引用才能实例化它。理想情况下,我应该能够在不实例化视图的情况下对 PreferencesDialog 中的代码/验证进行单元测试(也许使用 Mock 视图?)。

0 投票
4 回答
224 浏览

c# - MVC 的大量服务使得控制器构造函数非常庞大。

我最终在模型类的构造函数中有大约 20 个不同的参数,每个服务一个?这是正常现象还是有问题的迹象。

0 投票
1 回答
1657 浏览

asp.net - ASP.NET MVP - 利用用户控件

我正在使用 ASP.NET MVP(尝试监督控制器)和单元测试(迟到总比没有好!)编写我的第一个应用程序,我遇到了一些困境。我已经编写了 3 个用户控件,全部经过测试和接口,演示者在拖。现在我来到一个采用这三个用户控件的页面并遇到以下问题:

用户控件 1 是 DateSelector,它是带有几个其他按钮/列表的日历控件。没有什么真正令人兴奋的。

用户控件 2 是 DailyList。猜猜它是什么。无论如何,您可以选择/删除等。如果您从网格视图中选择一个项目,它需要填充用户控件 3。

用户控件 3 是 ItemDetail。下面是 DropDownLists、TextBoxes 等......有些与其他人存在依赖关系(在 DropDown 中选择一个选项会影响 DropDown 2 中的选项)。

如果我从我的 DateSelector 中选择一个新日期,我是否会从 DateSelector Presenter 中引发事件?我必须以某种方式让其他用户控件知道选择了一个新日期,以便他们可以重新绑定他们的数据,但是如何?如果我使用页面的 Presenter 来订阅用户控制视图的 Presenter,我会不会公然违反 Demeter 法则(通过他们的 View 将 Presenter 暴露为属性)?我不是必须将页面的 Presenter 用作页面的全知控制器吗?有什么我想念的吗?

到目前为止我读到的所有内容都说,“MVP 很棒,即使使用用户控件也是如此”,但是当涉及到示例时,用户控件的使用很容易被遗忘。在我看来,MVC 会更符合我对此的思考模式,但目前,MVC 不是一种选择。任何帮助在这里都会很棒。提前致谢。