MVC3中单个MvcContrib.Grid列中的多个Html.ActionLink()

时间:2012-01-09 20:20:39

标签: asp.net-mvc-3 mvccontrib-grid

我正试图围绕正确的语法来实现以下目标 - 或者至少要知道它是否可行,或者是否有更好的替代解决方案。

好的,开箱即用,当您使用ASP.Net MVC3下的List脚手架生成强类型视图时,您会得到一个简单的表,其中包含一个类似于两个或三个Html.ActionLink()项的列。这样的行为: 编辑|细节|删除

我想使用MvcContrib网格并执行相同操作,但我无法找出正确的语法来使其工作。到目前为止,在我的Index.cshtml中,我有以下代码段:

@(
        Html.Grid(Model.PagedList).AutoGenerateColumns()
            .Columns(column => 
            {
                column.For(f => Html.ActionLink("Edit", "Edit", new { id = f.itemID}))
                .Named("");
            })
            .Sort(Model.GridSortOptions);
    )

但是这只给了我一行“编辑”,其中我希望列包含三个操作链接 - 编辑,设备,删除 - 所有三个具有特定行的相同itemID。这可以实现吗?如果是这样,怎么样?如果没有,还有其他选择吗?

3 个答案:

答案 0 :(得分:5)

您可以使用自定义列:

columns.Custom(
    @<text>
        @Html.ActionLink("edit", "edit", new { id = item.Id }) |
        @Html.ActionLink("details", "details", new { id = item.Id }) |
        @Html.ActionLink("delete", "delete", new { id = item.Id }) |
    </text>
);

答案 1 :(得分:3)

也许对某人有所帮助:

@Html.Grid(Model).Columns(column =>
    {
        column.For( c=> Html.Raw(Html.ActionLink(...).ToString() + 
            " " + Html.ActionLink(...).ToString())).Named("Actions").Encode(false);
....

答案 2 :(得分:0)

您应该传递一个内联帮助器:

column.For(@<text>
    @Html.ActionLink("Edit", "Edit", new { id = item.itemID })
    @Html.ActionLink(...)
    @Html.ActionLink(...)
</text>)