gpt4 book ai didi

asp.net - MVP模式-设计问题

转载 作者:行者123 更新时间:2023-12-02 16:57:28 25 4
gpt4 key购买 nike

我们正在尝试在当前项目(asp.net 应用程序)中使用 MVP 模式,但遇到了一些问题。该页面有多个部分,我们对这些独立部分使用用户控件。现在,每个用户控件都有自己的 View 和演示者,并且页面充当基本 View 。现在的问题是用户控件需要的数据应该如何传递给它?

根据当前的设计,页面呈现器将获取整个页面所需的数据。如何将此数据传递给用户控件呈现器?

我们正在考虑的其他方法是只为用户控件创建 View 并使用页面演示器来处理所有事件。在这种情况下,我们将拥有多个 View 接口(interface),由每个用户控制 View 实现。但是页面演示者如何与所有不同的 View 交互?

谢谢,jbn

最佳答案

为什么用户控件有自己的 View 和呈现器?

我建议为页面提供一个 View 和演示者,并通过页面 View 与用户控件进行交互。如果您需要处理事件或向用户控件传递数据或从用户控件传递数据,您可以将它们公开给页面,并且页面 View 可以为演示者包装它。换行可防止演示者直接与用户控件通信。

这是一些伪代码:

IFooPageView
{
string SomeData {get; set;}
event EventHandler SomeEvent;
}

public class FooPageView : IFooPageView
{
public event EventHandler SomeEvent;
public SomeData
{
get { return myUserControl.SomeData;}
set { myUserControl.SomeData = value;}
}

protected override void OnInitComplete(EventArgs e)
{
//handle the user control event
this.myUserControl.SomeEvent += SomeEvent_EventHandler;
}

private void SomeEvent_EventHandler(object sender, EventArgs e)
{
//Raise the user control event to the presenter
if (SomeEvent!= null)
SomeEvent(this, EventArgs.Empty);
}
}

我会读 Phil Haack 的 ASP.NET Supervising Controller (Model View Presenter) From Schematic To Unit Tests to Code

Phil 的文章中有很多关于 Web 表单的 MVP 好信息。

关于asp.net - MVP模式-设计问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4547862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com