Добавление более одного ключа для одной и той же ошибки ModelState

#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", "");
}