Jquery Пользовательский интерфейс автозаполнения множественного выбора значений из базы данных - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь сделать множественный выбор, используя Jquery пользовательский интерфейс со следующим кодом,

Проблема: Я пытался получить данные из базы данных, используя JsonResult, но по какой-то причине скрипт json в view не может прочитать список в отличие от его жестко запрограммированного в массиве, который обрабатывается плавно.

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

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

Любая помощь приветствуется!

C# контроллер:

    public JsonResult GetEmp(string term)
    {
        MyDatabaseContext db = new MyDatabaseContext();   
            List<string> emp;
        emp= db.users.Where(user => user.PrimaryID.StartsWith(term)).Select(y => y.PrimaryID).ToList();
            return Json(emp, JsonRequestBehavior.AllowGet);
    }

Просмотр:

        <div class="form-group">
            @Html.LabelFor(model => model.emp, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">

                @Html.EditorFor(model => model.emp, new { htmlAttribute3424434e c324es = new { @class = "form-control", @id = "tags" } })
                @Html.ValidationMessageFor(model => model.emp, "", new { @class = "text-danger", @id = "tags" })

            </div>
        </div>

        <script>
        $(function () {
      var availableTags = '@Url.Action("GetEmp")'
            function split(val) {
                return val.split(/,\s*/);
            }
            function extractLast(term) {
                return split(term).pop();
            }
            $("#tags")
                // don't navigate away from the field on tab when selecting an item
                .on("keydown", function (event) {
                    if (event.keyCode === $.ui.keyCode.TAB &&
                        $(this).autocomplete("instance").menu.active) {
                        event.preventDefault();
                    }
                })
                .autocomplete({
                    minLength: 0,
                    source: function (request, response) {
                        // delegate back to autocomplete, but extract the last term
                        response($.ui.autocomplete.filter(
                            availableTags, extractLast(request.term)));
                    },
                    focus: function () {
                        // prevent value inserted on focus
                        return false;
                    },
                    select: function (event, ui) {
                        var terms = split(this.value);
                        // remove the current input
                        terms.pop();
                        // add the selected item
                        terms.push(ui.item.value);
                        // add placeholder to get the comma-and-space at the end
                        terms.push("");
                        this.value = terms.join(", ");
                        return false;
                    }
                });
        });
        </script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...