2011-12-12 60 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

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

相关问题