Как я могу скрыть столбец WebGrid в зависимости от роли текущего пользователя? - PullRequest
3 голосов
/ 02 марта 2011

Мне нужно сделать сетку с помощью веб-сетки, и я хотел бы скрыть столбец (заголовок и элементы) действий редактирования на основе роли пользователя.

Как я могу это сделать с помощью веб-сетки?

1 Ответ

2 голосов
/ 02 марта 2011

Вы можете написать вспомогательный метод, который будет генерировать столбцы динамически на основе пользовательских ролей:

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)))
...