剑道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的值记录到了控制台。然而,一旦它返回到控制器,附加参数的值总是空的。

我错过了什么?

剑道Ajax网格参数与.net

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

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

我的问题解决了