Mengapa secara default ini diubah saat menambahkan tampilan "edit" baru? Apa keuntungan bila menggunakan EditorFor()
vs TextboxFor()
?
aku menemukan ini
Secara default, buat dan Edit perancah sekarang menggunakan helper Html.EditorFor bukan helper Html.TextBoxFor. Ini meningkatkan dukungan untuk metadata pada model dalam bentuk atribut anotasi data ketika kotak dialog Tambah Tampilan menghasilkan tampilan.
asp.net-mvc
asp.net-mvc-3
razor
ShaneKm
sumber
sumber
Jawaban:
Keuntungannya
EditorFor
adalah bahwa kode Anda tidak terikat dengan<input type="text"
. Jadi, jika Anda memutuskan untuk mengubah sesuatu ke aspek bagaimana kotak teks Anda ditampilkan seperti membungkusnya di dalam,div
Anda cukup menulis templat editor khusus (~/Views/Shared/EditorTemplates/string.cshtml
) dan semua kotak teks di aplikasi Anda akan secara otomatis mendapat manfaat dari perubahan ini sedangkan jika Anda telah melakukan hardcode padaHtml.TextBoxFor
Anda harus memodifikasinya di mana-mana. Anda juga bisa menggunakan Anotasi Data untuk mengontrol cara ini diberikan.sumber
TextBoxFor : Ini akan merender seperti elemen html input teks yang sesuai dengan ekspresi yang ditentukan. Dengan kata sederhana itu akan selalu ditampilkan seperti kotak teks input terlepas dari tipe properti yang semakin terikat dengan kontrol.
EditorFor : Kontrol ini agak pintar. Ini membuat markup HTML berdasarkan tipe data properti. Misalnya misalkan ada properti boolean dalam model. Untuk merender properti ini dalam tampilan sebagai kotak centang, kami dapat menggunakan CheckBoxFor atau EditorFor. Keduanya akan menghasilkan markup yang sama.
Apa keuntungan menggunakan EditorFor?
Seperti yang kita ketahui, tergantung pada tipe data properti itu menghasilkan markup html. Jadi anggaplah besok jika kita mengubah tipe data properti dalam model, tidak perlu mengubah apa pun dalam tampilan. Kontrol EditorFor akan mengubah markup html secara otomatis.
sumber
The
Html.TextboxFor
selalu menciptakan sebuah textbox (<input type="text" ...
).Sementara EditorFor melihat jenis dan informasi meta, dan dapat membuat kontrol lain atau templat yang Anda berikan.
Misalnya untuk properti DateTime Anda bisa membuat templat yang menggunakan DatePicker jQuery.
sumber
implement jquery datepicker
dan menggunakannya denganEditorFor
ini di siniIni adalah salah satu perbedaan mendasar yang tidak disebutkan dalam komentar sebelumnya:
Readonly
properti akan bekerja dengan kotak teks dan tidak akan bekerja denganEditorFor
.Atas karya kode, dimana dengan mengikuti Anda tidak dapat membuat kontrol untuk dibaca .
sumber
Ada juga sedikit perbedaan dalam output html untuk tipe data string.
sumber