Можете ли вы использовать вложенные модели представления в ASP.net MVC3? - PullRequest
4 голосов
/ 07 декабря 2011

Вот упрощенная версия того, что я делаю.

Я создал модель представления, которая содержит данные для компании. Компания имеет 3 адреса. Поэтому, пытаясь быть умным, я создал AddressViewModel и частичный _адрес.

Проблема, с которой я столкнулся, заключается в том, что, хотя я могу передать AddressViewModel частичному и он отображает адрес, у меня теперь есть дублирующиеся идентификаторы в HTML ... так что теперь в форме есть три поля ввода "Line1", которые, конечно не отправлять обратно должным образом.

Как я могу решить эту проблему. Это единственный способ действительно выровнять ViewModel и иметь,

MainAddressLine1 MailAddressLine1 BillAddressLine1

в компании вид модели? И, если я сделаю это, могу ли я по-прежнему использовать парциальную часть _address?

1 Ответ

7 голосов
/ 07 декабря 2011

Используйте шаблон редактора вместо частичного:

@model MainViewModel
@using (Html.BeginForm())
{
    @Html.EditorFor(x => x.MainAddress)
    @Html.EditorFor(x => x.MailAddress)
    @Html.EditorFor(x => x.BillAddress)

    <button type="submit">OK</button>
}

и затем внутри ~/Views/Shared/EditorTemplates/AddressViewModel.cshtml:

@model AddressViewModel
@Html.EditorFor(x => x.Street)
@Html.EditorFor(x => x.ZipCode)
...

Теперь вам не нужно беспокоиться об именах и идентификаторахиз полей ввода.Они будут правильно обработаны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...