在寻找WPF MVVM属性验证最佳实践的教程时,我看到很多人使用接口IDataErrorInfo
。我想知道是否可以像ASP .Net MVC中使用属性一样设置自动验证。
有人能建议MVVM模型验证的最佳实践是什么吗?验证应该在基本模型类上进行还是在视图模型类上进行?
在寻找WPF MVVM属性验证最佳实践的教程时,我看到很多人使用接口IDataErrorInfo
。我想知道是否可以像ASP .Net MVC中使用属性一样设置自动验证。
有人能建议MVVM模型验证的最佳实践是什么吗?验证应该在基本模型类上进行还是在视图模型类上进行?
我的看法是验证应该在ViewModel上进行,而不是在Model上进行,因为:
如果您正在使用任何依赖注入工具,如Unity、Windsor Castle等,您可以使用拦截器来验证ViewModels。拦截器在调用ViewModel方法之前首先被调用。
使用Castle的拦截器示例可以在此处找到 - http://www.castleproject.org/container/documentation/trunk/usersguide/interceptors.html
如何放置验证逻辑?
软件系统通常需要某种形式的验证,以确保业务逻辑只处理正确的数据。这些验证规则由业务模型定义,因此域层是实现它们的正确位置。只需记住不要在业务对象之间开始复制验证代码。
.
您可能会对WPF应用程序框架(WAF)的示例应用程序感兴趣。它们展示了如何将.NET DataAnnotations验证属性与MVVM模式一起使用。