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

有帮助吗?

解决方案

特定于域的规则/验证应该在模型中。您可以使用model.validate()来告知您是否违反了规则。查看Rails模型(ActiveRecord)类,以便很好地实现这个概念。

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

其他提示

我通常认为我的观点完全干净,没有逻辑。但是我没有做很多网页开发。在Ajax-ish情况下,您可能希望进行必须在视图中进行的客户端验证。

业务逻辑验证在模型中进行。使用业务逻辑验证,我的意思是检查最小订单大小等。

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

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

...演示

视图应该包含“窗口小部件”在可能的情况下阻止无效输入。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top