JQuery Autocomplete和ASP .NET MVC数据库作为数据源

时间:2010-08-12 18:45:33

标签: jquery asp.net-mvc-2 autocomplete

我使用本地数据源,但不是远程。它使用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);
    }

2 个答案:

答案 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);

    }