Gruppieren Sie Validierungsnachrichten für mehrere Eigenschaften in einer Nachricht asp.net mvc

Ich habe ein Ansichtsmodell mit Eigenschaften für Jahr / Monat / Tag für das Geburtsdatum einer Person. Alle diese Felder müssen ausgefüllt werden. Wenn jemand zum Zeitpunkt der Geburt nichts eingibt, erhält er 3 separate Fehlermeldungen.

Was ich tun möchte, ist, diese Fehlermeldungen zu einer einzigen Nachricht zusammenzufassen, in der nur steht, dass ein Geburtsdatum erforderlich ist. Wenn eines oder mehrere dieser Felder leer sind, erhalten sie immer nur die Bestätigungsnachricht 1.

Ich brauche dies, um clientseitige Validierung über JQuery Validate und unauffällige Validierung zu arbeiten. Ich weiß, dass dies mit dem jquery validate Plugin möglich ist, wenn ich mir das anseheFrage. Ich weiß jedoch nicht, wie ich dies mit asp.net mvc erreichen kann, indem ich Validierungsattribute für mein Modell und eine unauffällige Validierung verwende. Hoffentlich gibt es einige eingebaute Methoden zum Gruppieren von Eigenschaften für Überprüfungszwecke, aber wenn nicht, kann dies mit einem benutzerdefinierten Überprüfungsattribut durchgeführt werden?

So sieht mein vorhandenes Modell und meine vorhandene Ansicht aus:

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

Die Aussicht:

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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage