Bagaimana cara menyetel nilai yang dipilih dari sebuah Html.DropDownListFor? Saya telah melihat-lihat online dan telah melihat bahwa itu dapat dicapai dengan menggunakan parameter keempat seperti di bawah ini:
@Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country")
Daftar pilih saya kemudian ditampilkan seperti ini:
<select id="ShipFromCountries" name="ShipFromCountries">
<option value="">Please select a country</option>
<option value="GB">United Kingdom</option>
<option value="US">United States</option>
...
</select>
Tetapi untuk beberapa alasan Inggris tetap dipilih tetapi saya ingin "Pilih negara" untuk dipilih.
Adakah yang tahu bagaimana saya bisa mencapai ini?
EDIT
Saya telah memperbarui kode saya karena ada sedikit perubahan dalam fungsionalitas namun sepertinya masih mengalami masalah ini. Inilah yang menurut saya:
@Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template")
1
adalah Id option
yang ingin saya pilih, saya juga mencoba dengan teks option
tetapi itu juga tidak berfungsi.
Ada ide?
sumber
OrderTemplates
upaya Anda untuk mengikat keViewBag
properti yang merupakan tipeIEnumerabe<SelectListItem>
. Tetapi<select>
elemen tidak dapat mengikat ke kumpulan objek kompleks (hanya tipe nilai)Bagi saya tidak bekerja jadi begini:
Pengontrol:
Melihat:
JQuery:
sumber
Saat Anda melewati objek seperti ini:
Anda mengatakan: Sumber (
Model
) dan Kunci ("Code"
) Teks ("Name"
) dan nilai yang dipilih0
. Anda mungkin tidak memiliki0
nilai di source Anda untukCode
properti, jadi HTML Helper akan memilih elemen pertama untuk meneruskan selectedValue yang sebenarnya ke kontrol ini.sumber
Pastikan Anda telah memangkas nilai yang dipilih sebelum Anda menetapkan.
//Model
// Pengendali
//Melihat
sumber
Jika Anda tahu apa yang akan ada dalam tampilan, Anda juga dapat menyetel nilai default dari Controller juga daripada mengaturnya ke dalam file view / cshtml. Tidak perlu menyetel nilai default dari sisi HTML.
Di file Controller.
Di file .cshtml.
sumber
Anda harus melupakan kelasnya
Gunakan ini di Controller Anda :
Pilih nilainya:
Tambahkan daftar ke ViewData:
Gunakan ini di View Anda :
-
Informasi lebih lanjut di: http://www.asp.net/mvc/overview/older-versions/working-with-the-dropdownlist-box-and-jquery/using-the-dropdownlist-helper-with-aspnet-mvc
sumber
Tambahkan Bagian Kontroler
Tambahkan Bagian Html
Metode sederhana
sumber
Bagi saya solusi umum :)
sumber
Linq ke Dropdown dengan item kosong, item yang dipilih (berfungsi 100%)
(Sangat Diketik, Kemungkinan kesalahan minimal) Setiap perubahan model akan tercermin dalam penjilidan
Kontroler
Melihat
Metode untuk mengikat data ini juga memungkinkan
sumber
Saya tahu ini sebenarnya bukan jawaban untuk pertanyaan, tapi saya sedang mencari cara untuk menginisialisasi DropDownList dari daftar dengan cepat dalam tampilan ketika saya terus tersandung pada posting ini.
Kesalahan saya adalah saya mencoba membuat SelectList dari kamus seperti ini:
Saya kemudian pergi menggali di doc msdn resmi , dan menemukan itu
DropDownListFor
tidak selalu memerlukanSelectList
, melainkan sebuahIEnumerable<SelectListItem>
:Dalam kasus saya, saya mungkin juga dapat menghilangkan
Model.Locality
item yang dipilih, karena ini a) satu-satunya item dan b) sudah mengatakannya diSelectListItem.Selected
properti.Jika Anda bertanya-tanya, sumber data adalah halaman AJAX, yang dimuat secara dinamis menggunakan kontrol SelectWoo / Select2.
sumber
Anda perlu mendapatkan satu dan mengatur yang berbeda. Nilai yang dipilih tidak boleh sama dengan item yang akan Anda setel.
Saya menggunakan kamus Enum untuk daftar saya, itulah mengapa ada pasangan "kunci", "nilai".
sumber
Saya memiliki masalah serupa, saya menggunakan ViewBag dan nama Elemen sama. (Kesalahan pengetikan)
sumber
Ini adalah masalah CSS. Saya tidak tahu mengapa @ Html.DropDownListFor di Bootstrap 4 bisa berfungsi. Tentunya ini masalah desain kelas. Bagaimanapun pekerjaannya adalah, jika kotak input Dropdown Anda memiliki Padding CSS: #px, # px; elemen lalu nonaktifkan. Semoga ini berhasil.
sumber