Шаблон пользовательского интерфейса ASP.NET MVC:Как совместить свойство модели IList с EditorFor(m => m.subModel)?

StackOverflow https://stackoverflow.com/questions/2069658

Вопрос

Скажем, у вас есть это:

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") %>
<% } %>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top