我有一个从表单接收输入的MVC应用程序。
这是一个登录表单,因此唯一需要验证的是检查输入是否为非空。
现在,在我将其传递给模型之前,我会在控制器中对其进行验证。
这是不是最佳实践?它属于模型吗?
发布于 2010-01-15 08:48:48
我不认为有官方的最佳实践将验证限制在MVC模式的任何单个部分。例如,您的视图可以(也应该)使用Javascript进行一些前期验证。您的控制器还应该提供相同类型的验证,以及更多与业务逻辑相关的验证。该模型还可以提供验证形式,即不允许空值的setter。
有一个关于这个at joelonsoftware的有趣的讨论。
发布于 2010-02-23 16:39:22
我已经考虑了很长一段时间,在尝试在控制器和模型中都进行验证之后……最后,我得出结论,对于我的许多应用程序...验证属于模型,而不是控制器。为什么?因为相同的模型将来可能会被各种其他控制器调用或API使用。然后我不得不一遍又一遍地重复验证过程。这将违反DRY并导致许多错误。此外,在哲学上,它的模型与数据库(或其他持久存储)交互,因此是一种“最后的酒精”的地方来做这件事。
因此,我在控制器中执行get/post转换,然后将原始数据发送到模型进行验证和处理。当然,我经常做php/mysql web应用程序,如果你在做其他事情,结果可能会有所不同。我希望这对某些人有帮助。
发布于 2010-01-15 08:38:58
它的业务逻辑,所以不,它不属于模型。
https://stackoverflow.com/questions/2068627
复制相似问题