我很好奇你有一个用户控件要在整个应用程序中重用的情况,但你也有一个页面或其他控件也需要一个演示者。
所以说我有一个上传视图和控件
public partial class UploadControlView : System.Web.UI.UserControl, IUploadView
但我也有一个页面视图
public partial class ExcelProcessorView : System.Web.UI.Page, IExcelProcessorView
上传控件将位于ExcelProcessor页面上,这样用户就可以上传一个文件,该文件将传递给某些Excel处理业务逻辑。
所以我有一位主持人,
public class ExcelUploadAndProcessPresenter : IUploadPresenter
在ExcelProcessorView中,我会按如下方式连接演示者:
protected void Page_Load(object sender, EventArgs e)
{
ExcelUploadAndProcessorPresenter presenter =
new ExcelUploadAndProcessorPresenter(this, uploadControl);
this.AttachPresenter(presenter);
uploadControl.AttachPresenter(presenter);
//init etc...
}
这是否正确使用MVP模式?
我正在试图找出处理一个主持人关系的许多视图的最佳做法。 MVP能否以这种方式拥有多对一的关系。作为一个替代问题,我还想知道MVP模式是否可以/应该处理你有许多演示者和许多观点的情况(或者你应该只有一个演示者)?
如果您发现我对MVP的解释存在任何问题,请务必继续指出。
感谢阅读!
答案 0 :(得分:2)
您能否进一步解释您的视图和控件如何使用相同的逻辑?我无法想象我会遇到这个问题的情况。如果逻辑是分开的,我认为你会使用两个演示者。
但是,没有理由一个演示者无法处理多个视图/控件,尽管我只会为显示相同模型的多个视图重用一个演示者(例如CRUD屏幕)。如果一个视图在同一个演示者中托管另一个视图,我无法想到不应重用您的演示者的原因(例如,在列表屏幕底部创建屏幕)。