/ / ASP MVC 3 Частковий вигляд для властивостей з різною назвою властивостей, але одного типу - asp.net-mvc-3, частковий вигляд

ASP MVC 3 Частковий вигляд для властивостей з різним ім'ям властивостей, але один тип - asp.net-mvc-3, часткові перегляди

У мене є модель

public class UserModel : IUserModel
{
public LocationModel WorkLocation { get; set; }
public LocationModel HomeLocation { get; set; }
public LocationModel ShippingLocation { get; set; }
}

Я створив часткове представлення того, що показують поля з класу LocationModel.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<LocationModel>" %>
<fieldset>
<div class="common-fieldset">
<div>
<span class="editor-label">
<%: Html.LabelFor(model => model.Location.Bldg)%>
</span><span class="editor-field">
<%: Html.EditorFor(model => model.Location.Bldg)%>
</span><span class="editor-label">
<%: Html.LabelFor(model => model.Location.Lobby)%>
</span><span class="editor-field">
<%: Html.EditorFor(model => model.Location.Lobby)%>
</span><span class="editor-label">
<%: Html.LabelFor(model => model.Location.Suite)%>
</span><span class="editor-field">
<%: Html.EditorFor(model => model.Location.Suite)%>
</span>
</div>
</div>
</fieldset>

Коли контролер відображає мій UserModel, виглядає вечірдобре Але всі ідентифікатори полів у HTML з моїх класів LocationModel мають однакові назви, а при поверненні властивостей LocationModel містять значення не init. Це робить кожну з цих властивостей без часткового огляду всі нормально працюючими. Чому? Дякую.

 <div>
Home Address:
<%: Html.Partial("Controls/Location", Model.HomeLocation) %>
</div>

<div>
Work Address:
<%: Html.Partial("Controls/Location", Model.WorkLocation) %>
</div>

<div> Shipping Address:
<%: Html.Partial("Controls/Location",Model.ShippingLocation) %>
</div>

Відповіді:

1 для відповіді № 1

Я створив часткове представлення того, що показують поля з класу LocationModel.

Замість часткового використання я рекомендую використовувати шаблон редактора. Тож перемістіть це LocationModel.ascx всередині ~/Views/Shared/EditorTemplates/LocationModel.ascx а потім просто:

<div>
Home Address:
<%= Html.EditorFor(x => x.HomeLocation) %>
</div>

<div>
Work Address:
<%= Html.EditorFor(x => x.WorkLocation) %>
</div>

<div>
Shipping Address:
<%= Html.EditorFor(x => x.ShippingLocation) %>
</div>

Тепер усі ваші введені дані матимуть правильні ідентифікатори та імена.