我的视图有一个 Kendo Grid,其中一个 ClientTemplate 以下列方式为列定义:
.ClientTemplate("<button type ='button' class='k-button btn-icon-sm btn-view-detail' id='btnTicketDetail' onclick='showDetails(this)'><span class='k-icon k-i-file-txt'></span></button>#=data.TicketId#");
上面的代码调用了 JavaScript 函数showDetails
此函数与 Kendo Grid 在同一视图中定义:
function showDetails(e) {
var grid = $("#VarianceTicket").data("kendoGrid");
var row = $(e).closest("tr");
var rowIdx = $("tr", grid.tbody).index(row);
var item = grid.dataItem(row);
var ticketDetailsUrl = "@Url.Action("Index", "VarianceTicketDetail", new System.Web.Routing.RouteValueDictionary(new { id = "data" }), Request.Url.Scheme)".replace("data", item.TicketId);
var newURL = ticketDetailsUrl;
window.open(newURL, '_blank');
}
现在,我需要将该函数移动到一个公共Site.js
文件中。
当我这样做时,函数中的以下行不正确:
var ticketDetailsUrl = "@Url.Action("Index", "VarianceTicketDetail", new System.Web.Routing.RouteValueDictionary(new { id = "data" }), Request.Url.Scheme)".replace("data", item.TicketId);
这就是它的样子:
基本上,正如我所见,它无法构建@Url.Action
字符串。
我应该怎么做才能确保它有效?