Условное FluentValidation в приложении MVC 4

Моя модель, как показано ниже

[Validator(typeof(PersonValidator))]
public class Person
{
    public string Id { get; set; }
    public string Name { get; set; }

}

public class PersonValidator : AbstractValidator<Person>
{
    public PersonValidator()
    {

      RuleFor(x => x.Name).Length(4, 10)
        .When(per => per.Id.ToUpper() == "FOO");
    }
}

Мой контроллер, как показано ниже

 public class HomeController : Controller
{
    [HttpPost]
    public ActionResult PersonAction(Person p)
    {

        if (ModelState.IsValid)
        {
            return View();
        }
        else
        {
            return View();
        }
    }
}

я хочу, чтобы следующая проверка была установлена ​​с помощью Fluent Validation

  1. Если Id == 'foo', тогда у Name должно быть подтверждение длины
  2. Если Id! == 'foo', то имя не должно иметь проверку длины

Но проверка длины, кажется, всегда применяется. т.е. независимо от того, какова стоимость Id, что я пропускаю?

1 ответ

When(x => string.Equals(x.Id, "foo", System.StringComparison.CurrentCultureIgnoreCase), () => 
{
   RuleFor(x => x.Name).Length(4, 10).WithMessage([YOUR MESSAGE]);
});
Другие вопросы по тегам