【问题标题】:MVC pattern in .NET: Can View call Exceptions in Model?.NET 中的 MVC 模式:可以在模型中查看调用异常吗?
【发布时间】:2010-09-28 06:05:18
【问题描述】:

我在 .NET winform 应用程序中使用 MVC 模式。 Controller 中有一些地方会导致异常。我没有捕获异常并显示消息框,这是 View 的职责,我在 Controller 中什么都不做,而是让 View 将该区域包装在 try/catch 中。到目前为止,除了向用户显示一条好消息之外,在这些异常中不需要做任何事情。情况并非总是如此。视图然后在消息框中显示异常错误。我不喜欢这样,因为 Exception 类来自模型。因此,视图直接进入模型以访问异常。但是,还有什么方法可以做到并且仍然遵循 MVC 模式呢?

我可以让 Controller 处理异常并将字符串返回给 UI。那是怎么做的呢?如果 functionA 返回 void,我不想修改它的返回类型只是为了让 View 满意。

【问题讨论】:

    标签: .net winforms model-view-controller design-patterns


    【解决方案1】:

    我觉得控制器有责任告诉视图显示消息以及显示什么消息。

    因此,我会在视图上放置一个 DisplayError(string) 方法,并在您在 Controller 中捕获异常时调用该方法。这样,控制器执行异常处理,视图仍然管理显示带有我告诉它使用的消息的消息框的详细信息。

    【讨论】:

      【解决方案2】:

      通常我所做的是让 Presenter(控制器)公开 View 侦听的 OnError 事件。然后视图使用来自该事件的信息来呈现 UI、更新状态栏或其他任何内容。

      【讨论】:

        【解决方案3】:

        我无法完全摆脱这种情况,因为我使用了通用事件。我将事件模型用于异常,但事件是通用的。这需要调用者了解您的通用事件。尽管如此,这一切都是通过视图中的智能感知实现的,仍然使视图非常愚蠢:)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-10-13
          • 2021-01-16
          • 1970-01-01
          • 1970-01-01
          • 2023-04-11
          • 2015-08-28
          相关资源
          最近更新 更多