MVC webgrid - 你能隐藏一个列吗?

时间:2011-08-19 15:45:56

标签: asp.net-mvc webgrid

  

可能重复:
  MVC 3 Webgrid - how do you hide columns you do not want to be visible?

我在MVC应用程序中使用WebGrid。我想要做的是在我的表单中放置一个if语句来隐藏列,具体取决于条件。下面的代码显示了我对if语句的含义,但这是不允许的;

@grid.GetHtml(columns: grid.Columns(
    grid.Column(format: (item) => Html.ActionLink("Select", "Details", new { contractId = item.ContractId })),
    if(Context.User.IsInRole(ITOF.Web.Models.Role.Inputter)
    {
        grid.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { contractId = item.ContractId })),
    }
    grid.Column("SignOffDate", "Sign Off Date",
        format:@<text> <span>@item.SignOffDate.ToString("d/M/yyyy")</span></text>),
    grid.Column("FullContractNumber", "Contract Number"),
    grid.Column("ContractTitle", "Title")
));

1 个答案:

答案 0 :(得分:0)

我不知道这是否有效,因为我不知道助手的内部运作方式。你可能会做这样的事情:

    @{
        var temp = grid.GetHtml(....);        

        if(Context.User.IsInRole(ITOF.Web.Models.Role.Inputter)
        {
            temp.Column(format: (item) => Html.ActionLink("Edit", "Edit", new { contractId = item.ContractId })),
        }
    }

    @Html.Raw(temp);

帮助器应该返回一个网格对象而不是一个字符串,否则你就不能再添加这些列了。