1

我需要对网格单击的某些操作执行历史推送状态...

我查看了 API,我认为事件更改是这样做的正确位置......

所以,这就是我想放在那里的代码

"window.History.pushState(null, null," + "'" + Url.Action("Edit", "MyController") + "/' + Id);"

我在类似的 JS Grid 上使用它并且工作正常,但我不知道如何使用 Kendo UI MVC Wrapper 来做到这一点......我打算直接在 Grid 定义上使用它,所以我不必创建任何 JS 方法......类似的东西:

.Events(events => events.Change(x => "window.History.pushState..."))

那可能吗?如何获取 ID 并在那里声明 Url.Action?

谢谢

4

1 回答 1

2

“更改”事件的文档有一个如何获取所选行的数据项的示例。

MVC 帮助程序希望传递 JS 函数的字符串名称,events.Change()但我认为您也可以在那里定义一个函数。

所以像:

@{
    var url = Url.Action("Edit", "MyController");
}

...

.Events(events => events.Change(x => @"function (changeEvent) {
    var selectedRows = this.select();
    var dataItem;
    var numSelectedRows = selectedRows.length;
    for (var i = 0; i < numSelectedRows ; i++) {
        dataItem = this.dataItem(selectedRows[i]);
        selectedDataItems.push(dataItem);
        window.History.pushState(null, null, """ + url + @"/"" + dataItem.Id);
    }
}"))

我没有在我面前打开一个 Kendo MVC 项目来验证语法,但这应该非常接近,或者至少可以让你指出正确的方向。

于 2013-08-20T14:26:32.600 回答