我想调用控制器的操作方法和 return 查看 Kendo 网格行单击

I want to call Action Method of controller and return View on Kendo grid row click

下面是我的kendo网格代码

@(Html.Kendo().Grid<DataSource>()
    .Name("grid")
    .Columns(columns =>
    {
        columns.Bound(p => p.Quote_ID).Filterable(false);
        columns.Bound(p => p.Ticket_ID).Groupable(true);
        columns.Bound(p => p.Channel).Groupable(true);
        columns.Bound(p => p.Agent_Alias).Groupable(true).Hidden(true);
        columns.Bound(p => p.Shipping_Carrier).Groupable(true).Hidden(true);
        columns.Bound(p => p.Quote_ID).Title("View 
        Details").Groupable(false)

        .Template(@<text>
            @Html.ActionLink("Show Product Details", "GridRowSummary", 
        "GridOrderSummary")</text>);                                                         

    })

我正在尝试从 ActionLink 调用控制器的操作方法。

Below My controller code

public ActionResult GridRowSummary()
    {
        return View();
    }

使用 Template 将在使用 Ajax 绑定网格时起作用,例如:

columns.Template(c => @Html.ActionLink("GridRowSummary", "GridOrderSummary", new { id = c.Id, }));

如果不使用 Ajax 绑定网格,请在列上使用 ClientTemplate 属性,并在需要时使用显示关联数据的方法,例如:

columns.Bound(p => p.Quote_ID).Title("View Details").Groupable(false)
    .ClientTemplate(@Html.ActionLink("#=Quote_ID#", "GridRowSummary", new { ID = "#=ID#" }).ToHtmlString());

还有第三种方法(有点乱),它允许您添加自定义 buttons/icons 等,例如:

columns.Bound(p => p.Quote_ID).ClientTemplate("<a href='" + @Url.Action("GridRowSummary", "GridOrderSummary", new { id = "#=Id#" }) + "' class='btn btn-primary'><i class='fa fa-eye'></i>  Link</a>" );

编辑

通过查看 FAQ 部分,找到了一个更简洁的解决方案,您可以在其中传递控制器名称和 Quote_ID 参数(尽管这种方式确实涉及设置 Javascript 函数):

columns.Bound(p => p.Quote_ID).ClientTemplate("#= getDetails(data) #");

<script>
function getDetails(data) {
    var action = '@Url.Action("NameOfMethod", "NameOfController")';

    var html = kendo.format("<a href='{0}/{1}'>Link</a>",
        action,
        data.Quote_ID
    );

    return html;
}
</script>

以下代码适用于客户端模板。需要更换。

columns.Bound(p => p.Quote_ID).Title("View Details").Groupable(false)
             .ClientTemplate(
            @Html.ActionLink("#=Quote_ID#", "Summary", new { Quote_ID = "Id" 
}).ToHtmlString().Replace("Id", "#=Quote_ID#"));

这个解决方案适合我。

 .Events(events =>
    {
        events.Change("onRowSelected");
    })

function onRowSelected(e) {
            debugger;
            var gview = $("#grid").data("kendoGrid");
            //Getting selected item
            var selectedItem = gview.dataItem(gview.select());
            var ticketId = selectedItem["Ticket_ID"];
            window.location.href = "/GridOrderSummary/GridRowSummary?
            ticketId=" + ticketId;
        }

//Controller code

public class GridOrderSummaryController:控制器 {

// GET: GridOrderSummary
 public ActionResult GridRowSummary(string ticketId)
 {
   // your code
    return View();
 }

}