Ситуация выглядит следующим образом:
- У меня есть ViewModel со свойством
List<Product>
, где Product
- это класс с, скажем, свойствами Property1
, Property2
и Property3
. - Я должен отобразить ViewModel, и я хочу отобразить
List<Product>
в таблице HTML, в каждой строке которой есть кнопка " Удалить " для этой строки. Под вышеупомянутой таблицей HTML должны быть 2 кнопки:
3,1 " Добавить " - используется для добавления нового пустого Product
всписок
3.2 " Использовать список продуктов по умолчанию " - список должен быть загружен с помощью вызова AJAX для действия GetDefaultProduct()
контроллера
- Нажатие на кнопку « Удалить », « Добавить » или « Использовать список продуктов по умолчанию » не должно публиковать всю страницу
- Модельсодержит и другие списки предметов - для примера:
List<Sales>
, List<Orders>
и так далее.Я надеюсь, что смогу повторно использовать решение для Списка и для этих списков.
Есть ли способ сделать это с ASP.NET MVC?Если да, каков наилучший способ сделать это с ASP.NET MVC?
Я сделал это с помощью шаблонов jQuery и мне удалось реализовать это с помощью простых операций, но я должен сделать это в решении ASP MVCи я все еще пытаюсь освоить технологию.Я читал о шаблоне Editor
, действии RenderAction
, Async
и частичных представлениях, и я пытаюсь составить решение с ними, и я опубликую его, если оно будет работать.
Заранее благодарим за любые предложения и комментарии!
ОБНОВЛЕНИЕ
Решение находится (как отметил Дарин) в сообщении Стив Сандерсона в блоге Тем не менее, он предполагает, что читатель знает о скрытом способе отображения списка объектов в CRUD-дружественном, индексированном виде.
Итак, чтобы помочь любому, кто хочетесть индексированный список сложных объектов, я предлагаю прочитать г-н.Сообщение в блоге Haacked: http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx.
После того, как вы покончите с этим, вы можете перейти к блогу Сандерсона.Кстати, обратите внимание на пользовательский HTML-помощник BeginCollectionItem
- его реализация не так проста, как можно подумать.Демонстрационный проект - это зрелище для воспаленных глаз - он прост и понятен.Предлагаемое решение использует некоторые вызовы jQuery.ajax()
(для ссылки Add ), но просто из-за крайней необходимости.
PS: Это немного расстраивает, что приходится читать явную статьюот одного из разработчиков ASP.NET, чтобы выяснить, что в связывателе модели по умолчанию есть неявный CoC (Convention-over-Configuration) - он просто знает, как работать со списками, но не из коробкиПомощник HTML (или что-то подобное) не позволяет вам в этом.
Лично я считаю, что CRUD-дружественный рендеринг List<object>
является очень распространенным сценарием, а не крайним случаем, поэтому он должен быть прощеиспользование и часть готового оборудования ASP.NET MVC.