2010-06-03 3 views

Répondre

1

Définissez le nom de vos cases à cocher à quelque chose comme "MyObject [" + index + "] .Checked", et pour chaque case à cocher mettre également un champ d'entrée caché quelque chose comme "MyObject [" + index + "]. "avec la valeur définie sur t.Name. Si vous nommez vos champs de cette manière, le classeur de modèle par défaut peut prendre vos valeurs de formulaire et les mapper à une liste d'objets avec une propriété Name et une propriété Checked.

Je voudrais essayer quelque chose comme ce qui suit:

<% foreach(var t in Model) 
{ %> 
    <div> 
     <%= Html.Hidden("MyObject[" + index + "].Name", t.Name, new { id = "MyObject_" + index + "_Name" }) %> 
     <%= Html.Checkbox("MyObject[" + index + "].Checked", false, new { id = "MyObject_" + index + "_Checked" }) %> 
    </div><% 
} %> 

J'utilise le type anonyme propriété id de sorte que les composants du framework MVC ne génèrent pas des éléments HTML avec des valeurs id invalides, mais il est pas vraiment nécessaire.

Votre action initiée par le poste ressemblerait à quelque chose comme ceci:

[HttpPost] 
ActionResult MyAction(IList<MyObject> objects) 
{ 
    foreach (MyObject obj in objects) 
    { 
     if (obj.Checked) 
     { 
      // ... 
     } 
     else 
     { 
      // ... 
     } 
    } 

    return View(); 
} 
Questions connexes