Grupuj komunikaty walidacyjne dla wielu właściwości razem w jedną wiadomość asp.net mvc

Mam model widoku, który ma właściwości roku / miesiąca / dnia dla czyjejś daty urodzenia. Wszystkie te pola są wymagane. Teraz, jeśli ktoś nie wprowadzi niczego na datę urodzenia, otrzyma 3 oddzielne komunikaty o błędach.

Chcę w jakiś sposób pogrupować te komunikaty o błędach w jedną wiadomość, która mówi „Wymagana jest data urodzenia”. Więc jeśli 1 lub więcej z tych pól jest pustych, zawsze otrzymają tylko 1 komunikat sprawdzający.

POTRZEBUJĘ, aby to działało na walidacji po stronie klienta za pomocą sprawdzania poprawności i dyskretnego sprawdzania poprawności. Wiem, że jest to możliwe dzięki wtyczce sprawdzania poprawności jquery, patrząc na topytanie. Ale nie wiem, jak to osiągnąć za pomocą asp.net mvc przy użyciu atrybutów walidacji na moim modelu i dyskretnej walidacji. Mam nadzieję, że istnieją pewne metody grupowania właściwości do celów walidacji, ale jeśli nie, można to zrobić za pomocą niestandardowego atrybutu sprawdzania poprawności?

Oto jak wygląda mój obecny model i widok:

Model:

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; }
}

Widok:

<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>

questionAnswers(4)

yourAnswerToTheQuestion