Agrupar mensagens de validação para várias propriedades juntas em uma mensagem asp.net mvc

Eu tenho um modelo de exibição que tem propriedades ano / mês / dia para a data de nascimento de alguém. Todos esses campos são obrigatórios. No momento, se alguém não digitar nada para a data de nascimento, receberá 3 mensagens de erro separadas.

O que eu quero fazer é de alguma forma agrupar essas mensagens de erro em uma mensagem que diz apenas "Data de nascimento é necessária". Portanto, se 1 ou mais desses campos estiverem em branco, eles sempre obterão apenas a 1 mensagem de validação.

Eu preciso disso para trabalhar na validação do lado do cliente via jquery validar e validar discreto. Eu sei que isso é possível com o plugin validar jquery, olhando para estequestão. Mas eu não sei como conseguir isso com asp.net mvc usando atributos de validação no meu modelo e validação discreta. Espero que existam alguns recursos para agrupar propriedades para fins de validação, mas, se não, isso pode ser feito com um atributo de validação personalizado?

Aqui está o que meu modelo e visão existentes parecem:

O modelo:

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

A vista:

<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