0

我正在使用 Razor 和 KendoUI 开发 ASP.NET MVC 4.5 项目。我有以下两个课程:

public class Rol
    {
        [Key]
        [ScaffoldColumn(false)]
        public int RolId { get; set; }

        [Required]
        [MaxLength(50)]
        public string Name{ get; set; }

        [MaxLength(255)]
        public string Desciption { get; set; }

        public bool Active{ get; set; }

        [DisplayName("Permissions")]
        public virtual ICollection<Permission> Permissions { get; set; }
    }

public class Permission
    {
        [Key]
        [ScaffoldColumn(false)]
        public int PermisoId { get; set; }

        [Required]
        [MaxLength(50)]
        public string Name { get; set; }

        [MaxLength(255)]
        public string Description { get; set; }

        public bool Active { get; set; }

        public ICollection<Rol> Rols { get; set; }
    }

但我不知道如何制作一个有列的网格:

具有 Rol.Name | 的列 列与 Rol.Description | Rol.Active 列 | 包含所有 Rol.Permissions.Name(list) 的列

并支持 KendoUI 的 CRUD 操作

在我看来:

@model IEnumerable<ItemsMVC.Models.Rol>    
    @(
        Html.Kendo().Grid(Model)
            .Name("Grid")
            .Columns(c =>
                {
                    c.Bound(p => p.RolId).Visible(false);
                    c.Bound(p => p.Name);
                    c.Bound(p => p.Description);
                    c.Bound(p => p.Active)
                        .ClientTemplate("#= Active ? 'yes' : 'No' #")
                        .Width(100);
                    **HERE THE LIST OF PERMISSIONS**
                    c.Command(p => { 
                        p.Edit(); 
                        p.Destroy();
                    }).Width(200);
                }        
            )        
            .Pageable(p => p.Enabled(true))
            .Scrollable(s => s.Enabled(true))
            .Sortable(s => s.Enabled(true))
            .Filterable(f => f.Enabled(true))
            .ColumnMenu(c => c.Enabled(true))
            .ToolBar(t => t.Create())
            .Editable(e => e.Mode(GridEditMode.PopUp))
            .DataSource( ds => ds
                .Ajax()
                .Model(model =>model.Id(p => p.RolId))
                .Create(c => c.Action("EditingInline_Create", "Rol"))
                .Read(r => r.Action("Permisos_Read","Rol"))
                .Update(u => u.Action("EditingInline_Update", "Rol"))
                .Destroy(d => d.Action("EditingInline_Destroy", "Rol"))
            )
    )
4

1 回答 1

0

您将需要在 Rol 中创建另一个属性,称为

string PermissionList
{
    get ( return [Convert Permissions collection to string of values]; ) 
}

然后,此属性可以调用 Permissions 并转换为列出名称的字符串,大概。不要尝试在 Grid 中执行此操作,而是在您的 Rol 类中执行此操作。我还建议将 Rol 重命名为 RoleModel 并将 Permission 重命名为 PermissionModel,但显然这是偏好。

于 2013-02-18T01:51:01.167 回答