集合中的MVC5级联EditorFor
本文关键字:级联 EditorFor MVC5 集合 | 更新日期: 2023-09-27 18:22:10
给定一个返回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
中的所有标记移到主视图中,那么它就可以正常工作
是否不可能从编辑器模板中获得相同的行为?
您可以为模型的每个属性迭代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);
}