2011-12-12 29 views
1

我有模型ASP 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晚上看起來不錯。 但是,來自我的LocationModel類的HTML中的所有字段ID都具有相同的名稱,並且在回發的LocationModel屬性中包含非初始值。它呈現每個這個沒有局部視圖的屬性都可以正常工作。爲什麼?謝謝。

<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

我創建的局部視圖顯示什麼從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> 

現在所有的投入將有正確的ID和名稱。

+0

我做到了。感謝真的很酷的想法。 –

相關問題