Kendo ui mvc ComboBox:如何发送附加或自定义数据以过滤结果

Kendo ui mvc ComboBox: How to send additional or custom data to filter results

我正在使用 Kendo UI ComboBox(MVC 包装器)。在此剃刀视图中,系统将提示用户根据 "Model.NumChilds" 字段输入 children 名称。需要从服务器填充 ChildName。用户需要输入至少两个字符。此信息使用数据源中的数据方法作为附加数据传递给服务器。 在我的 java 脚本函数 "filterChildNamesList" 中,我进行了硬编码以始终发送第一个 child 输入值。

如何发送特定于 child 的输入值?

如有任何帮助,我们将不胜感激。谢谢

@model Test.Web.ViewModels.ParentViewModel

<script>
    function filterChildNamesList() {
        debugger;
        return {
            cFilter: $("#Child0").data("kendoComboBox").input.val()
        };
    }
</script>
@{
 Model.ChildList = new List<Test.Web.Model.Child>();
    for (int count = 0; count < Model.NumChilds; count++)
    {
        Model.ChildList.Add(new Test.Web.Model.Child());
    }
}
<table>
    @for (int count = 0; count < Model.ChildList.Count; count++)
    {
        <tr>
            <td>
                <label>Child @count</label>
                @(Html.Kendo().ComboBoxFor(m => m.ChildList[count].ChildName)
                        .HtmlAttributes(new { style = "width:300px", id = "Child" + count })
                        .Placeholder("Enter 4 characters...")
                        .DataTextField("description")
                        .DataValueField("id")
                        .Filter(FilterType.Contains)
                        .MinLength(2)
                        .DataSource(source =>
                        {
                            source.Read(read =>
                            {
                                read.Action("GetChildNames", "Parent").
                                    Data("filterChildNamesList");
                            }).ServerFiltering(true);
                        }))
                <td>
            </tr>
    }
</table>

您可以将 return Json(data.ToDataSourceResult(request)) 和 return 用作控制器中的 Json,而不是传递额外的数据。这将自动过滤数据中的结果。

如果要发送额外的数据,可以改为

Data("function(){return filterChildNamesList('Child" + count+"');}")

function filterChildNamesList(arg){}

这将帮助您识别调用了哪个发送参数。