ASP.NET MVC interface utilisateur modèle: Comment mélanger une propriété modèle IList avec EditorFor (m => m.subModel)?
-
20-09-2019 - |
Question
Disons que vous avez ceci:
public class ShoppingCart {
public IList<CartItem> cartItems {get; set; }
}
Et vous faites cela pour rendre la classe:
<%= EditorFor( m => m.ShoppingCart, "ShoppingCart") %>
Comment feriez-vous le EditorFor (??, "CartItem") dans le ShoppingCart.ascx? Je pense qu'il ressemblerait à quelque chose comme ceci:
<% foreach( CartItem myCartItem in m.cartItems) {
%><%= EditorFor( ??, "CartItem")
%><% } %>
L'idée ici est bien sûr d'utiliser un modèle d'interface utilisateur pour une classe entière, pas seulement une propriété.
La solution
<% for (int count = 0; count < Model.cartItems.Count; count++ )
{ %><%=
Html.EditorFor(m => m.cartItems[count]) %><%
}
%>
crée des noms de forme comme:
name="cartItems[0].Name"
name="cartItems[1].Name"
name="cartItems[2].Name"
qui se lient de nouveau au modèle de vue de la liste originale
Autres conseils
Si le modèle de votre ShoppingCart.ascx est la classe ShoppingCart, alors vous devriez être en mesure de faire
<% foreach (CartItem myCartItem in m.cartItems) { %>
<%= EditorFor(m => myCartItem, "CartItem") %>
<% } %>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow