asp.net mvc 3 -根据角色类型隐藏网格中少数记录的列值:MVC3



**我正在尝试创建一个具有网格的视图

视图布局,我使用的是:**

@model IEnumerable<VC.MC.ReportalWeb.UI.Users>
@using myspace
@{
    ViewBag.Title = "Users";
    var grid = new WebGrid(source: Model, canSort: true);    
}
<h2>Users</h2>
<p>
    @Html.ActionLink("Create New", "Create")
</p>
@grid.GetHtml(columns: grid.Columns(
grid.Column("UserName"),
grid.Column("Email"),
grid.Column(
header: "",
style: "text-align-center",
format: (item) => new HtmlString(Html.ActionLink("Edit", "Edit", new { id = item.id ).ToString() + " | " +
Html.ActionLink("Details", "Details", new { id = item.id }).ToString() + " | " +
Html.ActionLink("Delete", "Delete", new { id = item.id }).ToString()))
)
)
@grid.GetHtml(columns: grid.Columns(Html.RoleBasedColumns(grid)))

@{
    if (!string.IsNullOrWhiteSpace(grid.SortColumn))
    {
<script type="text/javascript">
    $('thead > tr > th > a[href*="sort=@grid.SortColumn"]').parent().append('@(grid.SortDirection == SortDirection.Ascending ? "^" : "v")');
</script>
}
}

RoleBasedColumns(grid)是我的剃刀的辅助方法,它是

public static WebGridColumn[] RoleBasedColumns(
        this HtmlHelper htmlHelper,
        WebGrid grid
    )
    {
        var user = htmlHelper.ViewContext.HttpContext.User;
        var columns = new List<WebGridColumn>();
        var query = from p in _adminModelContainer.Users
                    select p;

        IList<Users> userList = query.ToList();
        for (int i = 0; i < userList.Count; i++)
        {
            // The Prop1 column would be visible to all users
            columns.Add(grid.Column("UserName"));
            if (userList[i].RolesId == 1)
            {
                // The Prop2 column would be visible only to users
                // in the foo role
                columns.Add(grid.Column("Email"));
            }
        }
        return columns.ToArray();
    }

我想仅为那些RolesId为1的用户显示编辑和删除链接按钮

使用上面的功能,网格只是复制自己。列的标题显示,其rolesid为1。

I ' m in a fix.

任何帮助都将大有用处。

谢谢

使用Telerik的免费开源mvc控件(网格),当您定义网格时,使用更简单的方法。只需要在以下行中使用动态列:

<>之前@ (Html.Telerik () .Grid(模型). name("网格")。TableHtmlAttributes(new {width="800"}).Columns(列=>{如果(userIsInWhateverRole) {列。Template(0 => Html.Action(GenerateYourLinkStuffHere));}列。Bound(0 => 0 . address).Width(150);列。Bound(0 => 0 . city).Width(120);列。(0 => 0 . state).Width(100);}).Sortable ().Scrollable ().Groupable ().Filterable ().Pageable(分页=>paging.PageSize (5).Style (GridPagerStyles.NextPreviousAndNumeric).Position (GridPagerPosition.Bottom)))之前

在我看来,没有其他网格像它一样好——而且是免费的。为什么要自找麻烦呢

最新更新