Dalam ASP.NET MVC, anda boleh menggunakan anotasi data StringLength dengan mudah untuk mengesahkan panjang satu sifat. Walau bagaimanapun, dalam beberapa kes anda mungkin perlu mengesahkan panjang gabungan berbilang sifat rentetan. Artikel ini menerangkan pendekatan MVC yang disyorkan untuk mencapai ini menggunakan anotasi data tersuai.
Untuk mengesahkan panjang gabungan, buat atribut pengesahan tersuai:
<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>
Dalam model paparan anda, hiasi sifat yang diingini dengan sifat tersuai:
<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>
Dengan tetapan ini, jika panjang gabungan sifat Foo, Bar dan Baz kurang daripada panjang minimum yang ditentukan, pengesahan model akan gagal dengan mesej ralat yang ditakrifkan dalam sifat. Pengendalian nilai null telah ditambahkan pada kod untuk mengelakkan pengecualian yang disebabkan oleh nilai atribut null. Mesej ralat juga telah disetempatkan untuk menjadi lebih mesra pengguna.
Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Gabungan Panjang Pelbagai Harta dalam ASP.NET MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!