34

在 Model-View-Presenter 模式中,我们应该在哪里编写用户输入的验证。

4

3 回答 3

21

特定领域的规则/验证应该在模型中。你可以有一个 model.validate() 来让你知道规则是否被违反。查看 Rails 模型 (ActiveRecord) 类以了解此概念的良好实现。

视图应该使用户难以键入无效输入。因此,在到达演示者之前,应消除“为数值输入字符串”类的输入错误。模型和视图之间可能存在一些重复验证。例如 AttributeX 必须在 1-100 之间。这必须在模型中进行验证。同时,您可能希望在 UI 中插入一个微调器,其 minValue 和 maxValue 范围设置为 1-100。

于 2008-10-20T08:42:14.320 回答
4

我通常保持我的观点完全干净,没有逻辑。但我不做很多网络开发。在类似于 Ajax 的情况下,您可能希望在视图中进行客户端验证。

业务逻辑验证进入模型。对于业务逻辑验证,我的意思是检查最小订单大小等。

输入验证在演示者中进行。这可以是检查数字字段是否不包含非数字字符之类的事情。但根据您的情况,这也可能意味着检查文件是否存在等。

在更复杂的情况下,验证应该可以在不同的地方重用,我通常将它分成一个可以在不同地方调用的验证引擎。例如,这解决了在表示层和持久层中使用的重复验证代码的一些问题。

于 2008-10-20T08:43:49.420 回答
0

主持人....

视图应该有“小部件”,在可能的情况下防止无效输入。

于 2008-10-20T08:35:56.470 回答