Apa perbedaan perilaku [MaxLength]
dan [StringLength]
atribut?
Sejauh yang saya tahu (dengan pengecualian yang [MaxLength]
dapat memvalidasi panjang maksimum array) ini identik dan agak berlebihan?
asp.net-mvc-3
ef-code-first
entity-framework-4.1
Nick Goloborodko
sumber
sumber
Jawaban:
MaxLength digunakan untuk Kerangka Entitas untuk memutuskan seberapa besar untuk membuat bidang nilai string saat membuat database.
Dari MSDN:
StringLength adalah anotasi data yang akan digunakan untuk validasi input pengguna.
Dari MSDN:
sumber
MaxLengthAttribute
, sementara EF mengakuiStringLengthAttribute
[MaxLength]
memiliki ErrorMessage?Beberapa informasi tambahan yang cepat namun sangat berguna yang baru saya pelajari dari pos lain, tetapi sepertinya tidak dapat menemukan dokumentasi untuk (jika ada yang dapat membagikan tautannya di MSDN itu akan luar biasa):
Pesan validasi yang terkait dengan atribut ini sebenarnya akan menggantikan placeholder yang dikaitkan dengan atribut. Sebagai contoh:
Akan menampilkan yang berikut jika melebihi batas karakter: "Alamat dapat memiliki maksimal 100 karakter"
Placeholder yang saya tahu adalah:
Terima kasih banyak kepada bloudraak karena pada awalnya menunjukkan ini.
sumber
Berikut ini adalah hasil ketika kami menggunakan keduanya
[MaxLength]
dan[StringLength]
atribut, diEF code first
. Jika keduanya digunakan,[MaxLength]
menangkan balapan. Lihat hasil tes distudentname
kolom di bawah kelassumber
Semua jawaban yang baik ... Dari perspektif validasi, saya juga memperhatikan bahwa MaxLength akan divalidasi hanya di sisi server, sementara StringLength juga akan divalidasi di sisi klien.
sumber
MaxLengthAttribute berarti Max. panjang array atau data string diizinkan
StringLengthAttribute berarti Min. dan maks. panjang karakter yang diizinkan dalam bidang data
Kunjungi http://joeylicc.wordpress.com/2013/06/20/asp-net-mvc-model-validation-using-data-annotations/
sumber
Satu hal lagi yang perlu diperhatikan adalah dalam atribut MaxLength Anda hanya dapat memberikan rentang yang diperlukan max, bukan rentang minimum yang diperlukan. Sementara di StringLength Anda bisa menyediakan keduanya .
sumber
Saya telah mengatasinya dengan menambahkan baris di bawah ini dalam konteks saya:
Entah bagaimana,
[MaxLength]
tidak berhasil untuk saya.sumber
Saat menggunakan atribut untuk membatasi panjang input maksimum untuk teks dari formulir pada halaman web, StringLength tampaknya menghasilkan atribut html maxlength (setidaknya dalam pengujian saya dengan MVC 5). Yang akan dipilih kemudian bergantung pada bagaimana Anda ingin mengingatkan pengguna bahwa ini adalah panjang teks maksimum. Dengan atribut stringlength, pengguna tidak akan bisa mengetik di luar panjang yang diizinkan. Atribut maxlength tidak menambahkan atribut html ini, melainkan menghasilkan atribut validasi data, yang berarti pengguna dapat mengetik di luar panjang yang ditunjukkan dan bahwa mencegah input lebih lama tergantung pada validasi dalam javascript ketika ia pindah ke bidang berikutnya atau klik kirim (atau kirim jika javascript dinonaktifkan, validasi sisi server). Dalam hal ini pengguna dapat diberitahu tentang pembatasan oleh pesan kesalahan.
sumber