Heim >Backend-Entwicklung >C++ >Wie validiere ich die kombinierte Länge mehrerer Eigenschaften in ASP.NET MVC mithilfe von Datenanmerkungen?

Wie validiere ich die kombinierte Länge mehrerer Eigenschaften in ASP.NET MVC mithilfe von Datenanmerkungen?

DDD
DDDOriginal
2025-01-16 19:26:10681Durchsuche

How to Validate the Combined Length of Multiple Properties in ASP.NET MVC using Data Annotations?

Verwenden Sie Datenanmerkungen, um die kombinierte Länge mehrerer Attribute in ASP.NET MVC zu überprüfen

In ASP.NET MVC ist es üblich, die Annotation StringLength zu verwenden, um die Länge einer einzelnen Eigenschaft zu validieren. Es gibt jedoch Situationen, in denen Sie die Gesamtlänge mehrerer Eigenschaften überprüfen müssen. In diesem Artikel wird ein MVC-kompatibler Ansatz zum Erreichen dieses Ziels mithilfe von Datenanmerkungen untersucht.

Benutzerdefinierte Validierungsattribute

Um die kombinierte Länge mehrerer Eigenschaften zu validieren, können Sie eine benutzerdefinierte Validierungseigenschaft erstellen. Hier ist ein Beispiel:

<code class="language-csharp">public class CombinedMinLengthAttribute : ValidationAttribute
{
    public CombinedMinLengthAttribute(int minLength, params string[] propertyNames)
    {
        this.PropertyNames = propertyNames;
        this.MinLength = minLength;
    }

    public string[] PropertyNames { get; private set; }
    public int MinLength { get; private set; }

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        var properties = this.PropertyNames.Select(validationContext.ObjectType.GetProperty);
        var values = properties.Select(p => p.GetValue(validationContext.ObjectInstance, null)).OfType<string>();
        var totalLength = values.Sum(x => x?.Length ?? 0) + (value?.ToString()?.Length ?? 0); //处理空值情况

        if (totalLength < MinLength)
        {
            return new ValidationResult(FormatErrorMessage(validationContext.DisplayName));
        }

        return ValidationResult.Success;
    }
}</code>

Anwendung

Um diese benutzerdefinierte Eigenschaft zu verwenden, können Sie damit eine Eigenschaft in Ihrem Ansichtsmodell dekorieren:

<code class="language-csharp">public class MyViewModel
{
    [CombinedMinLength(20, "Bar", "Baz", ErrorMessage = "Foo, Bar 和 Baz 属性的组合最小长度应大于 20")]
    public string Foo { get; set; }
    public string Bar { get; set; }
    public string Baz { get; set; }
}</code>

Wenn das Modell validiert wird, wird die Methode IsValid der benutzerdefinierten Eigenschaft aufgerufen und die kombinierte Länge der angegebenen Eigenschaft wird anhand der angegebenen Mindestlänge zusammen mit dem Wert der dekorierten Eigenschaft validiert. Der verbesserte Code fügt die Behandlung von Nullwerten hinzu und vermeidet potenzielle NullReferenceException.

Das obige ist der detaillierte Inhalt vonWie validiere ich die kombinierte Länge mehrerer Eigenschaften in ASP.NET MVC mithilfe von Datenanmerkungen?. 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