Saya mengalami masalah dengan DropDownListFor
di aplikasi MVC3 saya. Saya dapat menggunakan StackOverflow untuk mencari cara agar mereka muncul di Tampilan, tetapi sekarang saya tidak tahu cara menangkap nilai dalam properti yang sesuai pada Model Tampilan saat dikirimkan. Agar ini berfungsi, saya harus membuat kelas dalam yang memiliki ID dan properti nilai, lalu saya harus menggunakan an IEnumerable<Contrib>
untuk memenuhi DropDownListFor
persyaratan parameter. Sekarang, bagaimanapun, bagaimana MVC FW seharusnya memetakan nilai yang dipilih pada drop-down ini kembali ke properti string sederhana pada model tampilan saya?
public class MyViewModelClass
{
public class Contrib
{
public int ContribId { get; set; }
public string Value { get; set; }
}
public IEnumerable<Contrib> ContribTypeOptions =
new List<Contrib>
{
new Contrib {ContribId = 0, Value = "Payroll Deduction"},
new Contrib {ContribId = 1, Value = "Bill Me"}
};
[DisplayName("Contribution Type")]
public string ContribType { get; set; }
}
Dalam View saya, saya menempatkan dropdown pada halaman seperti ini:
<div class="editor-label">
@Html.LabelFor(m => m.ContribType)
</div>
<div class="editor-field">
@Html.DropDownListFor(m => m.ContribTypeOptions.First().ContribId,
new SelectList(Model.ContribTypeOptions, "ContribId", "Value"))
</div>
Saat saya mengirimkan formulir, ContribType
is (tentu saja) null.
Bagaimana cara yang benar untuk melakukan ini?
sumber
contribTypeOptions
, misalnyanew Contrib {ContribId = -1, Value = "Please Select"}
dan itu akan ditampilkan dalam daftar dropdown. Dari yang Anda dapat memeriksa apakahContribType
ini-1
ini berarti bahwa pengguna tidak memilih nilai apapun@Html.DropDownListFor(m => m.ContribType, new SelectList(Model.ContribTypeOptions, "ContribId", "Value", Model.ContribTypeOptions.First().ContribId), "Select, please")
SelectList
) . Ini adalah nilai properti (ContribType
) yang menentukan apa yang dipilih (begitulah cara kerja pengikatan model) dan kodenya seharusnya hanya@Html.DropDownListFor(m => m.ContribType, new SelectList(Model.ContribTypeOptions, "ContribId", "Value")
Bisakah Anda mengedit jawaban menjadi benar.Saya pikir ini akan membantu: Dalam Controller dapatkan item daftar dan nilai yang dipilih
dan di View
sumber
Untuk mengikat Data Dinamis dalam DropDownList, Anda dapat melakukan hal berikut:
Buat ViewBag di Controller seperti di bawah ini
sekarang gunakan nilai ini dalam tampilan seperti di bawah ini:
sumber
Di sini Value adalah objek model tempat Anda ingin menyimpan Nilai yang Dipilih
sumber