Querystring中的Kendo自动完成空过滤器-服务器过滤



我正在尝试在Kendo UI(ASP.NET 5,MVC6)中使用服务器过滤进行自动完成由于MVC Wrapper中没有Autocomplete,我不得不使用以下代码:

<script>
    var dataSource = new kendo.data.DataSource({
        serverFiltering: true,
        serverOperation: true,
        type: "aspnetmvc-ajax",
        transport: {
            read: {
                url: "@Url.Content("~/api/Get")",
                type: "GET"
            }
        },
        schema: {
            data: "Data",
            total: "Total"
        }
    })
    $("#@Model.Name").kendoAutoComplete({
        placeholder: "@Model.Watermark",
        minLength: 3,
        filter: "contains",
        dataSource: dataSource
    });
</script>

问题是发送到控制器的查询字符串如下所示:?排序=&组=&filter=

所以它不包括任何过滤信息

在服务器端,我试图将其映射到DataSourceRequest

现在我使用以下变通方法来传递额外的参数来进行服务器端过滤,但我仍然想使用剑道原生过滤:

<script>
    var dataSource = new kendo.data.DataSource({
        serverFiltering: true,
        serverOperation: true,
        type: "aspnetmvc-ajax",
        transport: {
            read: {
                url: "@Url.Content("~/api/Get")",
                type: "GET",
                data: onAdditionalData
            }
        },
        schema: {
            data: "Data",
            total: "Total"
        }
    })

    $("#@Model.Name").kendoAutoComplete({
        placeholder: "@Model.Watermark",
        minLength: 3,
        filter: "contains",
        dataSource: dataSource
    });
    function onAdditionalData() {
        return {
            text: $("#@Model.Name").val()
        };
    }
 </script>

控制器代码:

    [Route("api/Get")]
    [HttpGet]
    public JsonResult Get([DataSourceRequest] DataSourceRequest request, string text = "")
    {
        var list = (new List<string>() { "value1", "value2", "value3", "test" } ).AsQueryable();
        return Json(list.Where(x => x.Contains(text)).ToDataSourceResult(request));
    }

相关内容

最新更新