2010-04-28 5 views
3

Ok, donc je suis assez nouveau pour modèle de liaison dans MVC, vraiment, et ma question est la suivante:Modèle MVC2 Binding Enumerables?

Si j'ai un modèle avec une propriété IEnumerable, comment puis-je utiliser le HtmlHelper avec que je puisse présenter à une action qui prend ce type de modèle.

Modèle Exemple:

public class FooModel { 
    public IEnumerable<SubFoo> SubFoos { get; set; } 
} 
public class SubFoo { 
    public string Omg { get; set; } 
    public string Wee { get; set; } 
} 

Voir Snip:

<%foreach(var subFoo in Model.SubFoo) { %> 
    <label><%:subfoo.Omg %></label> 
    <%=Html.TextBox("OH_NO_I'M_LOST") %> 
<%} %> 

Répondre

2

Au lieu de IEnumerable<SubFoo> vous pouvez utiliser un tableau:

public class FooModel { 
    public SubFoo[] SubFoos { get; set; } 
} 

Et à votre avis:

<% for (var i = 0; i < Model.SubFoo.Length; i++) { %> 
    <label><%:subfoo.Omg %></label> 
    <%=Html.TextBoxFor(x => x.SubFoo[i].Omg) %> 
<%} %> 

Une autre possibilité est de garder le IEnumerable<SubFoo> mais dans ce cas vous ne pouvez pas utiliser l'assistant fortement typé:

<% for (var i = 0; i < Model.SubFoo.Count(); i++) { %> 
    <label><%:subfoo.Omg %></label> 
    <%=Html.TextBox("SubFoo[" + i + "].Omg") %> 
<%} %>