SORU
20 EKİM 2008, PAZARTESİ


Nasıl ASP.NET MVC form kutularını işlemek için?

Dikkat: Bu soru beş yaşında!

En iyi seçenek yeni soru aramak için, ya da pek çok cevabı burada eski olarak MVC belirli sürümü arıyorsunuz aşağıdaki cevap aramak için.

Eğer sürümü için çalışan bir cevabı bulursan, lütfen cevap MVC sürümü içerdiğinden emin olun kullanıyorsunuz.
(Özgün soru aşağıda başlar)


Bu bana biraz tuhaf görünüyor, ama anladığım kadarıyla senin böyle bir şey yapacağın.

Nesnelerin bir koleksiyonu var, ve kullanıcılar bir veya daha fazla seçmek istiyorum. Bu bana "onay kutuları ile bir form." dedi Benim nesnelerin herhangi bir kavram yok "" (POCO XML arama kaldırmada oluşan bu ilkel ediyorlar). seçilen Bu yüzden, aşağıdaki gibi yapın:

public class SampleObject{
  public Guid Id {get;set;}
  public string Name {get;set;}
}

Görünüm:

<%
    using (Html.BeginForm())
    {
%>
  <%foreach (var o in ViewData.Model) {%>
    <%=Html.CheckBox(o.Id)%> <%= o.Name %>
  <%}%>
  <input type="submit" value="Submit" />
<%}%>

Ve Denetleyici olarak, bu Kullanıcı Kontrol anlamaya görmenin tek yolu

public ActionResult ThisLooksWeird(FormCollection result)
{
  var winnars = from x in result.AllKeys
          where result[x] != "false"
          select x;
  // yadda
}

İlk başta onun garip, ve ikinci olarak, Kullanıcı Kontrol öğelerin, FormCollection "" doğru. yerine false true değerini listeler

Belli ki, bir şeyler eksik. Bu html form içinde hareket üzerine koleksiyon nesneleri bir ModelBinder UpdateModel() kullanarak veya güncellenmiş akılda fikri ile inşa edilmiştir düşünüyorum.

Ama benim bu nesneler için ayarlanmış değildir; bu tek yol olduğu anlamına mı geliyor? Bunu yapmak için başka bir yol var mı?

CEVAP
20 EKİM 2008, PAZARTESİ


Html.CheckBox yapıyor garip bir şey - eğer görünümü kaynak sonuç sayfası görürsünüz var <input type="hidden" /> olmanın yanı sıra üretilen her bir checkbox, hangi açıklar "doğru yanlış" değerleri ile görüştüğünüz için her form elemanı.

Sadece denedim çünkü kesinlikle ASP.NET MVC Beta üzerinde çalışan bu, deneyin.

Görünümünde bu Html yerine koy kullanarak.() Onay kutusu:

<% using (Html.BeginForm("ShowData", "Home")) {  %>
  <% foreach (var o in ViewData.Model) { %>
    <input type="checkbox" name="selectedObjects" value="<%=o.Id%>">
    <%= o.Name %>
  <%}%>
  <input type="submit" value="Submit" />
<%}%>

Senin kutularını selectedObjects adı verilen ve her checkbox value ilgili nesne gönderilir.

Aşağıdaki denetleyicisi eylem için benzer bir şey yararlı bir şey Yanıt yerine geliyor. (ya da daha sonra post(Yaz))

public ActionResult ShowData(Guid[] selectedObjects) {
    foreach (Guid guid in selectedObjects) {
        Response.Write(guid.ToString());
    }
    Response.End();
    return (new EmptyResult());
}

Bu örnek sadece yazmak GUID kutularını kontrol ettim; ASP.NET MVC haritalar GUID değerleri seçili kutularını içine Guid[] selectedObjects parametre için, ve hatta ayrıştırır dizeleri İsteği.Oldukça güzel olduğunu düşünüyorum instantied GUID nesneler, içine toplama formu.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • chrmoe

    chrmoe

    7 Kasım 2006
  • POGProductionz

    POGProductio

    27 NİSAN 2012
  • Visual Life

    Visual Life

    3 Temmuz 2006