2011-03-01 55 views

回答

2

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

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

相关问题