如何根据当前用户的角色隐藏WebGrid列?

问题描述:

我需要做一个网格使用webgrid,我想隐藏基于用户角色的编​​辑操作的列(标题和项目)。如何根据当前用户的角色隐藏WebGrid列?

如何使用webgrid做到这一点?

你可以写一个辅助方法,它会根据用户角色动态生成列:

public static class GridExtensions 
{ 
    public static WebGridColumn[] RoleBasedColumns(
     this HtmlHelper htmlHelper, 
     WebGrid grid 
    ) 
    { 
     var user = htmlHelper.ViewContext.HttpContext.User; 
     var columns = new List<WebGridColumn>(); 

     // The Prop1 column would be visible to all users 
     columns.Add(grid.Column("Prop1")); 

     if (user.IsInRole("foo")) 
     { 
      // The Prop2 column would be visible only to users 
      // in the foo role 
      columns.Add(grid.Column("Prop2")); 
     } 
     return columns.ToArray(); 
    } 
} 

,然后在您的视图:

@{ 
    var grid = new WebGrid(Model); 
} 
@grid.GetHtml(columns: grid.Columns(Html.RoleBasedColumns(grid))) 
+0

谢谢!我会用这个想法 – 2011-03-02 12:25:12