我使用本地数据源,但不是远程。它使用Jquery库,我已按照Jquery UI站点上的说明进行操作。这是我的代码(不起作用)。任何人都可以a)修改此代码工作b)显示工作示例的代码??感谢:
JQUERY
$('#countries').autocomplete({
source: "/Trip/Lookup",
minLength: 0,
focus: function (event, ui) {
$('#countries').val(ui.item.label);
return false;
},
select: function (event, ui) {
return false;
}
}).data("autocomplete")._renderItem = function (ul, item) {
return $("<li></li>")
.data("item.autocomplete", item)
.append("<a>" + item.label + "</a>")
.appendTo(ul);
};
的ActionResult
public ActionResult Lookup(string q, int limit)
{
List<DestinationVM> list = new List<DestinationVM>();
list.Add(new DestinationVM { Destination = "England", Cost = 12 });
list.Add(new DestinationVM { Destination = "New Zealand", Cost = 10 });
list.Add(new DestinationVM { Destination = "Australia", Cost = 8 });
var data = from s in list select new { s.Destination, s.Cost };
return Json(data);
}
答案 0 :(得分:0)
将您的操作定义更改为如下所示:
public ActionResult Lookup(string term)
自动完成插件发送一个请求,其中包含一个名为term
的查询参数,其中包含用户到目前为止在文本框中输入的字符。
另外,尝试将Linq投影更改为:
var data = from s in list select new { label = s.Destination, value = s.Cost };
autocomplete插件需要一个平面值数组或一个具有label和value属性的JSON对象数组。
答案 1 :(得分:0)
控制器上的操作错误。应该是:
更改位于输入参数中,并包含返回参数JsonRequestBehavior.AllowGet。它现在有效。
public ActionResult Lookup(string term)
{
var result = _TripRep.GetAutoCompleteDestination(term, 5);
var data = from s in result select new { label = s.Destination, value = s.Cost };
return Json(data, JsonRequestBehavior.AllowGet);
}