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

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

DDD
DDDOriginal
2025-01-16 19:37:11827Durchsuche

How to Validate Combined Length of Multiple Properties in ASP.NET MVC?

Verwendung von Datenanmerkungen zur Implementierung der ASP.NET MVC-Multiattribut-Kombinationsüberprüfung

In ASP.NET MVC können Sie die StringLength-Datenanmerkung problemlos verwenden, um die Länge einer einzelnen Eigenschaft zu validieren. In einigen Fällen müssen Sie jedoch möglicherweise die kombinierte Länge mehrerer Zeichenfolgeneigenschaften überprüfen. In diesem Artikel wird der empfohlene MVC-Ansatz beschrieben, um dies mithilfe benutzerdefinierter Datenanmerkungen zu erreichen.

Schema: Benutzerdefinierte Validierungsattribute

Um die kombinierte Länge zu validieren, erstellen Sie ein benutzerdefiniertes Validierungsattribut:

<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 < this.MinLength)
        {
            return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName));
        }
        return ValidationResult.Success;
    }
}</code>

Anleitung

Dekorieren Sie in Ihrem Ansichtsmodell die gewünschten Eigenschaften mit benutzerdefinierten Eigenschaften:

<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 bei dieser Einstellung die kombinierte Länge der Eigenschaften Foo, Bar und Baz kleiner als die angegebene Mindestlänge ist, schlägt die Modellvalidierung mit der in den Eigenschaften definierten Fehlermeldung fehl. Dem Code wurde die Behandlung von Nullwerten hinzugefügt, um Ausnahmen zu vermeiden, die durch Nullattributwerte verursacht werden. Fehlermeldungen wurden ebenfalls lokalisiert, um die Benutzerfreundlichkeit zu erhöhen.

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