Heim >Backend-Entwicklung >C++ >Wie implementiert man eine bedingte Validierung in ASP.NET MVC mithilfe von Datenanmerkungen und IValidatableObject?

Wie implementiert man eine bedingte Validierung in ASP.NET MVC mithilfe von Datenanmerkungen und IValidatableObject?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-08 17:47:40506Durchsuche

How to Implement Conditional Validation in ASP.NET MVC Using Data Annotations and IValidatableObject?

Implementierung der bedingten Validierung mit ASP.NET MVC-Datenanmerkungen und IValidatableObject

Mit der bedingten Validierungsfunktion von ASP.NET MVC können Sie Validierungsregeln definieren, die von anderen Modelleigenschaften abhängen. Dies ist von unschätzbarem Wert, wenn bestimmte Felder nur unter bestimmten Umständen validiert werden müssen.

Beispiel für eine bedingte Validierung: Ein praktisches Szenario

Lassen Sie uns dies mit einem Person-Modell veranschaulichen, das Name, IsSenior und eine verschachtelte Senior-Klasse mit einer Description-Eigenschaft enthält. Wir benötigen Senior.Description nur, wenn IsSenior wahr ist.

Hier ist das Modell, das Datenanmerkungen verwendet (ein einfacherer, aber weniger flexibler Ansatz):

<code class="language-csharp">public class Person
{
    [Required(ErrorMessage = "*")]
    public string Name { get; set; }

    public bool IsSenior { get; set; }

    public Senior Senior { get; set; }
}

public class Senior
{
    [Required(ErrorMessage = "*")]  // This validation is not conditionally applied yet.
    public string Description { get; set; }
}</code>

Und ein entsprechender Ansichtsausschnitt (anschaulich):

<code class="language-html">@Html.LabelFor(m => m.Name)
@Html.EditorFor(m => m.Name)
@Html.ValidationMessageFor(m => m.Name)

@Html.LabelFor(m => m.IsSenior)
@Html.EditorFor(m => m.IsSenior)
@Html.ValidationMessageFor(m => m.IsSenior)

@Html.LabelFor(m => m.Senior.Description)
@Html.EditorFor(m => m.Senior.Description)
@Html.ValidationMessageFor(m => m.Senior.Description) </code>

Erweiterte bedingte Validierung mit IValidatableObject

Für eine robustere bedingte Validierung bietet ASP.NET MVC die IValidatableObject-Schnittstelle. Durch die Implementierung der Validate-Methode können Sie eine Validierungslogik basierend auf dem Gesamtzustand des Modells definieren.

Hier ist das verbesserte Person Modell mit IValidatableObject:

<code class="language-csharp">public class Person : IValidatableObject
{
    public string Name { get; set; }
    public bool IsSenior { get; set; }
    public Senior Senior { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (IsSenior && string.IsNullOrEmpty(Senior?.Description))
            yield return new ValidationResult("Description is required for senior citizens.");
    }
}</code>

Dieser Ansatz bietet mehr Flexibilität und Kontrolle über Validierungsregeln. Ausführliche Informationen finden Sie in der entsprechenden Microsoft-Dokumentation (suchen Sie nach „IValidatableObject“ und ASP.NET MVC). Im obigen Beispiel wird für zusätzliche Sicherheit der Null-Bedingungsoperator (?.) verwendet.

Das obige ist der detaillierte Inhalt vonWie implementiert man eine bedingte Validierung in ASP.NET MVC mithilfe von Datenanmerkungen und IValidatableObject?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn