ASP.NET MVC plantillas de interfaz de usuario: Cómo mezclar una propiedad IList Modelo con EditorFor (m => m.subModel)?
-
20-09-2019 - |
Pregunta
Supongamos que tiene esto:
public class ShoppingCart {
public IList<CartItem> cartItems {get; set; }
}
Y lo hace para hacer la clase:
<%= EditorFor( m => m.ShoppingCart, "ShoppingCart") %>
¿Cómo hacer la EditorFor (??, "CartItem") en el ShoppingCart.ascx? Me gustaría pensar que sería algo como esto:
<% foreach( CartItem myCartItem in m.cartItems) {
%><%= EditorFor( ??, "CartItem")
%><% } %>
La idea aquí, por supuesto, es el uso de una plantilla de interfaz de usuario para una clase entera, no sólo una propiedad.
Solución
<% for (int count = 0; count < Model.cartItems.Count; count++ )
{ %><%=
Html.EditorFor(m => m.cartItems[count]) %><%
}
%>
Crea nombres de formulario como:
name="cartItems[0].Name"
name="cartItems[1].Name"
name="cartItems[2].Name"
que se unen de nuevo a la vista del modelo lista original
Otros consejos
Si el modelo de su ShoppingCart.ascx es la clase ShoppingCart, entonces debería ser capaz de hacer
<% foreach (CartItem myCartItem in m.cartItems) { %>
<%= EditorFor(m => myCartItem, "CartItem") %>
<% } %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow