Я использую библиотеку MVC Foolproof Validation для создания зависимых требований:
public bool IsRequired { get; set; }
[RequiredIfTrue("IsRequired", ErrorMessage = "This field is required")]
public int RequiredIfTrueSelectID { get; set; }
Это отлично работает на стороне клиента, позволяя мне отправить форму без значения RequiredIfTrueSelectID
(т. е. значение равно 0), но на [HttpPost]
ModelState.IsValid
возвращает false и со следующим результатом в непосредственном окне:
myViewModel.IsRequired
true
ModelState["RequiredIfTrueSelectID"].Errors[0]
{System.Web.Mvc.ModelError}
ErrorMessage: "A value is required."
Exception: null
Я гарантирую, что отправляю обратно значение RequiredIfTrueSelectID (как вы можете видеть в первом непосредственном запросе окна выше). Почему я получаю сообщение «Требуется значение» и как подавить эту ошибку?
Кстати, я в MVC5. Может быть, реализация ModelState
изменилась с момента последнего обновления Foolproof 2 года назад? Кто-нибудь еще знает о недавно опубликованной библиотеке, которая работает как Foolproof?
Метод контроллера:
[HttpPost]
public virtual ActionResult ValidationTest(TestViewModel vm)
{ //breakpoint here to check ModelState.IsValid
return View(vm);
}
AllowAnyPlan
наtrue
только для чтения, и это все еще происходит. - person DLeh   schedule 10.10.2014ModelState.Clear(); ValidateModel(myViewModel);
, она работает правильно, так что на данный момент это обходной путь, но я не хочу вызывать это каждый раз. - person DLeh   schedule 10.10.2014ValidateModel()
на контроллере: msdn.microsoft.com/en-us/library/ - person DLeh   schedule 10.10.2014