Вопрос

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