ASP.NET MVC UI Template: How to mix an IList Model property with EditorFor( m => m.subModel)?
-
20-09-2019 - |
Question
Say you have this:
public class ShoppingCart {
public IList<CartItem> cartItems {get; set; }
}
And you do this to render the class:
<%= EditorFor( m => m.ShoppingCart, "ShoppingCart") %>
How would you do the EditorFor( ??, "CartItem") in the ShoppingCart.ascx? I would think it would look something like this:
<% foreach( CartItem myCartItem in m.cartItems) {
%><%= EditorFor( ??, "CartItem")
%><% } %>
The idea here of course is to use a UI template for an entire class, not just a property.
Solution
<% for (int count = 0; count < Model.cartItems.Count; count++ )
{ %><%=
Html.EditorFor(m => m.cartItems[count]) %><%
}
%>
Creates form names like:
name="cartItems[0].Name"
name="cartItems[1].Name"
name="cartItems[2].Name"
Which bind back to the original List view model
OTHER TIPS
If the model of your ShoppingCart.ascx is the ShoppingCart class, then you should be able to do
<% foreach (CartItem myCartItem in m.cartItems) { %>
<%= EditorFor(m => myCartItem, "CartItem") %>
<% } %>
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow