2011-08-19 68 views
1

可能重复:
MVC 3 Webgrid - how do you hide columns you do not want to be visible?MVC webgrid - 你可以隐藏一列吗?

我使用的WebGrid在我的MVC应用程序。我想要做的是在表单中放置一条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") 
)); 

回答

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

助手应该返回一个网格对象不是字符串,否则你不能再添加列。