MVC3 Webgrid格式化

时间:2012-12-13 18:19:19

标签: asp.net-mvc-3 razor pagination webgrid

我正在使用Webgrid进行分页。有没有办法访问每个项目?例如,如果模型的项目符合特定条件,我想添加一些链接列。 例如:

@grid.GetHtml(columns: grid.Columns(
     /If (item.name == "test")// statement to test condition here{
       grid.Column(format: (item) => Html.ActionLink("Delete", "Delete", new { name = item.name })),
       }
       else{
       grid.Column(format: (item) => Html.ActionLink("Detail", "Detail", new { name = item.name })),
        }
        grid.Column("FirstName"),
        grid.Column("LastName"),
        grid.Column("EmailAddress")
    )

可以用webgrid完成吗?如果没有,还有什么其他选择?

1 个答案:

答案 0 :(得分:4)

你应该能够在format参数本身内放置这样的条件。像这样:

@grid.GetHtml(columns: grid.Columns(
    grid.Column(format: item => 
        (item.name == "test") ?
            Html.ActionLink("Delete", "Delete", new { name = item.name })
            : Html.ActionLink("Detail", "Detail", new { name = item.name })
    ))
)

请注意,如果您需要更复杂的场景,还可以在format lambda中放置一个匿名函数。它应返回MvcHtmlString(如ActionLink等):

grid.Column(format: item => 
{
    if (item.name == "test")
    {
        return Html.ActionLink("Delete", "Delete", new { name = item.name });
    }
    else
    {
        return Html.ActionLink("Detail", "Detail", new { name = item.name });
    }
})