9

在编写传统 MVC 应用程序时,编写服务器端表单验证的最佳实践是什么?代码属于控制器还是模型层?为什么?

4

4 回答 4

4

来自维基百科:

模型-视图-控制器(MVC) 是一种用于软件工程的架构模式。该模式的成功使用将业务逻辑与用户界面考虑隔离开来,从而使应用程序更容易修改应用程序的视觉外观或底层业务规则,而不会影响另一个。在 MVC 中,模型表示应用程序的信息(数据)和用于操作数据的业务规则;视图对应于用户界面的元素,例如文本、复选框项目等;控制器管理涉及与用户操作模型通信的细节,例如击键和鼠标移动。

因此,模型 - 它包含应用程序和业务规则。

于 2008-08-25T05:09:41.800 回答
4

我完全同意乔希。但是,您可以在 Controller 和 Model 之间创建一种验证层,以便可以在数据到达模型之前对数据进行大多数语法验证。

例如,

验证层将验证日期格式、金额格式、必填字段等...

因此,该模型将完全专注于业务验证,例如 x 金额应大于 y 金额。

于 2008-08-25T05:27:11.883 回答
0

到目前为止,我对 MVC 的体验完全由 Rails 组成。

Rails 在模型中进行了 100% 的验证。
在大多数情况下,这非常有效。我会说 10 次中有 9 次就是你所需要的。

但是,在某些区域,您从表单提交的内容与您的模型不匹配。可能会有一些额外的过滤/重新排列等。

我发现解决这些情况的最佳方法是创建仿模型对象,它们的作用基本上类似于模型对象,但与表单数据进行一对一映射。这些人造模型对象实际上并没有保存任何东西,它们只是一个带有验证的数据桶。
这种事情的一个例子(在rails中)是ActiveForm

一旦数据进入这些(并且是有效的),通常是一个非常简单的步骤,可以将其直接传输到您的实际模型中。

于 2008-08-25T07:12:10.523 回答
0

基本语法检查应该在控件中,因为它会转换模型的用户输入。模型需要做真实的数据验证。

于 2008-09-03T20:57:27.083 回答