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