JQuery Автозаполнение в MVC не работает полностью? - PullRequest
0 голосов
/ 16 декабря 2011

У меня есть автоматическая настройка коробки.однако, когда пользователь вводит в поле, появляется список каждого элемента.Не имеет отношения к тому, что пользователь вводит.

Что я делаю не так?

Jquery:

 var availableTags = '@Url.Action("PopSearch", "Home")';
    $("#searchtxt").autocomplete({
        source: availableTags
    });

Функция контроллера:

public ActionResult PopSearch()
    {
        IndustryManager manager = new IndustryManager();
        ProductRangeManager manager2 = new ProductRangeManager();
        ProductCategoryManager manager3 = new ProductCategoryManager();

        IList<Industry> industryList = manager.GetIndustries();
        IList<ProductRange> rangeList = manager2.GetAllProductRanges();
        IList<ProductCategory> categoryList = manager3.GetAllProductCategories();

        var attributes = industryList.Select(x => x.Name)
            .Union(rangeList.Select(x => x.Name))
             .Union(categoryList.Select(x => x.Name)).ToArray();

        return Json(attributes, JsonRequestBehavior.AllowGet);
    }

1 Ответ

1 голос
/ 16 декабря 2011

Проверьте запрос к серверу. Возможно, у вас есть запрос к серверу что-то вроде

http://yoursite.com/Home/PopSearch?term=Something

Где что-то есть то, что пользователь вводит в текстовое поле. Это означает, что вам нужно отфильтровать его на стороне сервера и вернуть уже отфильтрованные данные.

public ActionResult PopSearch(string term)
{
    IndustryManager manager = new IndustryManager();
    ProductRangeManager manager2 = new ProductRangeManager();
    ProductCategoryManager manager3 = new ProductCategoryManager();

    IList<Industry> industryList = manager.GetIndustries();
    IList<ProductRange> rangeList = manager2.GetAllProductRanges();
    IList<ProductCategory> categoryList = manager3.GetAllProductCategories();

    var attributes = industryList.Select(x => x.Name)
        .Union(rangeList.Select(x => x.Name))
         .Union(categoryList.Select(x => x.Name)).ToArray();

    var result = attributes.Where(x => x.ToLower().StartWith(term.ToLower()));

    return Json(result, JsonRequestBehavior.AllowGet);
}
...