Шаблон пользовательского интерфейса ASP.NET MVC:Как совместить свойство модели IList с EditorFor(m => m.subModel)?
-
20-09-2019 - |
Вопрос
Скажем, у вас есть это:
public class ShoppingCart {
public IList<CartItem> cartItems {get; set; }
}
И вы делаете это для рендеринга класса:
<%= EditorFor( m => m.ShoppingCart, "ShoppingCart") %>
Как бы вы сделали EditorFor( ??, "CartItem") в ShoppingCart.ascx?Я думаю, это будет выглядеть примерно так:
<% foreach( CartItem myCartItem in m.cartItems) {
%><%= EditorFor( ??, "CartItem")
%><% } %>
Идея здесь, конечно, состоит в том, чтобы использовать шаблон пользовательского интерфейса для всего класса, а не только для свойства.
Решение
<% for (int count = 0; count < Model.cartItems.Count; count++ )
{ %><%=
Html.EditorFor(m => m.cartItems[count]) %><%
}
%>
Создает имена форм, например:
name="cartItems[0].Name"
name="cartItems[1].Name"
name="cartItems[2].Name"
Что привязывается к исходной модели представления списка
Другие советы
Если модель вашего ShoppingCart.ascx является классом ShoppingCart, вы сможете сделать
<% foreach (CartItem myCartItem in m.cartItems) { %>
<%= EditorFor(m => myCartItem, "CartItem") %>
<% } %>
Не связан с StackOverflow