2011-08-19 64 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); 

助手應該返回一個網格對象不是字符串,否則你不能再添加列。