Я решил проблему. Это вопрос, который я бы не хотел задавать. Решение было комедией ошибок, но я, тем не менее, поделюсь тем, что обнаружил на этом пути.
Краткий ответ:
RuleFor(x => x.ProductId).GreaterThan(0).WithMessage(required);
Проблема была в моем контроллере и (достаточно смущающе) моё мнение.
- Я забыл добавить свое проверочное сообщение для ProductId. Но это не решило проблему полностью.
- Мой контроллер выглядел следующим образом.
[HttpPost]
public ActionResult Update(ProductModel model)
{
if(!ModelState.IsValid)
throw new ArgumentExpection();
//etc.
}
Первоначально я тестировал свою модель для работы с Automapper, и как только я реализовал проверку, я забыл удалить исключение ArgumentException.
То, что это сделало, никогда не давало моему правилу валидации дневной свет. Конечно, это никогда не проверялось, потому что контроллеру было предложено выдать ошибку О ModelState вместо того, чтобы отправлять обратно АКТУАЛЬНУЮ ошибку проверки. Dohhh!
[HttpPost]
public ActionResult Update(ProductModel model)
{
if(!ModelState.IsValid)
return View(model);//pssst! the validation error is in here.
//etc.
}
Теперь у меня есть лучшее понимание порядка вещей. Надеюсь, это поможет кому-то еще, кто глуп, как я.