繁体   English   中英

具有不同属性名称但一种类型的属性的ASP MVC 3局部视图

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM