我刚刚开始学习MVC模式(对于gui应用程序,而不是web),并且对于应该在何处进行数据验证有一些问题。
从我所读到的,似乎大多数人都说所有的验证都应该在控制器上进行,模型应该只能保持数据的状态。但是,在某些情况下,在模型中进行验证似乎更有意义。
例如,假设客户端从gui更改了要连接的服务器的ipv4地址。我们想验证这实际上是一个ipv4地址,而不仅仅是随机字符。如果ip地址有效,那么我们想要将模型中的数据更改为新的ip地址,如果它无效,我们希望视图显示错误(或其他)。
如果您在控制器中进行了验证,那么如果将来您决定要使用不同的控制器/视图(因为从我可以看出,它们非常紧密地耦合在一起),您必须确保在两个控制器中包含相同的验证码,因此必须管理两段相同的代码。这当然会更容易出错,然后只管理一段代码,就像验证是在模型中完成一样。
我应该这样做吗?或者我错过了让它在控制器中更有意义吗?或者是否应该在模型中处理某些数据,并在控制器中处理一些数据?
由于
答案 0 :(得分:-1)
我想在模型中验证总是必要的。有时候在视图中也很好,以便用户不允许输入除了字段要求之外的其他内容。通过IP地址验证等通用验证,无论是在视图和模型中,还是在几种不同的模型中,都可以成为全局/静态/实用方法的理想选择。有时它甚至可以在客户端的视图组件和服务器组件之间共享,例如在GWT应用程序中