【问题标题】:ASP MVC 3 Partial view for properties with different property name but one type具有不同属性名称但一种类型的属性的 ASP MVC 3 部分视图
【发布时间】:2011-12-12 12:22:05
【问题描述】:

我有模特

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>

【问题讨论】:

    标签: asp.net-mvc-3 partial-views


    【解决方案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 和名称。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 2014-06-27
      • 1970-01-01
      • 1970-01-01
      • 2012-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多