Dikkat: Bu soru dokuz yıldan eski!
En iyi seçeneğiniz, daha yeni soruları aramak veya MVC'nize özgü sürümünüzü aramak için aşağıdaki cevapları aramaktır, çünkü burada birçok yanıt artık kullanılmamaktadır.
Sürümünüze uygun bir yanıt bulursanız, lütfen yanıtın kullandığınız MVC sürümünü içerdiğinden emin olun.
(Orijinal soru aşağıda başlar)
Bu bana biraz tuhaf geliyor, ama anlayabildiğim kadarıyla böyle yapıyorsun.
Bir nesne koleksiyonum var ve kullanıcıların bunlardan birini veya daha fazlasını seçmesini istiyorum. Bu bana "onay kutuları ile form" diyor. Nesnelerimin herhangi bir "seçilmiş" kavramı yok (bir wcf çağrısının serileştirilmesiyle oluşturulan temel POCO'lar). Bu yüzden aşağıdakileri yapıyorum:
public class SampleObject{
public Guid Id {get;set;}
public string Name {get;set;}
}
Görünümde:
<%
using (Html.BeginForm())
{
%>
<%foreach (var o in ViewData.Model) {%>
<%=Html.CheckBox(o.Id)%> <%= o.Name %>
<%}%>
<input type="submit" value="Submit" />
<%}%>
Ve denetleyicide, kullanıcının hangi nesneleri kontrol ettiğini anlamanın tek yolu budur:
public ActionResult ThisLooksWeird(FormCollection result)
{
var winnars = from x in result.AllKeys
where result[x] != "false"
select x;
// yadda
}
İlk olarak garip ve ikincisi, kullanıcının kontrol ettiği öğeler için FormCollection değerini yalnızca doğru değil, "doğru yanlış" olarak listeler.
Açıkçası, bir şey eksik. Bu html formu içinde hareket koleksiyonunda nesneleri UpdateModel()
bir ModelBinder kullanılarak güncelleştirildiği düşüncesiyle inşa düşünüyorum .
Ancak nesnelerim bunun için ayarlanmamış; bu tek yolun bu olduğu anlamına mı geliyor? Bunu yapmanın başka bir yolu var mı?