webform中的MVP模式,接口,错误消息显示

时间:2009-11-18 02:23:03

标签: c# asp.net webforms mvp

我正在开发一个webform项目,我想要实现MVP模式。 我已经完成了一些基于MVP的文章和项目。对我来说似乎很好。

在大多数地方,如果有任何需要显示错误信息,则已经完成 视图界面中的方法。为了清楚起见,我在这里给出了一个例子。

public interface IAdminSettingsView 
{
    string Name { get; set; }
    string Password { get; set; }
    string Email { get; set; }
    void ShowErrorMessage(string errorMessage);
}

这是我的控件实现IAdminSettingsView

public partial class AdminSettingsEdit : BaseControl, IAdminSettingsView
{

    private AdminSettingsPresenter _adminSettingsPresenter;
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
        _adminSettingsPresenter = new AdminSettingsPresenter(this);

    }


    protected void BtnSave_Click(object sender, EventArgs e)
    {
        _adminSettingsPresenter.Save();
    }

    #region Implementation of IAdminSettingsView

    public string Name
    {
        get { return AdminName.Text; }
        set { AdminName.Text = value; }
    }

    public string Password
    {
        get { return AdminPassword.Text; }
        set { AdminPassword.Text = value; }
    }

    public string Email
    {
        get { return AdminEmail.Text; }
        set { AdminEmail.Text = value; }
    }


    public void ShowErrorMessage(string errorMessage)
    {
        lblErrorMessage.Text = errorMessage;
    }

    #endregion
}

这是我的主持人

public class AdminSettingsPresenter 
{
    public AdminSettingsPresenter(IAdminSettingsView view)
    {
        _view = view;

    }

    private IAdminSettingsView _view;
    public void Save()
    {

        try
        {
            //Trying Save Data Here

        }
        catch (Exception exception )
        {
            _view.ShowErrorMessage("Couldnt Save Data");

        }

    }

}

我的问题是,如何将错误相关消息分隔到不同的接口,然后在它们之间进行通信。例如,如果我有一个接口

interface IShowErrorMessage
{
   //somemethod here
}

如何使用此界面使用我的主IAdminSettingsView界面。

我们将不胜感激。如果有更好的解决方案可以解决这个问题,我很乐意听到。

此致 成员Parminder

2 个答案:

答案 0 :(得分:0)

在最低级别(例如Utility DLL),我将这些类放在错误处理中。其中一个是形成的接口可以实现。启动时,软件将实现接口的表单注册到低级DLL。此表单可以在最高级别(EXE)定义。

当软件的任何级别发生错误时,可以对错误框架进行适当的调用,如果表单实现了显示错误界面,则表单将显示在该点。

顺便说一句,我也是这样做的状态和进度消息。有一个IStatusDisplay接口和一个IProgressDisplay接口。 EXE注册实现这些接口的表单或类

答案 1 :(得分:0)

首先,在IShowErrorMessage中,定义显示错误消息所需的属性/方法。

类似的东西:

interface IShowErrorMessage
{
    void Show(string errorMessage);
}

接下来,您的视图将实现该接口。 视图的Show(string)实现将设置一个文字。

演示者将保持不变。

创建一些单元测试,你很好!

希望它有所帮助。