[英]ASP MVC 3 Partial view for properties with different property name but one type
我有模特
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属性不包含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>
我创建了局部视图,显示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和名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.