Model view controller 从模型层获取用户输入

Model view controller 从模型层获取用户输入,model-view-controller,mvp,Model View Controller,Mvp,遵循MVP或MVC设计模式出现问题(适用于任何一种)。我不知道如何从模型层清晰地提示用户输入?根据模型中的某些值,我可能需要在过程中间提示用户输入 例如,我们将采用假设的采购订单输入流程。比如说,在用户点击视图中的按钮后,它会调用演示者,并从视图中传递PO详细信息。然后,演示者调用模型来验证新订单,并将其插入到订单集合中。模型中的验证检查之一是确保尚未使用相同的项目输入另一个订单。如果有,应用程序需要提示用户确认PO不是重复的。该应用程序目前深入到模型中。如何返回视图以检索操作员输入,然后返回其

遵循MVP或MVC设计模式出现问题(适用于任何一种)。我不知道如何从模型层清晰地提示用户输入?根据模型中的某些值,我可能需要在过程中间提示用户输入

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

在a中,有人建议演示者依赖模型和视图,并从模型和视图订阅事件。

这意味着您可以在处理无法继续时从模型引发事件。演示者将通过调用视图上的某个方法(这将提示用户)来处理来自模型的事件。然后,模型上方法的返回值将返回到模型(事件的in/out参数,如.NET使用的EventArguments子类)

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

马丁·福勒写了这篇文章


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

您是否可以在控制器层中放置逻辑以命中模型进行验证,然后如果通过,则命中模型进行更新?我对图层工作的理解是,它唯一的职责就是更新视图。所有应用程序逻辑都将驻留在模型中。也许这就是MVP和MVC模式之间的区别之一?对我来说,控制器层可以执行如下操作:If model.NewPOIsValid(PO)然后model.AddPO(PO)End If