我正在使用MVC开发应用程序。我有一个要求,我必须显示列表的复选框。
我正在经历不同的帖子,其中一个是使用避免foreach循环和使用@html.editorfor(),如Darwin dimitrov here的答案所述:
这个答案非常好,但我有一个澄清,那就是:
在同一视图中,我有2个要求,一个是checkboxfor,另一个是radiobuttonfor 所以,如果我正在使用
<div>@Html.EditorFor(x => x.RoleAccess)</div>
如何编写(〜/ Views / Shared / EditorTemplates / RoleAccessViewModel.cshtml)来为一个需求提供复选框,为@radiobuttonfor提供另一个。
这种方法难道不是硬编码的,每当使用EditorFor(x => x.RoleAccess)
时总会呈现RoleAccessViewModel.cshtml吗?请执行我如果我使用了任何技术术语错误的方式,因为我仍然是mvc的新手。
答案 0 :(得分:2)
EditorFor
方法有一个重载,接受模板名称作为参数。如果我理解正确,我想这可以解决你的问题。见http://msdn.microsoft.com/en-us/library/ee407414%28v=vs.118%29.aspx
答案 1 :(得分:1)
您也可以使用属性上的UIHint
属性代替(或除此之外)依赖于在视图模型后命名模板来解决此问题。然后,您可以创建一个替代模板来呈现单选按钮并指定:
[UIHint("RadioList")]
public List<Something> MyRadioButtonList { get; set; }
然后 EditorFor
会找到模板:Views\Shared\EditorTemplates\RadioList.cshtml
您也可以对复选框列表执行相同操作,而不是依赖于视图模型。例如,[UIHint("CheckboxList")]
和CheckboxList.cshtml
。然后,您可以更广泛地应用这些模板。