Perhatian: Pertanyaan ini sudah lebih dari sembilan tahun!
Pilihan terbaik Anda adalah mencari pertanyaan yang lebih baru, atau mencari jawaban di bawah ini untuk mencari versi spesifik MVC Anda, karena banyak jawaban di sini sudah usang sekarang.
Jika Anda menemukan jawaban yang berfungsi untuk versi Anda, pastikan jawabannya berisi versi MVC yang Anda gunakan.
(Pertanyaan awal dimulai di bawah)
Ini agak aneh bagi saya, tetapi sejauh yang saya tahu, ini adalah bagaimana Anda melakukannya.
Saya memiliki koleksi objek, dan saya ingin pengguna memilih satu atau lebih dari itu. Ini mengatakan kepada saya "formulir dengan kotak centang." Objek saya tidak memiliki konsep "terpilih" (itu adalah POCO yang belum sempurna yang dibentuk oleh deserialisasi panggilan wcf). Jadi, saya melakukan hal berikut:
public class SampleObject{
public Guid Id {get;set;}
public string Name {get;set;}
}
Dalam tampilan:
<%
using (Html.BeginForm())
{
%>
<%foreach (var o in ViewData.Model) {%>
<%=Html.CheckBox(o.Id)%> <%= o.Name %>
<%}%>
<input type="submit" value="Submit" />
<%}%>
Dan, dalam controller, ini adalah satu-satunya cara saya bisa melihat untuk mengetahui objek apa yang diperiksa pengguna:
public ActionResult ThisLooksWeird(FormCollection result)
{
var winnars = from x in result.AllKeys
where result[x] != "false"
select x;
// yadda
}
Yang aneh di tempat pertama, dan kedua, untuk barang-barang yang diperiksa pengguna, FormCollection mendaftar nilainya sebagai "benar salah" daripada hanya benar.
Jelas, saya kehilangan sesuatu. Saya pikir ini dibangun dengan ide dalam pikiran bahwa objek dalam koleksi yang ditindaklanjuti dalam bentuk html diperbarui menggunakan UpdateModel()
atau melalui ModelBinder.
Tetapi objek saya tidak diatur untuk ini; apakah itu berarti bahwa ini adalah satu-satunya cara? Apakah ada cara lain untuk melakukannya?