Итак, я смотрю на переход с MVC 1.0 на MVC 2.0 RTM . Одно из соглашений, которое я хотел бы начать, заключается в использовании строго типизированных помощников HTML для создания элементов управления, таких как текстовые поля.
Однако, похоже, это не будет легким прыжком. Я попытался перенести мою первую форму, заменив строки следующим образом:
<%= Html.TextBox("FirstName", Model.Data.FirstName, new {maxlength = 30}) %>
... для таких строк:
<%= Html.TextBoxFor(x => x.Data.FirstName, new {maxlength = 30}) %>
Ранее это отображалось в соответствующую модель представления на POST, используя следующую сигнатуру метода:
[HttpPost]
public ActionResult Registration(AccountViewInfo viewInfo)
Вместо этого он в настоящее время возвращает пустой объект. Я полагаю, что разъединение заключается в том, что мы передаем модель представления в более крупный агрегатный объект, в котором есть некоторые метаданные страницы и другие забавные вещи (следовательно, x.Data.FirstName
вместо x.FirstName)
.
Итак, мой вопрос: как лучше всего использовать помощников со строгой типизацией, при этом позволяя инфраструктуре MVC надлежащим образом приводить коллекцию форм к моей модели представления, как это происходит в исходной строке? Есть ли способ сделать это без изменения типа агрегата, который мы передаем представлению?
Спасибо!
ОБНОВЛЕНИЕ: Таким образом, атрибут связывания работал хорошо, но мне не понравилось, как мне пришлось применять его по существу к каждой опубликованной модели представления. Я закончил тем, что изменил иерархию наследования так, что все наши модели представлений наследуются от базового класса, который содержит содержимое страницы и другие метаданные, в отличие от агрегированного свойства с именем Data
.