【问题标题】:MVC3 Webgrid formattingMVC3 Webgrid 格式化
【发布时间】:2012-12-01 16:56:02
【问题描述】:

我正在使用 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 完成吗?如果没有,还有其他选择吗?

【问题讨论】:

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


    【解决方案1】:

    您应该能够在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 });
        }
    })
    

    【讨论】:

    • 假设我想在同一个单元格中有 3 个操作链接(只有一个有条件),我该怎么做?
    • @jpo 您可以使用return Html.Raw( Html.ActionLink("Link1", "Link1").ToHtmlString() + Html.ActionLink("Link2", "Link2").ToHtmlString()); 组合它们。不过,我不确定这是否是“正确”的方式。
    猜你喜欢
    • 2011-06-19
    • 2011-07-04
    • 2011-07-20
    • 1970-01-01
    • 2011-06-20
    • 2012-12-01
    • 2012-05-05
    • 2013-10-09
    • 2012-02-18
    相关资源
    最近更新 更多