Bagaimana cara mengirimkan input yang dinonaktifkan di ASP.NET MVC?
c#
.net
javascript
asp.net-mvc
Sanchitos
sumber
sumber
Jawaban:
Tidak bisakah Anda membuat lapangan,
readonly="readonly"
bukandisabled="disabled"
? Nilai bidang hanya-baca akan dikirimkan ke server sementara masih tidak dapat diedit oleh pengguna. SebuahSELECT
tag adalah pengecualian.sumber
<%: Html.TextBoxFor(model => model.p1, new { @readonly = "readonly" }) %>
bagaimana saya bisa membuatnya menjadi abu-abu sehingga secara visual sepertinya tidak dapat diedit. Lebih baik lagi kita dapat menggunakan sesuatu yang mirip dengan LabelFor, saya mencoba LabelFor tetapi hanya mendapatkan DisplayName ....type="checkbox"
inputTerima kasih untuk semuanya:
Cara saya menyelesaikan ini:
catatan:
Saya mendapat informasi ini di jawabannya tetapi saya telah diedit.
sumber
textBox.Attributes.Add("readonly", "readonly");
dan penjelasannya ada di tautan$("#textBoxId").css("color", "#c0c0c0")
.@ppumkin menyebutkan ini pada komentarnya tentang jawaban ini, tetapi saya ingin menyorotinya karena saya tidak dapat menemukan sumber daya lain untuk mengirimkan data dari penyandang cacat
<select>
. Saya juga percaya ini relevan dengan pertanyaan karena yang dipilih bukan<input>
s tetapi mereka adalah "masukan".Contoh:
Perhatian: ini akan menempatkan dua tag pada halaman dengan ID yang sama, yang sebenarnya bukan HTML yang valid dan dapat menyebabkan pusing dengan javascript. Bagi saya, saya memiliki javascript untuk mengatur nilai dropdown dengan html-nya
id
, dan jika Anda meletakkan bidang tersembunyi terlebih dahulu, javascript akan menemukannya, bukanselect
.sumber
Biasanya, jika saya memiliki bidang yang "hanya-baca" tetapi perlu dikirim kembali ke server, saya akan membuat tampilan dinonaktifkan (atau hanya teks), tetapi kemudian menambahkan bidang tersembunyi dengan nama yang sama. Anda masih perlu memastikan bahwa bidang tersebut tidak benar-benar diubah di sisi server - jangan perbarui dari model dalam tindakan Anda - tetapi status model akan tetap akurat jika ada kesalahan.
sumber
Anda juga dapat menggunakan kode seperti ini sebelum formulir dikirimkan:
sumber
Ajax.BeginForm
?Dengan desain browser tidak mendukung itu.
Baik membuatnya
readonly
yang memungkinkan pengiriman nilai ke server atau jika Anda berurusan dengan kontrol yang masih dapat digunakan denganreadonly
atribut seperti Pilih, tambahkan gaya csspointer-events: none;
untuk menjadikannya non-interaktifAgak hack, tapi berhasil! Ini juga berfungsi ketika Anda mengirimkan formulir secara langsung dengan tombol kirim tanpa menggunakan javascript. Tidak perlu kerja ekstra!
Misalnya:
sumber
Anda dapat membuat template editor seperti di bawah ini
CSS
Template Editor
sumber
ketika kita berurusan dengan kotak centang yang dinonaktifkan tetapi dicentang dan kami ingin memposting nilainya, kami perlu memastikan bidang tersembunyi kami muncul sebelum bidang tersembunyi @ Html.CheckBoxFor.
berikut adalah tautan dari mana saya menemukan jawabannya. http://davecallan.com/posting-disabled-checkboxes-mvc-razor-views/#comment-11033
sumber
memperluas Tasos '(": disabled", $ (' # xxxForm ')). removeAttr ("disabled"); kamu bisa memakai:
sumber
Ini akan membantu dalam mengirimkan nilai model di ASP.net:
sumber
Saya biasanya menggunakan cara ini untuk CheckBox atau CheckBoxFor karena membuatnya dinonaktifkan menyebabkan hilangnya nilai. Hanya baca tidak berfungsi di kotak centang juga.
sumber
Letakkan saja skrip ini dalam skrip @ bagian di halaman Anda. ini akan mengaktifkan masukan saat Anda mengirimkan halaman, dan Anda harus mengarahkan pengguna ke halaman lain setelah mengirimkan.
sumber
Buat saja properti itu [Wajib] di ViewModel ditautkan ke tampilan itu.
sumber