2010-02-23 8 views
9

Je veux lier une collection à l'aide d'un préfixe, comme siModèle ASP.NET MVC Binding une collection avec un préfixe

public ActionResult Whatever([Bind(Prefix = "Prefix")] CustomModel[] models) 

J'ai créé des éléments de formulaire en utilisant

<%= Html.TextBox("Prefix.models[" + i + "].Property") %> 

qui ont généré des entrées html comme ce

<input id="Prefix_models[0]_Property" name="Prefix.models[0].Property" /> 

Mon problème est que le classeur modèle par défaut ne liera pas avec un préfixe. Je reçois null pour les modèles arg dans la méthode d'action.

Si je supprime les préfixes du code HTML et supprime l'attribut Bind, tout fonctionne correctement. Je ne peux pas imaginer que le classeur de modèle par défaut ne gérera pas un préfixe sur une collection, donc je dois faire quelque chose de mal.

Aidez-nous s'il vous plaît. À votre santé! UpdateModel() et TryUpdateModel() prennent un paramètre pour le préfixe

Répondre

10

Le préfixe à l'intérieur de [Bind] n'est pas ajouté au nom du paramètre, il remplace entièrement le nom du paramètre. Donc, si votre méthode d'action a cette signature:

public ActionResult MyAction([Bind(Prefix = "foo")] string[] bar) { ... } 

Le liant attend foo[0], foo[1], etc.

+0

DOH! Rude journée. Merci d'avoir redressé la tête! – spot

1

Avez-vous essayé cela?

Questions connexes