web-dev-qa-db-ja.com

Razor構文でTelerikMVCグリッドのテンプレート列を定義する

模倣したい次のレガシーコードがあり、すべてのアクションリンクが1つの列に含まれています。ただし、Razorの構文を正しく理解できないようです。これをRazorでどのように表現すればよいですか?

ASPX列テンプレートは次のようになります。

.Columns(column =>
{
    column.Template(o =>
        {%>
            <%= Html.ActionLink("Edit", "Edit", new{ id = o.DeviceID}) %> | 
            <%= Html.ActionLink("Delete", "Delete", new { id = o.DeviceID })%>
        <%});

以下のように、構文などについての苦情なしに、Razorを使用して3つの別々の列を取得することしかできませんでした。

.Columns(columns =>
{
    columns.Template(o => @Html.ActionLink("Edit", "Edit", new { id = o.ProductId })).Width(50);
    columns.Template(o => @Html.ActionLink("Details", "Details", new { id = o.ProductId })).Width(50);
    columns.Template(o => @Html.ActionLink("Delete", "Delete", new { id = o.ProductId })).Width(50);

Razor構文を使用して、3つのアクションリンクすべてを含む1つのテンプレート列を定義するにはどうすればよいですか?

EDIT:以下のマイクの答えを次のように少し変更しようとすると、「ステートメントとして使用できるのは、代入、呼び出し、インクリメント、デクリメント、および新しいオブジェクト式のみです」というエラーが表示されます。

columns.Template(o => @<text>@Html.ActionLink("Edit", "Edit", new { id = o.CampaignId }) | 
                        @Html.ActionLink("Delete", "Delete", new { id = o.CampaignId })
                        </text>).Width(100);
15
ProfK

Ajaxでバインドしている場合、フォーマットは次のようになります。

c.Bound(i => i.Name).ClientTemplate(@Html.ActionLink("<#= Name #>", "[Action]", "[Controller]", new { Id = "<#= Id #>" }, new { Area = "[Area]" }).ToHtmlString())

詳細については、こちらを参照してください: http://www.telerik.com/forums/kendo-mvc-grid-actionlink-column

2
Josh
columns.Template(@Html.ActionLink("Edit", "Edit", new {id = @item.id }));

@itemが何であるかについては、Razorに関するScottGuのブログ投稿を確認してください。

1
Atanas Korchev

ヘッダー行に配置する必要のある印刷ボタンがありました。これは、[更新]ボタンが配置されている場所と同じ列に配置することを選択しました。私は次のようにRazorでそれをうまく行うことができました:

columns.Command(command => {command.Edit(); }).Width(100).HeaderTemplate(i => @Html.ActionLink("Print Grid", "OutputAgencies", "Admin", new { @class = "k-button" }) );

これは、「Print Grid」がリンクボタンに表示される場所であり、「OutputAgencies」がコントローラーのメソッドであり、「AdminController」がコントローラーの名前でした。

0
vapcguy
columns.Command(commands => {
 commands.Custom("Update").Text(Resource.Edit)
 .ButtonType(GridButtonType.BareImage)                                                .SendState(true).SendDataKeys(true).HtmlAttributes(new { id = "popUp"})   
                                              Action("Gallery_Bar_EditOrAddTranslate", "Administration").Ajax(false);
commands.Custom("Update").Text(Resource.Edit)
 .ButtonType(GridButtonType.BareImage)                                                .SendState(true).SendDataKeys(true).HtmlAttributes(new { id = "popUp"})                                                 Action("Gallery_Bar_EditOrAddTranslate", "Administration").Ajax(false);                                  }).Width("5%").Title(Resource.Coomand);

これにより、アクションのようなものが生成されます。DataKeysのように表示できるid id = m.UserIdをリンクします。

 .Name("GridName")  .DataKeys(key =>
                        {
                            key.Add(c => c.UserId).RouteKey("userId");

                        })

postメソッドであなたは持っているでしょう:

public ActionResult xxx(int userId)
{
}
0
Nic