【发布时间】:2010-06-20 06:12:16
【问题描述】:
我为我的模型使用了 IDataErrorInfo 验证。 但是当我在视图模型中使用这些模型类时,验证不会发生。
下面的示例视图模型
public class CategoryViewModel
{
// Category class with IDataErrorInfo
public Category category { set; get; }
// Subcategory class with IDataErrorInfo
public IList<SubCategory> subcategory { set; get; }
}
现在,如果 Category 或 Subcategory 类直接用作视图模型,则验证工作正常。但是,如果使用 CategoryViewModel,则不会发生验证。
【问题讨论】:
-
@Darin Dimitrov :好吧,如果它不适用于子属性,IDataErrorInfo 似乎毫无用处,除了非常简单的表单。我似乎找不到任何讨论验证最佳实践的文章,比较 IDataErrorInfo 和 DataAnnotations。 1.您认为使用 DataAnotaions 是否更好,因为我的大多数表单都使用上面的 ViewModel ? 2. 使用数据注释分离关注点不是一个坏习惯,因为我将在控制器中进行大量验证,而不是在视图或模型中进行验证?
-
我认为 DataAnnotations 更好。您不应该在控制器中进行任何验证。使用 DataAnnotations,您只能在视图模型上使用属性。对于更高级的验证场景,请使用我在回答中建议的 FluentValidation。
标签: asp.net asp.net-mvc idataerrorinfo