使用复杂控件正确实施MVP

时间:2010-01-20 14:54:19

标签: asp.net mvp

我目前正在使用asp.net,c#和MVP(Model-View-Presenter)模式实现一个项目。该解决方案的主要目的是向消费者提供图表,供各种系统使用。它基本上是一个自定义图形服务器。

此特定情况下的视图页面上有一个MSChart控件,必须根据QueryString中的参数动态填充和配置。使用图表控件的许多属性,这可以与完全不同类型的数据集,显示模式等一样多样化。

这些属性中的许多属性都是图表控件特有的类型,如果要由演示者设置,则需要与图表控件本身相同的依赖关系。

我正在试图找出将属性公开给演示者的最佳方法,以便它可以发挥其魔力。

我应该:

  • 只需公开整个图表对象,并在演示者项目中使用system.web类型依赖项?
  • 为所有图表控件属性创建访问器和转换属性,以便我没有依赖关系,但会增加很多复杂性?
  • 其他,我没有想过?

对我而言,似乎是将MVD模式与显示控件一起映射到演示者,但似乎尝试将所有属性映射到DTO或类似的将是很多工作会增加很多复杂性,虽然解决方案会更松散地耦合,但我不确定在这种情况下获得的收益是否值得。

给定MVP,你会如何实现这样的东西?

2 个答案:

答案 0 :(得分:3)

在对此主题进行更多研究时,我发现以下博客文章有关添加Presenter模型以处理复杂视图控件,以在视图和演示者之间进行映射。它实际上对我来说很有意义,这是一个想法,我想我会跟进并尝试。

http://mikewagg.blogspot.com/2009/01/managing-complexity-with-mvp-and.html

事实上,Martin Fowler也写过这篇文章:

http://martinfowler.com/eaaDev/PresentationModel.html

答案 1 :(得分:2)

结帐Automapper。使业务对象转换为视图模型几乎毫不费力。一般的想法是你的视图模型应该只有原始的系统类型,如果可能的话,以避免视图中的格式化/条件化。