列表未填充的MVC3编辑器模板

时间:2011-09-27 19:59:04

标签: asp.net-mvc-3 editortemplates mvc-editor-templates

问题:当我为UserModel加载EditorTemplate时,UserRoles列表不会生成UserRole编辑器列表。

我的模特:

    public class UserSearchModel
{
    [ScaffoldColumn(false)]
    public Guid UserId { get; set; }
    [DisplayName("User Name")]
    public string UserName { get; set; }
    [DisplayName("User Roles")]
    public UserRoles UserRoles { get; set; }
}

    public partial class UserRoles : List<UserRole>
{

}

    public class UserRole
{
    public string RoleName { get; set; }
    public bool IsChecked { get; set; }
    public string Description { get; set; }
}

我的编辑器模板:

@model eGate.BackOffice.WebClient.Model.UserModel
@Html.LabelFor(m=>m.UserName)
@Html.EditorFor(m=>m.UserName)
<h1>roles</h1>
@Html.EditorFor(m=>m.UserRoles)



@model eGate.BackOffice.WebClient.Model.UserRole
@Html.LabelFor(m=>m.RoleName)
@Html.LabelFor(m=>m.IsChecked)
@Html.CheckBoxFor(m=>m.IsChecked)
@Html.LabelFor(m=>m.Description)

实际输出看起来像:

用户名[someuser]

角色

预期输出:

用户名[someuser]

角色

基于role1 [x]缺血 角色1

role2所 [x]缺血 角色2

role3 [x]缺血 角色3

3 个答案:

答案 0 :(得分:0)

您应该只创建List类型而不是派生自己的类型。

答案 1 :(得分:0)

我希望问题是将UserRoles定义为一个单独的类。尝试将UserRoles类中的属性UserSearchModel更改为:

public List<UserRole> UserRoles { get; set; }

MVC正在搜索UserRoles类的模板。由于模板用于UserRole类,因此MVC无法找到任何模板。

<强>更新

另外,我忽略了您使用EditorFor用于UserRoles模型。您应该像EditorForModel那样使用:

@Html.EditorForModel(m => m.UserRoles)

答案 2 :(得分:0)

这个问题看起来更可能是由于telerik mvc网格的popUp窗口正在提供User EditorTemplate这一事实。

我已在网格弹出窗口外测试,发现模板按预期工作。我将结束这个问题并在另一个条目中重新提出正确的问题。