我正在使用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(列表)的列
并支持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"))
)
)
答案 0 :(得分:0)
您需要在Rol中创建另一个属性,如
string PermissionList
{
get ( return [Convert Permissions collection to string of values]; )
}
然后,此属性可以调用Permissions并转换为列出Names的字符串。不要尝试在Grid中执行此操作,在Rol类中执行此操作。我还建议将Rol重命名为RoleModel并将PermissionModel权限重命名,但显然这是首选项。