我需要执行历史推送状态到某些Action on Grid点击...
我查看了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?
由于
答案 0 :(得分:2)
docs for the "change" event有一个如何获取所选行的数据项的示例。
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项目来验证语法,但这应该非常接近,或者至少让你指向正确的方向。