Автозаполнение JQuery и база данных ASP .NET MVC в качестве источника данных - PullRequest
0 голосов
/ 12 августа 2010

У меня это работает с локальным источником данных, но не удаленно.Он использует библиотеку Jquery, и я следовал инструкциям на сайте пользовательского интерфейса Jquery.Это код, который у меня есть (который не работает).Может ли кто-нибудь а) изменить этот код для работы б) показать код рабочего примера ??Спасибо:

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 голосов
/ 12 августа 2010

Действие на контроллере было неправильным.Должно было быть:

Изменения во входном параметре и включение возвращаемого параметра 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);

    }
0 голосов
/ 12 августа 2010

Измените определение действия так, чтобы оно выглядело следующим образом:

public ActionResult Lookup(string term)

Плагин автозаполнения отправляет запрос с параметром запроса term, который содержит символы, которые пользователь уже набрал в текстовом поле..

Также попробуйте изменить проекцию Linq следующим образом:

var data = from s in list select new { label = s.Destination, value = s.Cost };

Плагин автозаполнения ожидает либо плоский массив значений, либо массив объектов JSON, которые имеют свойство label и value.

...