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

有帮助吗?

解决方案

来自维基百科:

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

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

其他提示

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

例如,

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

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

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

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

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

我发现解决这些情况的最佳方法是创建人造模型对象,其行为基本上类似于模型对象,但与表单数据进行一对一映射。这些人造模型对象实际上并不保存任何内容,它们只是附加了验证的数据存储桶。
这种事情的一个例子(在 Rails 中)是 活动表格

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

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

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