ASP MVC3 Custom EditorTemplate для коллекций (пусто или нет)
-
10-10-2019 - |
Вопрос
После долгих гуглей, Stackoverflowing (?) И чтение блога я все еще не могу полностью решить проблему. Надеюсь, это сообщество экспертов может прийти на помощь!
Дано: класс компании с полевым ICOLECTION (компания может иметь много адресов). Каждый адрес имеет несколько простых строковых полей.
Укороченная версия:
Я хочу, чтобы пользователь мог добавить в компанию любое количество адресов. Сначала я хочу показать один набор текстовых поток адреса, а затем кнопку «Добавить еще один адрес». JavaScript не является проблемой, скорее часть MVC. Если неясно, функциональность должна быть похожи на это:http://www.mdelrosso.com/sheepit/index.php?lng=en_gb&sec=demo3
Мне нужно использовать функцию mvc editorformodel (), что означает, что вся конфигурация должна перейти в шаблонах редактора.
Статус до сих пор:
- Созданный ViewModel для страницы Edit Company (CompanyViewModel)
- Добавлено [uihint ("адреса")] в полевые публичные адреса Icollection {get; установлен; }
- Созданы адреса Editortemplate
В адресах Editortemplate, добавив новую компанию, модель прошел Null (нет сюрпризов). Как создать редактор для дополнительного адреса? Я попробовал несколько воплощений (с использованием бритвы):
@Html.EditorFor(m => new Address());
Но не в состоянии производить что -либо даже отдаленно работать. (Точная вышеприведенная строка приводит к ошибке «Шаблоны могут использоваться только с доступом к полю, доступу к свойствам, индексу одномерного массива или однопараметрическим индексером.»)
Спасибо за указания!
/Виктор
Решение
Это недостаток текущих API. Один из способов сделать это, чтобы сделать ребенок, который отвечает за создание формы вставки
В вашем контроллере:
[ChildActionOnly]
public ActionResult AddAddress() {
return View(new Address()); // pass an instance so view works
}
Добавить новый вид AddAddress.cshtml
@model Address
@Html.EditorForModel()
Затем в вашем шаблоне редактора использование
@Html.Action("AddAddress")