Gunakan anotasi data untuk mengesahkan panjang gabungan berbilang atribut dalam ASP.NET MVC
Dalam ASP.NET MVC, adalah amalan biasa untuk menggunakan anotasi StringLength
untuk mengesahkan panjang sifat tunggal. Walau bagaimanapun, terdapat situasi di mana anda perlu mengesahkan panjang gabungan berbilang sifat. Artikel ini meneroka pendekatan yang mematuhi MVC untuk mencapai matlamat ini menggunakan anotasi data.
Atribut pengesahan tersuai
Untuk mengesahkan panjang gabungan berbilang sifat, anda boleh membuat sifat pengesahan tersuai. Berikut ialah contoh:
<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>
Cara menggunakan
Untuk menggunakan sifat tersuai ini, anda boleh menggunakannya untuk menghias harta dalam model paparan anda:
<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>
Apabila model disahkan, kaedah IsValid
sifat tersuai dipanggil dan panjang gabungan sifat yang ditentukan disahkan terhadap panjang minimum yang ditentukan bersama-sama dengan nilai sifat yang dihias. Kod yang dipertingkatkan menambah pengendalian nilai nol dan mengelakkan potensi NullReferenceException
.
Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Panjang Gabungan Pelbagai Sifat dalam ASP.NET MVC menggunakan Anotasi Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!