在编码传统的MVC应用程序时,编码服务器端表单验证的最佳实践是什么?代码是属于控制器还是模型层?为什么?
答案 0 :(得分:4)
来自维基百科:
Model-view-controller(MVC)是一种用于软件工程的架构模式。成功使用该模式将业务逻辑与用户界面考虑因素隔离开来,从而使应用程序更容易修改应用程序的可视外观或基础业务规则而不会影响另一个。在MVC中,模型表示应用程序的信息(数据)和用于操作数据的业务规则;视图对应于用户界面的元素,例如文本,复选框项等等;并且控制器管理涉及与用户动作模型的通信的细节,例如击键和鼠标移动。
因此,模型 - 它包含应用程序和业务规则。
答案 1 :(得分:4)
我完全赞同乔希。但是,您可以在Controller和Model之间创建一种验证层,以便大多数语法验证可以在数据到达模型之前对数据执行。
例如,
验证层将验证日期格式,金额格式,必填字段等......
因此,该模型将完全专注于业务验证,例如x金额应大于y金额。
答案 2 :(得分:0)
到目前为止,我对MVC的体验完全由rails组成。
Rails在模型中100%验证 在大多数情况下,这非常有效。我会说10次中的9次就是你所需要的。
但是在某些方面,您从表单提交的内容与您的模型不匹配。可能会有一些额外的过滤/重新排列等。
解决这些问题的最佳方法我发现是创建仿模型对象,它们基本上像模型对象一样,但是与表单数据一对一地映射。这些仿模型对象实际上并没有保存任何东西,它们只是附加验证的数据桶 这种事物(在铁轨中)的一个例子是ActiveForm
一旦数据进入(并且有效),将它直接传输到实际模型通常是一个非常简单的步骤。
答案 3 :(得分:0)
基本语法检查应该在控件中,因为它会转换模型的用户输入。该模型需要进行真正的数据验证。