0

我想使用 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 ?

4

1 回答 1

0

在您Delete.cshtml摆脱 foreach 循环时,只需:

@model IEnumerable<ITMS.ViewModels.TemplateViewModel>
@Html.EditorForModel()

编辑器模板将自动为模型的每个元素(在本例中是一个集合)呈现,您不需要编写任何循环。

还要确保您的编辑器模板位于~/Views/Shared/EditorTemplates/TemplateViewModel.cshtml. 在您的问题中,您写了Shared\EditorTemplate哪个位置错误(s最后您忘记了)。模板按照您必须遵循的约定工作。

于 2012-05-07T18:57:47.647 回答