asp.net-mvc-3mvccontrib-grid

Multiple Html.ActionLink() within single MvcContrib.Grid column in MVC3


I'm trying to wrap my head around the proper syntax to achieve the following--or at least to find out if it's even do-able or if there is a better alternative solution.

Ok, out of the box, when you generate a strongly-typed View using the List scaffold under ASP.Net MVC3 you get a simple table with a column that has something like two or three Html.ActionLink() items representing common actions like so: Edit | Details | Delete

I would like to use the MvcContrib grid and do the same, but I cannot figure out the correct syntax to get it to work. So far, in my Index.cshtml, I have the following snippet:

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

but that just gives me one column for "Edit", where as I want the column to contain three action links--Edit, Devices, Delete--with all three having the same itemID for the particular row. Is this achievable? And if so, how? If not, is there an alternative?


Solution

  • You could use a custom column:

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