给定一个返回IList<Scope>
的控制器方法
其中Scope
包含一组bool
值以及一些其他子对象。
public class Scope
{
public string Name { get; set; }
public bool A { get; set; }
public bool B { get; set; }
public bool C { get; set; }
public Investment Item { get; set; }
}
我有一个带有以下标记的主视图:
@model IList<Scope>
<div>
@Html.EditorForModel("Panel")
</div>
我在EditorTemplates中有一个名为Panel.cshtml
的视图,结构如下:
@model IList<Scope>
@for (int i = 0; i < Model.Count; i++)
{
<div class="panel panel-info">
<div class="panel-heading">
<p>@Model[i].Name</p>
</div>
<div class="panel-body">
@Html.EditorFor(_ => _[i])
</div>
</div>
}
EditorFor(_ => _[i])
是否根据类型为每个字段呈现标准对象模板和编辑器?
为什么EditorFor
在从另一个编辑器中调用时,不会为每个属性呈现编辑器?
如果我将所有标记从Panel.cshtml
移动到主视图中,它可以正常工作
是否无法从编辑器模板中获得相同的行为?
答案 0 :(得分:0)
您可以为模型的每个属性迭代EditorFor
:
@model IList<Scope>
@for (int i = 0; i < Model.Count; i++)
{
<div class="panel panel-info">
<div class="panel-heading">
<p>@Model[i].Name</p>
</div>
<div class="panel-body">
@Html.EditorFor(_ => Model[i].A)
</div>
<div class="panel-body">
@Html.EditorFor(_ => Model[i].B)
</div>
.
.
.
</div>
}
或者如果你不想为模型的每个属性迭代EditorFor
,请尝试:
@foreach (var scope in Model)
{
@Html.EditorFor(model => scope);
}