问题
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.
回答1:
<% 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
回答2:
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") %>
<% } %>
来源:https://stackoverflow.com/questions/2069658/asp-net-mvc-ui-template-how-to-mix-an-ilist-model-property-with-editorfor-m