在模型或ViewModel上使用带有MVC(MVVM)的ViewModel时,验证应该驻留在哪里? (或两者兼而有之)?为什么?我特别是考虑到ASP.NET MVC的V2即将推出它。
复杂/自定义验证怎么样?
答案 0 :(得分:19)
任何特定于业务的验证都应该在模型中。任何特定于网站的验证都可以在Model和/或ViewModel中完成。这样,您的业务逻辑(模型)就可以移动到不同的界面(Windows,Web窗体等)之后,您的验证将保持不变。
答案 1 :(得分:11)
我想说经常需要在所有级别进行验证:)
我想了一会儿:
注意:我将必需的电子邮件包含在2和3中,因为它通常取决于它所属的位置。
如果电子邮件仅播放信息角色 - 则可以放宽验证并将其推送到视图模型。如果电子邮件是对应用程序的强烈要求 - 它肯定是模型验证。
第四件事实际上与验证无关。我们理解它 但它也应该适用。因此,应将结果显示给用户。
基本上所有4种类型的验证都可以使用相同的基础架构。但实施取决于:)......
干杯,
德米特里。
答案 2 :(得分:5)
模型。您的验证应该在您的业务层中。您的视图模型应该只是用于设置视图。