Heim >Backend-Entwicklung >C++ >Wie validiere ich die kombinierte Länge mehrerer Eigenschaften in ASP.NET MVC mithilfe von Datenanmerkungen?
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!