2010-08-20 43 views
1

我刚刚开始学习MVC模式(对于gui应用程序,而不是web),并且有几个问题需要在哪里进行数据验证。MVC验证问题

从我读过的内容看来,大多数人似乎都认为所有的验证都应该发生在控制器上,并且模型几乎只能保存数据的状态。但是,似乎在某些情况下,在模型中进行验证会更有意义。

例如,可以说客户端从gui更改他们想要连接的服务器的ipv4地址。我们想验证这实际上是一个ipv4地址,而不仅仅是随机字符。如果IP地址有效,那么我们希望将模型中的数据更改为新的IP地址,如果无效,我们希望视图显示错误(或其他)。

如果你在控制器中进行了验证,那么如果将来你决定要有不同的控制器/视图(因为从我所知道的情况来看,它们紧密耦合在一起),你必须做出确保在两个控制器中包含相同的验证码,因此必须管理两段相同的代码。那当然更容易出现错误,然后只管理一段代码,就像验证在模型中完成一样。

我应该这样做吗?还是我错过了,使得在控制器中做更有意义?或者应该在模型中处理一些数据,并在控制器中处理一些数据?

谢谢

+1

可能的重复:http://stackoverflow.com/questions/134388/where-do-you-do-your-validation-model-控制器或视 – 2010-08-20 22:12:26

回答

-1

我想在模型验证总是必要的。有时候在视图中也会很好,这样用户就不会被允许输入除字段要求的内容之外的事件。无论如何,像IP地址验证这样的通用验证使得它成为一个很好的候选者,可以成为全球/静态/实用方法,不仅在视图和模型中,而且在几个不同的模型中都可以使用。有时甚至可以在客户端的视图组件和服务器组件之间共享,例如在GWT应用程序中