我想使用mvc框架的编辑器模板,而不是使用CheckBoxList帮助器控件:
在Shared \ EditorTemplate中我有TemplateViewModel.cshtml
@model ITMS.ViewModels.TemplateViewModel
<p class="checkbox">
@Html.CheckBoxFor(x => x.IsChecked)
@Html.HiddenFor(x => x.Id)
@Html.LabelFor(x => x.Name)
</p>
由于模板必须与视图模型具有相同的名称...我们在这里:
public class TemplateViewModel
{
public bool IsChecked { get; set; }
public int Id { get; set; }
public string Name { get; set; }
}
在Home \ Delete.cshtml中我有:
@model IEnumerable<ITMS.ViewModels.TemplateViewModel>
@foreach (var item in Model)
{
@Html.EditorFor(m => item)
}
Delete.cshtml中的输出完全混乱。
我只是希望我的检查状态和名称可见,并且ID隐藏在某处。
如何更正TemplateViewModel.cshtml / Delete.cshtml?
答案 0 :(得分:0)
在你的Delete.cshtml
摆脱foreach循环,简单地说:
@model IEnumerable<ITMS.ViewModels.TemplateViewModel>
@Html.EditorForModel()
将自动为模型的每个元素(在本例中为集合)呈现编辑器模板,并且您不需要编写任何循环。
还要确保您的编辑器模板位于~/Views/Shared/EditorTemplates/TemplateViewModel.cshtml
。在您的问题中,您写了Shared\EditorTemplate
这是一个错误的位置(最后忘记了s
)。模板按照您必须遵循的约定运作。