Связывание вложенной модели с MVC3 на HttpPost - PullRequest
4 голосов
/ 25 сентября 2011

Я новичок в MVC3.

У меня есть кнопка отправки в форме, и я хочу связать модель, которая имеет 2-3 вложенных объектных модели со многими свойствами внутри.

Есть ли способ связать эти вложенные объекты без использования EditorFor; так что, когда я отправляю форму, я возьму ActionResult (объектную модель) для модели, которая возвращается, вложенные объектные модели со своими значениями без необходимости реализации скрытых значений или форм позади в HTML?

Ответы [ 2 ]

2 голосов
/ 25 сентября 2011

DefaultModelBinder работает по соглашению, поэтому для его работы поля формы должны соответствовать соглашению об именах MVC.

Если вы не хотите использовать EditorForModel для создания формы, вам придется реализовать собственное соглашение об именах для каждого поля и установить ViewData.TemplateInfo.HtmlFieldPrefix для каждого элемента. Затем вам нужно будет создать собственный ModelBinder, чтобы взять возвращенную форму и привязать к своим моделям в соответствии с соглашением об именах.

Имейте в виду, что это создает некоторые другие проблемы в MVC3, наиболее важная из которых заключается в том, что визуализация ненавязчивой проверки для DropDownLists и некоторых других элементов может завершиться неудачей.

В общем случае лучше всего использовать EditorForModel по вашему мнению и работать с использованием существующих соглашений MVC. Вы можете создать представление, специфичное для каждой вложенной модели. Брэд Уилсон дает хороший обзор процесса в этой статье .

0 голосов
/ 25 сентября 2011

в основном вам нужно достаточно значений, чтобы снова идентифицировать вашу модель.Таким образом, вы можете использовать идентификатор в скрытом поле и все свойства, которые вы хотите изменить.Чтобы воссоздать вашу модель, просто передайте Id и измененные значения через базовые параметры в действие контроллера или напишите model-binder - ИМХО, это лучший способ справиться с этими ситуациями.

...