два вложенных модельных свойства одного и того же сложного типа - PullRequest
1 голос
/ 20 декабря 2010

У меня есть модель Customer с двумя сложными свойствами "InternalAddress" и "PublicAddress", которые имеют один и тот же тип модели Address.

В представлении я делаю следующее

<h2>Internal Address</h2>
<% RenderPartial("Address", Model.InternalAddress);%>
<h2>Public Address</h2>
<% RenderPartial("Address", Model.PublicAddress);%>

Он отображается без исключений, но в отображаемом html-файле используются одни и те же входные имена для обоих PartialViews ...

Есть ли умный способ справиться с этой ситуацией?

1 Ответ

3 голосов
/ 21 декабря 2010

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

Один из способов правильного отображения формы - использование шаблонов MVC2 EditorFor и DisplayFor.Переместите частичное представление для формы в /Views/Shared/EditorTemplates/Address.ascx (и часть, предназначенную только для отображения, если она есть, в /Views/Shared/DisplayTemplates/Address.ascx).

Как только это будетготово, вы можете использовать его одним из двух способов.

Вариант 1:

Вы можете редактировать вашу ViewModel следующим образом:

[UIHint("Address")]
public Address InternalAddress { get; set; }

[UIHint("Address")]
public Address PublicAddress{ get; set; }

UIHint указывает шаблонизатору использовать представление «Address» в папке Shared / EditorTemplates.

Затем вы можете использовать шаблон EditorFor в своем представлении без изменений:

<%: Html.EditorFor(model => model.InternalAddress) %>

Вариант 2:

Просто укажите имя шаблона в EditorFor в представлении:

<%: Html.EditorFor(model => model.InternalAddress, "Address") %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...