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
Freigeben: 2025-01-08 17:47:40
Original
486 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage