Условное 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
- Если Id == 'foo', тогда у Name должно быть подтверждение длины
- Если Id! == 'foo', то имя не должно иметь проверку длины
Но проверка длины, кажется, всегда применяется. т.е. независимо от того, какова стоимость Id, что я пропускаю?
1 ответ
When(x => string.Equals(x.Id, "foo", System.StringComparison.CurrentCultureIgnoreCase), () =>
{
RuleFor(x => x.Name).Length(4, 10).WithMessage([YOUR MESSAGE]);
});