J'ai un formulaire qui contient tout un tas de champs de saisie de données qui seront complétés par l'utilisateur, y compris certains éléments où l'utilisateur peut dicter combien des mêmes éléments ils vont entrer. C'est comme cela est utilisé dans l'entrée de blog de Phil Haack Model Binding To A List. J'utilise avec succès JQuery pour créer les éléments de formulaire supplémentaires, correctement indexés, etc. Mon problème est la meilleure façon de les lire dans mon contrôleur. Le contrôleur dans l'article attend seulement un objet, IList<Product>
alors que mon contrôleur attend déjà un FormCollection form
et maintenant j'essaye aussi de lui envoyer un IList<Itmes>
. Dois-je ajouter ceci aux paramètres attendus par le contrôleur ou accéder via le formulaire ["items"] ou quelque chose d'autre?Passer un contrôleur une FormCollection et une IList <T>
Voir
<form action="/MyItems/Add" method="post">
<input type="text" name="Title" value="" />
<input type="hidden" name="myItem.Index" value="0" />
<input id="item[0].Amount" name="item[0].Amount" type="text" value="" />
<input id="item[0].Name" name="item[0].Name" type="text" value="" />
<input type="hidden" name="myItem.Index" value="1" />
<input id="item[1].Amount" name="item[1].Amount" type="text" value="" />
<input id="item[1].Name" name="item[1].Name" type="text" value="" />
</form>
Contrôleur
public ActionResult Add(FormCollection form)
{
string Title = form["Title"];
List<Item> Items = form["items"].ToList();
}
DTO
public class Item()
{
int Amount {get; set; };
string Name {get; set; };
}
Scott Hanselman a un [article de blog] (http://stackoverflow.com/questions/449138/passing-controller-a-formcollection-and-an-ilistt/450176#450176) lié à cela. Le blog de [http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx] de Phil Haack est très utile pour poster des listes aussi (comme mentionné dans la question initiale. –