Kendo 自动完成显示 [object object] 而不是 属性 值

Kendo autocomplete showing [object object] instead of propery value

我正在尝试使用他们的教程配置 kendo 自动完成。 问题是自动完成控件显示对象而不是我在 kendo 初始化中设置的 属性 值(参见捕获):

@(
    Html.Kendo().AutoComplete()
    .Name("products")
    .Placeholder("Find Product...")
    .DataTextField("Name")
    .Template("<span><img src='/Content/Images/default-photo.jpg' " +
    "width='20' height='20' />&nbsp;${data}</span>")
    .DataSource(source =>
    {
        source.Read(read =>
        {
            read.Action("GetProducts", "Search")
            .Data("onAdditionalData");
        })
            .ServerFiltering(true);
    })

)

<script>
    function onAdditionalData() {
        return {
            text: $("#products").val()
        };
    }
</script>

点击此项后名称正确显示:

我的操作return类型是return Json(products, JsonRequestBehavior.AllowGet); 其中产品是 ICollection<VmProduct> 怎么回事?

您已经设置了 DataTextField,但是当您设置 Template 时您正在覆盖它,因为 kendo 将执行模板而不是获取您设置的字段。但这不是问题,问题是在您的模板中您正在打印 data 对象,这实际上是一个对象。您需要打印与建议文本相关的属性,例如:

.Template("<span><img src='/Content/Images/default-photo.jpg' " +
"width='20' height='20' />&nbsp;${data.Name}</span>")

试一试并告诉我们会发生什么。