Извините за длину, но картинка стоит 1000 слов:Asp.Net MVC 2: Как точно модель представления привязывается к модели после публикации?
В ASP.NET MVC 2, поле формы ввода «имя» атрибут должен содержать именно синтаксис ниже, вы бы использовать для ссылки на объект в C# чтобы связать его с объектом после отправки. Тем не менее, если у вас есть объект, подобный следующему, где он содержит множество заказов, имеющих несколько OrderLines, имена будут выглядеть и работать так, как это (чувствительно к регистру):
Это работает:
Order[0].id
Order[0].orderDate
Order[0].Customer.name
Order[0].Customer.Address
Order[0].OrderLine[0].itemID // first order line
Order[0].OrderLine[0].description
Order[0].OrderLine[0].qty
Order[0].OrderLine[0].price
Order[0].OrderLine[1].itemID // second order line, same names
Order[0].OrderLine[1].description
Order[0].OrderLine[1].qty
Order[0].OrderLine[1].price
Однако мы хотим добавить строки заказа и удалить строки заказа в клиентском браузере. Видимо, индексы должны начинаться с нуля и содержат каждый порядковый номер индекса до N.
Черный пояс ниндзя запись в блоге Phil Хаек в here объясняет, как удалить [0], индекс, имеют одинаковые имена, и пусть MVC автоматически перечислить дубликаты имен с помощью нотации [0]. Тем не менее, мне не удалось получить это связать обратно с помощью вложенного объекта:
Это терпит неудачу:
Order.id // Duplicate names should enumerate at 0 .. N
Order.orderDate
Order.Customer.name
Order.Customer.Address
Order.OrderLine.itemID // And likewise for nested properties?
Order.OrderLine.description
Order.OrderLine.qty
Order.OrderLine.price
Order.OrderLine.itemID
Order.OrderLine.description
Order.OrderLine.qty
Order.OrderLine.price
Я не нашел никаких советов-то там еще, что описывает, как это работает для связывания назад вложенные ViewModels в сообщении. Любые ссылки на существующие примеры кода или строгие примеры на точные имена, необходимые для вложенного связывания с ILists?
У Стива Сандерсона есть код, который делает такую вещь here, но мы не можем заставить это привязать обратно к вложенным объектам. Все, что не имеет [0] .. [n] И, будучи последовательным в нумерации, просто падает с возвращаемого объекта.
Любые идеи?
Просто комментарий, в нашем тестовом коде, заказ имеет несколько заказов (заказ [0], заказ [1]). Я сократил список, чтобы служить примером. –