Несколько Html.ActionLink () в одном столбце MvcContrib.Grid в MVC3 - PullRequest
3 голосов
/ 10 января 2012

Я пытаюсь обернуть голову вокруг правильного синтаксиса для достижения следующего - или, по крайней мере, выяснить, выполнимо ли это или есть лучшее альтернативное решение.

Хорошо, из коробки, когда вы генерируете строго типизированное представление с использованием скаффолда List в ASP.Net MVC3, вы получаете простую таблицу со столбцом, который имеет что-то вроде двух или трех элементов 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 ]

5 голосов
/ 10 января 2012

Вы можете использовать пользовательский столбец:

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>
);
3 голосов
/ 14 июля 2013

Может быть, это кому-нибудь поможет:

@Html.Grid(Model).Columns(column =>
    {
        column.For( c=> Html.Raw(Html.ActionLink(...).ToString() + 
            " " + Html.ActionLink(...).ToString())).Named("Actions").Encode(false);
....
0 голосов
/ 10 января 2012

Вы должны передать встроенного помощника:

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