#asp.net-mvc-2 #c#-3.0
#asp.net-mvc-2 #c #-3.0
Вопрос:
Я некоторое время искал это решение, и я хотел бы спросить вас, каков наилучший способ сделать это.
Предположим, что у меня есть два поля, заполненные датой, и этот период недействителен.
После обнаружения этого мне нужно отправить пользователю сообщение об ошибке и выделить поле, связанное с этой ошибкой.
if((secondDate.Value - firstDate.Value).Days > 31)
{
ModelState.AddModelError("firstDate", "The period must contains less than 31 days");
}
При этом поле «firstDate» работает хорошо, и я хотел бы, чтобы поле «secondDate» вело себя так же.
Возможно ли это? Что лучше для этого?
Спасибо!
Ответ №1:
if((firstDate.Value - secondDate.Value).Days > 31)
{
ModelState.AddModelError("firstDate", "The period must contains less than 31 days");
ModelState.AddModelError("secondDate", "The period must contains less than 31 days");
}
Комментарии:
1. Дарин, когда я пробую это решение, пользователь видит дублированное сообщение (оба поля выделены так, как я хочу, но я бы хотел показать сообщение только один раз). Спасибо за помощь.
2. @Dan-SP, в этом случае не помещайте a
Html.ValidationMessageFor
, связанный со вторым полем. Или, может быть, вы используетеHtml.ValidationSummary
?3. Я использую Html.ValidationSummary
Ответ №2:
В настоящее время я работаю на MVC 5.2.3.0. Если вы используете сводку проверки и оставляете сообщение об ошибке пустым, оно все равно добавит классы html с ошибками во входные данные (покрасьте их красным цветом в пользовательском интерфейсе), но не добавит второе сообщение об ошибке в сводку проверки:
if((secondDate.Value - firstDate.Value).Days > 31)
{
ModelState.AddModelError("firstDate", "The period must contains less than 31 days");
ModelState.AddModelError("secondDate", "");
}