3

我正在创建一个 Windows 窗体应用程序,该应用程序将数据库中的各种表读取到一个DataSet中,以便以多个DataGridViews. 我没有将所有代码都放在代码隐藏文件中,而是开始对不同的设计模式进行一些研究,并发现许多文章/线程都一致认为 MVP 是WinForms.

在做了一些教程之后,开始使用 MVP 模式组织我的代码;我已将我的数据集放置在模型中,将大部分逻辑放置在演示器中,并将其他所有内容放置在视图中。

我的问题是:我应该在哪里验证用户输入?我不希望用户能够在DataGridViews 中输入无效值,如果他们碰巧这样做,我想让他们知道有错误的行/单元格。以前,我会处理 RowValidating 事件并检查 DataGridView 的行和单元格是否有任何错误,然后相应地显示一条消息,但这似乎不适合 MVP 模式。

我应该将验证留在视图中,还是应该将其移到其他地方?

4

1 回答 1

1

恕我直言,您应该使视图(表单)尽可能简单。您确实可以订阅 RowValidating 事件并从那里调用演示者 (presenter.ValidateRow(...)) 并将信息传递给它并让它处理验证。如果验证逻辑碰巧很复杂并且必须一直向下(例如到数据库),轮到演示者可以向模型询问一些信息。如何处理错误是演示者的责任。验证过程完成后,演示者的工作就是调用方法或在视图上设置属性以显示失败或成功。请记住,您的视图只是您的业务逻辑(对象)状态的“窗口”。问自己这个问题“http://msdn.microsoft.com/en-us/magazine/ee336019.aspx文章进一步阐明了 MVP 模式。

于 2012-10-30T17:33:40.540 回答