如何使FluentValidation忽略属性

时间:2015-06-01 10:19:35

标签: c# asp.net-mvc fluentvalidation

我有以下视图模型

public class MyViewModel
{
    public MyViewModelClassWithValidator MandatoryProperty {get; set;}
    public MyViewModelClassWithValidator OptionalProperty {get; set;}

    public class MyViewModelValidator : AbstractValidator<MyViewModel>
    {
        public MyViewModelValidator()
        {
            RuleFor(x=> x.MandatoryProperty) //...
            //No rule for property 2
        }
    }
}

我正在寻找一种方法来使FluentValidation忽略OptionalProperty。此处,Optional Property的验证错误仍会添加到ModelState中。

This answer建议1.避免重用子模型,但在我的情况下这不是一个选项,而且2.从ModelState中删除错误。在编写一个脏类来从HttpContext获取ModelState之前,我想知道是否还有一种我不知道的方法,因为答案已经过时了。

我的目标是将验证逻辑封装在我的ViewModels中。

谢谢

2 个答案:

答案 0 :(得分:0)

好的,所以我找到了一个简单的解决方法。我创建了一个扩展类,其中包含一个ThreadStatic字段,该字段包含对当前控制器的引用。我的所有控制器都来自一个基本控制器,所以我只是在构造函数中设置当前控制器。一旦我有控制器,我也修复了ModelState问题。

答案 1 :(得分:0)

您可以尝试这样的事情:

[OT] Ace session not ready for: /weatherApp/src/containers/search_bar.js - will setSession when ready!