У меня есть модель представления, у которой есть свойства года/месяца/дня для кого-то даты рождения. Все эти поля необходимы. Прямо сейчас, если кто-то не вводит ничего на дату рождения, они получают 3 отдельных сообщения об ошибках.
То, что я хочу сделать, - это как-то объединить эти сообщения об ошибках в одно сообщение, которое просто говорит: "Требуется дата рождения". Поэтому, если 1 или более из этих полей пустые, они всегда будут просто получать 1 сообщение проверки.
Мне НУЖНО это работать с проверкой на стороне клиента с помощью проверки jquery и ненавязчивого подтверждения. Я знаю, что это возможно с помощью плагина jquery validate, посмотрев на это question. Но я не знаю, как добиться этого с помощью asp.net mvc, используя атрибуты проверки на моей модели и ненавязчивую проверку. Надеемся, что некоторые встроенные способы группировки свойств для целей валидации, но если это невозможно, с помощью специального атрибута проверки?
Вот что выглядит моя существующая модель и вид:
Модель:
public class MyModel {
[Required(ErrorMessage = "Year is required")]
public int Year { get; set; }
[Required(ErrorMessage = "Month is required")]
public int Month { get; set; }
[Required(ErrorMessage = "Day is required")]
public int Day { get; set; }
}
Вид:
<div>
<label>Date of birth: <span style="color:red;">*</span></label>
<div>@Html.DropDownListFor(m => m.Year, ApplicationModel.GetSelectListForDateRange(DateTime.Today.Year - 16, DateTime.Today.Year - 10), "", new{data_description="birthDate"})@Html.LabelFor(m => m.StudentBirthYear)</div>
<div>@Html.DropDownListFor(m => m.Month, ApplicationModel.GetSelectListForDateRange(1, 12, true), "", new{data_description="birthDate"})@Html.LabelFor(m => m.StudentBirthMonth)</div>
<div>@Html.DropDownListFor(m => m.Day, ApplicationModel.GetSelectListForDateRange(1, 31), "", new{data_description="birthDate"})@Html.LabelFor(m => m.StudentBirthDay)</div>
</div>
<div class="error-container">@Html.ValidationMessageFor(m => m.Year)</div>
<div class="error-container">@Html.ValidationMessageFor(m => m.Month)</div>
<div class="error-container">@Html.ValidationMessageFor(m => m.Day)</div>