C# MVP模式、接口、错误消息在webform中显示

C# MVP模式、接口、错误消息在webform中显示,c#,asp.net,webforms,mvp,C#,Asp.net,Webforms,Mvp,我正在从事一个webform项目,我想在其中实现MVP模式。 我已经阅读了一些基于MVP的文章和项目。我觉得很好 在大多数地方,如果有任何需要显示错误消息的地方,它已经被制作好了 视图界面中的方法。为了清楚起见,我在这里举一个例子 public interface IAdminSettingsView { string Name { get; set; } string Password { get; set; } string Email { get; set; }

我正在从事一个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

在最低级别(例如实用程序DLL),我将类放入错误处理。其中之一是表单可以实现的接口。启动时,软件将实现接口的表单注册到低级DLL。此表单可以在最高级别(EXE)上定义

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


顺便说一句,对于状态和进度消息,我也会这样做。有一个IStatusDisplay界面和一个IProgressDisplay界面。EXE注册实现这些接口的窗体或类

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

比如:

interface IShowErrorMessage
{
    void Show(string errorMessage);
}
接下来,您的视图将实现该接口。 视图的Show(string)实现将设置一个文本

演示者将保持不变

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

希望能有帮助