Kendo Ajax .Net 网格参数

Kendo Ajax Grid Parameters with .Net

我有一个 Kendo 网格,我试图在其中发送额外的数据作为 bool,我可以用它来过滤我控制器中的 return 数据。

控制器:

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();
});

每当更改复选框时,它 运行 都会调用 kendo 网格到 运行 读取函数的更改函数。 kendo 网格还调用 filterFunction 来获取额外的参数。我可以看到 filterFunction 确实被调用了,因为将 filter 的值记录到控制台。但是,一旦它返回到控制器,附加参数的值始终为空。

我错过了什么?

过滤器似乎是 kendo 框架中使用的关键字。所以当我改变时:

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
    }
}

另请注意,您只能将字符串作为参数传递,因此我不得不将控制器中的参数更改为字符串,并将 true/false 值更改为上面 JavaScript 函数中的字符串:

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.
}

这解决了我的问题。