Saya memiliki Model dengan 4 properti yang bertipe string. Saya tahu Anda dapat memvalidasi panjang satu properti dengan menggunakan anotasi StringLength. Namun saya ingin memvalidasi panjang dari 4 properti yang digabungkan.
Apa cara MVC untuk melakukan ini dengan anotasi data?
Saya menanyakan ini karena saya baru mengenal MVC dan ingin melakukannya dengan cara yang benar sebelum membuat solusi sendiri.
c#
.net
asp.net-mvc
asp.net-mvc-3
data-annotations
Danny van der Kraan
sumber
sumber
Jawaban:
Anda dapat menulis atribut validasi khusus:
lalu Anda mungkin memiliki model tampilan dan menghias salah satu propertinya dengannya:
sumber
this.RuleFor(x => x.Foo).Must((x, foo) => x.Foo.Length + x.Bar.Length + x.Baz.Length < 20).WithMessage("The combined minimum length of the Foo, Bar and Baz properties should be longer than 20");
. Sekarang lihat kode dalam jawaban saya yang perlu Anda tulis dengan anotasi data dan beri tahu saya mana yang Anda sukai. Model validasi deklaratif sangat buruk dibandingkan dengan model imperatif.IsValid
dipanggilvalidationContext
adalah null. Tahu apa yang saya lakukan salah? :-(Model yang divalidasi sendiri
Model Anda harus mengimplementasikan sebuah antarmuka
IValidatableObject
. Masukkan kode validasi Anda ke dalamValidate
metode:Harap perhatikan: ini adalah validasi sisi server . Itu tidak bekerja di sisi klien. Validasi Anda akan dilakukan hanya setelah pengiriman formulir.
sumber
ExpressiveAnnotations memberi Anda kemungkinan seperti itu:
sumber
Untuk memperbaiki jawaban Darwin, ini bisa sedikit lebih singkat:
Model:
Perhatikan bahwa pesan kesalahan diperlukan, jika tidak kesalahan akan kosong.
sumber
Latar Belakang:
Validasi model diperlukan untuk memastikan bahwa data yang diterima yang kami terima valid dan benar sehingga kami dapat melakukan pemrosesan lebih lanjut dengan data ini. Kami dapat memvalidasi model dalam metode tindakan. Atribut validasi bawaan adalah Compare, Range, RegularExpression, Required, StringLength. Namun kami mungkin memiliki skenario di mana kami memerlukan atribut validasi selain yang sudah ada di dalamnya.
Atribut Validasi Kustom
Untuk membuat atribut validasi khusus, Anda harus mendapatkan kelas ini dari ValidationAttribute.
Semoga ini membantu. Bersulang !
Referensi
sumber
Agak terlambat untuk menjawab, tapi untuk siapa yang mencari. Anda dapat dengan mudah melakukan ini dengan menggunakan properti tambahan dengan anotasi data:
Itu semua terlalu itu. Jika Anda benar-benar ingin menampilkan kesalahan validasi di tempat tertentu juga, Anda dapat menambahkan ini dalam tampilan Anda:
melakukan ini dalam tampilan bisa berguna jika Anda ingin melakukan pelokalan.
Semoga ini membantu!
sumber