Le ModelBinding se fait en utilisant le nom. Pour toute collection que vous voulez être lier, il doit avoir ce format:
project.property1
project.property2
et pour la Collection Garçons
project.Boys[0].property1
project.Boys[0].property2
project.Boys[1].property1
project.Boys[1].property2
Si vous utilisez un formulaire, vous pouvez simplement définir correctement les noms des entrées et en utilisant jquery:
//inside the ajax definition
data: $('#formID').serialize(),
EDIT: si les garçons ne possèdent pas de propriétés alors le nom doit être:
project.Boys[0]
project.Boys[1]
project.Boys[2]
Avez-vous essayé la liaison avec un second paramètre comme celui-ci?
public ActionResult Create(ProjectModel project, string[] Boys)
Je n'ai pas utilisé ArratList
parce que je l'ai fait quelques tests et il le fait, je préfère ne semble pas lier tout d'utiliser une déclaration de tableau normale.
Une autre chose que vous pouvez essayer d'inspecter le FormCollection
public ActionResult Create(FormCollection f)
mettre un point d'arrêt juste au début et à inspecter les valeurs, si les noms à l'intérieur ne suivent pas le format project.Boys il ne sera jamais se lier.
EDIT2: Si vous souhaitez associer à plusieurs tableaux, puis ajoutez simplement une définition de collection au modèle:
public class ProjectModel
{
public IEnumerable<string[]> Boys { get; set; }
}
et les noms devraient être: pour le premier tableau:
project.Boys[0]
project.Boys[0]
pour la seconde:
project.Boys[1]
project.Boys[1]
. . .
Mais pour archiver cela, la définition de Boys en Javascript devrait être aussi une collection de colecction et je ne sais pas comment la définir en js.
PD: si vous poussez la valeur manuellement aux tableaux et que les valeurs provient des entrées comme vous l'avez ici Boys.Push($('#tex1').val())
alors vous devriez être en mesure de sérialiser ces entrées et vous faire économiser beaucoup d'ennuis = D. -à-dire: pour simuler votre situation, il serai quelque chose comme ...
<% using (Html.BeginForm())
{ %>
<% var i1 = 5; %>
<% var i2 = 5; %>
<% for(var i=0; i < i1; i++)
{ %>
<% for (var ix = 0; ix < i2; ix++)
{%>
<input name="boys[<%=i %>]" value="VALUE_HERE"/>
<%} %>
<%} %>
<input type="submit" value="sumit" />
<%} %>
et faire data: $('#formID').serialize()
donnent le même résultat que de créer un project
l'objet de faire et puis JSON.stringify(project)
.
'ArrayList' n'est pas générique. Quel type d'objets avez-vous l'intention de stocker à l'intérieur? Un 'Liste' ou 'Boy [] 'générique serait plus approprié ici où vous devez définir chaque propriété du type' Boy'. –
Pouvez-vous expliquer s'il vous plaît en utilisant un exemple? Je remplis le tableau dans la vue et je veux avoir une liaison de modèle arary. En fait, je peux voir que les valeurs envoyées à partir des vues ne sont pas liées au modèle et les tableaux ont toujours les valeurs déjà instanciées. Comment puis-je résoudre ce problème? – learning