Автозаполнение в C# с помощью typeahead не работает


Моя функция JS

<script type="text/javascript">
        $(function () {
            $("#pName").autocomplete({
                source: '@Url.Action("GetExistingProducts")'
            });
        });
</script>

ID #pName - это идентификатор текстового поля, которое находится в модальном .

Моя GetExistingProducts функция в контроллере

public IEnumerable<string> GetExistingProducts()
{
    return _traceProjectService.GetAllProducts();
}

Это делает вызов GetAllProducts() в моей службе

public IEnumerable<string> GetAllProducts()
{
      var productList = myContext.Projects.Select(x =>x.ProductName).ToList();
      return productList;    
}

Выпуск:

Моя функция JS не показывает существующие продукты, когда я начинаю печатать в своем текстовом поле.

Ссылки:

  1. http://jqueryui.com/autocomplete/

Был бы признателен, если бы кто-нибудь рассказал мне что я делаю неправильно. Спасибо.

1 3

1 ответ:

Попробуйте это:

<script src="~/Scripts/bootstrap3-typeahead.js"></script>

<script>

    $.ajax({
        url: '@Url.Action("GetExistingProducts", "Admin")',
        type: "GET"
    }).done(function(dt) {
        var res = dt.split(",");
        $(".pText").typeahead({
            source: res,
            showHintOnFocus: "all",
            fitToElement: true
        });
    });
    $.ajax({
        url: '@Url.Action("GetExistingVersions", "Admin")',
        type: "GET"
    }).done(function(dt) {
        var res = dt.split(",");
        $(".vText").typeahead({
            source: res,
            showHintOnFocus: "all",
            fitToElement: true
        });
    });


</script>

На стороне контроллера

public string GetExistingProducts()
        {
            var x = yourservice.function().toList();
            string a = string.Empty;
            foreach (var item in x)
            {
                a += item + ",";
            }

            return a;


        }