2011-12-16 3 views
0

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

Что я делаю неправильно?

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

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

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); 
} 
+0

эта ссылка не работает – Beginner

+0

Уверенный, что нет. Я только что построил ссылку, которую вы должны ожидать при каждом вызове ajax из автозаполнения на ваш сервер. – Samich

+0

На самом деле вам не нужно ничего менять в своем javascript. вам нужно изменить действие. – Samich

Смежные вопросы