剑道Ajax网格参数与.net
本文关键字:net 参数 网格 Ajax 剑道 | 更新日期: 2023-09-27 18:07:57
我有一个剑道网格,我试图发送额外的数据作为一个bool,我可以用它来过滤我的控制器中的返回数据。
控制器:
public ActionResult Securities_Read([DataSourceRequest]DataSourceRequest request, bool filter) {
if (filter == true) // do something.
}
读
:
.Read(read => read.Action("Action", "Controller").Data("filterFunction"))
过滤功能:
function filterFunction() {
var filter = ($('#checkbox').is(":checked")) ? true : false;
console.log(filter);
return {
filter: filter
}
}
复选框事件处理程序:
$('#checkbox').change(function () {
$('#grid').data('kendoGrid').dataSource.read();
});
每当复选框被更改时,它运行更改函数,该函数反过来调用剑道网格来运行读取函数。剑道网格还调用filterFunction来获取额外的参数。我可以看到filterFunction确实被调用了,因为它将filter的值记录到了控制台。然而,一旦它返回到控制器,附加参数的值总是空的。
我错过了什么?
过滤器似乎是剑道框架中使用的关键字。所以当我改变:
function filterFunction() {
var filter = ($('#checkbox').is(":checked")) ? true : false;
console.log(filter);
return {
filter: filter
}
}
:
function filterFunction() {
var filter = ($('#checkbox').is(":checked")) ? "true" : "false";
console.log(filter);
return {
shouldFilter: filter
}
}
还请注意,您只能将字符串作为参数传递,因此我必须将控制器中的参数更改为字符串,并将上面JavaScript函数中的true/false值更改为字符串:
public ActionResult Securities_Read([DataSourceRequest]DataSourceRequest request, bool filter) {
if (filter == true) // do something.
}
:
public ActionResult Securities_Read([DataSourceRequest]DataSourceRequest request, string filter) {
if (filter == "true") // do something.
}
我的问题解决了