从模型层获取用户输入

时间:2009-06-17 00:28:20

标签: model-view-controller mvp

遵循MVP或MVC设计模式有问题(适用于任何一种)。我无法弄清楚如何从模型层干净地提示用户输入?根据模型中的某些值,我可能需要在进程中间提示用户输入。

例如,我们将采用假设的PO输入流程。比如说,在用户点击视图中的按钮后,它会调用演示者从视图中传递PO详细信息。然后,演示者调用模型以验证并将新PO插入到PO的集合中。模型中的一个验证检查是确保尚未使用相同的项目输入另一个PO。如果有,则应用程序需要提示用户确认PO不是重复的。该应用程序目前深入到模型中。如何一直返回到视图以检索操作员输入,然后返回到它停止的模型代码以完成PO输入过程?

2 个答案:

答案 0 :(得分:0)

paper I read on presenter first中,有人建议演示者依赖于模型和视图,并订阅模型和视图中的事件。
这意味着您可以在处理无法继续的位置从模型中引发事件。演示者将通过调用视图上的某个方法来处理模型中的事件(这将提示用户)。然后,模型上方法的返回值将返回到模型(事件的输入/输出参数,如.NET使用的EventArguments子类)。

答案 1 :(得分:0)

您可能希望查看模型与UI模式的其他组件之间的某种形式的通知交互。

Martin Fowler写了这篇文章here

至于深入模型,获取用户输入,然后返回模型:不要。您的控制器负责修改您的模型,并应在尝试更改模型之前进行验证。这可能需要将验证与更新代码分开。