C# DisplayForTemplate MVC中的编辑器ForTemplate
我试图使用Html显示模板来循环模型数据。在我的显示模板中,我想使用一个EditorFor模板来显示一组不同的数据,在这样做的过程中,我遇到了我的子模型为空的问题。在四处玩耍并得到大卫的指导后,我能够使这一切顺利进行。下面,请找到我更新的工作解决方案 更新(正确的解决方案)C# DisplayForTemplate MVC中的编辑器ForTemplate,c#,asp.net-mvc,C#,Asp.net Mvc,我试图使用Html显示模板来循环模型数据。在我的显示模板中,我想使用一个EditorFor模板来显示一组不同的数据,在这样做的过程中,我遇到了我的子模型为空的问题。在四处玩耍并得到大卫的指导后,我能够使这一切顺利进行。下面,请找到我更新的工作解决方案 更新(正确的解决方案) 公共类TargetingAreaViewModel { 公共int DealerId{get;set;} 公共int-OrderId{get;set;} 公共列表TargetingAreaOrderItems{get;set
公共类TargetingAreaViewModel
{
公共int DealerId{get;set;}
公共int-OrderId{get;set;}
公共列表TargetingAreaOrderItems{get;set;}
public TargetingAreaViewModel()
{
this.TargetingAreaOrderItems=新列表();
}
}
公共类TargetingAreaOrderItemViewModel
{
公共整型OrderItemId{get;set;}
公共int-PackageMediaTypeId{get;set;}
公共字符串PackageMediaTypeHeader{get;set;}
公共字符串MediaTypeDesc{get;set;}
公共字符串targetingaditornInfo{get;set;}
公共列表TargetingAreaItems{get;set;}
public TargetingAreaOrderItemViewModel()
{
this.TargetingAreaItems=新列表();
}
}
公共类TargetingAreaItemViewModel
{
公共整型OrderItemId{get;set;}
公共int-PackageMediaTargetingFieldId{get;set;}
公共字符串TargetingAreaFieldTitle{get;set;}
公共字符串TargetingValue{get;set;}
公共布尔值已启用{get;set;}
需要公共布尔值{get;set;}
公共字符串注释{get;set;}
}
父视图
@model Models.TargetingAreaViewModel
@{
ApplicationContext.Current.PageTitle = "Targeting Info";
Layout = "~/Views/Shared/MainLayout.cshtml";
}
@using (Html.BeginForm("OrderItemTargetingInfo", "Home", FormMethod.Post, new { @class = "form-horizontal" }))
{
@Html.DisplayFor(m => m.TargetingAreaOrderItems)
<div class="col-sm-12">
<div class="pull-right">
<input id="Submit" type="submit" value="Submit" class="btn btn-primary" />
</div>
</div>
}
@model Models.TargetingAreaViewModel
@{
ApplicationContext.Current.PageTitle=“目标信息”;
Layout=“~/Views/Shared/MainLayout.cshtml”;
}
@使用(Html.BeginForm(“OrderItemTargetingInfo”,“Home”,FormMethod.Post,new{@class=“form horizontal”}))
{
@DisplayFor(m=>m.TargetingAreaOrderItems)
}
显示模板视图
@model Models.TargetingAreaOrderItemViewModel
<div class="row">
<div class="col-sm-12">
<div class="col-sm-12 btn-primary" style="margin-bottom: 10px; margin-top: 10px;">
@Html.Label(Model.MediaTypeDesc, new { @style = "font-weight: bold; padding-top: 10px; font-size: 18px;" })
@Html.HiddenFor(m => m.OrderItemId)
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
@Html.Raw(Model.PackageMediaTypeHeader)
</div>
</div>
<br />
<div class="row">
<div class="col-sm-12">
@Html.EditorFor(m => m.TargetingAreaItems)
</div>
</div>
<br />
<div class="row">
<div class="col-md-12">
<div class="form-group">
@Html.Label("Additional Info:", new { @class = "control-label col-md-2" })
<div class="col-md-6">
@Html.TextAreaFor(m => m.TargetingAdditonalInfo, new { @class = "form-control" })
</div>
</div>
</div>
</div>
@model Models.TargetingAreaOrderItemViewModel
@Label(Model.MediaTypeDesc,新{@style=“font-weight:bold;padding-top:10px;font-size:18px;”)
@Html.HiddenFor(m=>m.OrderItemId)
@Html.Raw(Model.PackageMediaTypeHeader)
@EditorFor(m=>m.TargetingAreaItems)
@Label(“附加信息:”,new{@class=“control Label col-md-2”})
@TextAreaFor(m=>m.targetingaditorninfo,新的{@class=“formcontrol”})
现在,我可以显示数据,在Post上从我的模型中获取数据。很好 在父视图中,您只传递模型的
TargetingAreaOrderItems
,但子视图需要TargetingAreaViewModel
。相反,您应该传入整个模型:
@Html.DisplayFor(m => m)
你能给我们看更多你的代码吗?这里没有足够的代码来诊断问题。如果您需要更多信息,请告诉我。当我这样做时,我会在这里出错@Label(Model.MediaTypeDesc,new{@style=“font-weight:bold;padding-top:10px;font-size:18px;”})解决了这个问题。非常感谢大卫为我指引了正确的方向。我的模型搞砸了,所以在重新组织它之后,我能够实现我想要的。我将更新上面的解决方案。我会将你的帖子标记为答案,因为它帮助我做出了正确的举动。
@Html.DisplayFor(m => m)