【问题标题】:asp.net mvc IDataErrorInfo validation when using ViewModel使用 ViewModel 时的 asp.net mvc IDataErrorInfo 验证
【发布时间】: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


【解决方案1】:

IDataErrorInfo 不适用于子属性。您需要通过您绑定到的视图模型 (CategoryViewModel) 来实现此接口。它也是considered as bad practice。作为替代方案,您可以查看DataAnnotationsFluentValidation 以获得更高级的验证方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-11
    • 2011-04-13
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2011-12-30
    • 1970-01-01
    相关资源
    最近更新 更多