我在MVC控制器中有以下代码:
public JsonResult ARequest()
{
Dictionary<string, object> AnObject = new Dictionary<string,object>();
AnObject["foo"] = new object[] {"item 1", "item 2", "item 3"};
return Json(AnObject, JsonRequestBehavior.AllowGet);
}
它按预期工作;当我从浏览器调用它时,我得到以下JSON对象:
{"foo":["item 1","item 2","item 3"]}
我有另一个文件,这次使用的是Kendo UI Autocomplete Widget。这是代码:
<input id="products" style="width: 250px" />
/*...*/
$("#products").kendoAutoComplete({
filter: "contains",
minLength: 3,
dataTextField: foo,
dataSource: {
type: "odata",
pageSize: 10,
transport: {
read: {
url: "education-portal/ARequest"
}
}
}
});
问题是,当我加载页面时,我什么都没得到。自动完成为空,并保持空白。当我在框中输入任何内容时,没有显示任何结果。知道出了什么问题吗?我不能为我的生活看到它。
答案 0 :(得分:5)
有几个问题:
dataTextField
,因为您的值数组不是strings
的对象。type
odata 还是JSON?应该是这样的:
$("#products").kendoAutoComplete({
filter: "contains",
minLength: 3,
dataSource: {
type: "json",
pageSize: 10,
transport: {
read: {
url: "education-portal/ARequest"
},
schema : {
data: "foo"
}
}
}
});
答案 1 :(得分:2)
由于您将集合包装在名为foo的字段中,因此应通过 dataSource.schema.data 选项指定它。
e.g。
dataSource: {
schema: {
data: "foo"
}
}
您不必指定任何datavaluefield或datatextfield