Два jQuery «идентичных» текстовых поля автозаполнения, но работает только одно - PullRequest
0 голосов
/ 24 декабря 2009

У меня есть два текстовых поля автозаполнения jQuery на веб-странице mvc. Один, который возвращает список вопросов, и другой, который возвращает список тегов.

Текстовое поле вопросов работает отлично, но текстовое поле тегов отправляет только пустую строку своему контроллеру.

JQuery Javascript является точным соответствием, кроме Url. Действие, нерабочий отображается ниже:

<script type="text/javascript">
    $(document).ready(function() {
        $('#searchTag').autocomplete('<%= Url.Action("AutoComplete", "Tags") %>', {
            dataType: 'json',
            parse: function(data) {
                var rows = new Array();
                for (var i = 0; i < data.length; i++) {
                    rows[i] = { data: data[i], value: data[i].Name, result: data[i].Name };
                }
                return rows;
            },
            formatItem: function(row) {
                return row.Name;
            },
            delay: 40,
            autofill: true,
            selectFirst: false,
            highlight: false,
            multiple: true,
            multipleSeparator: ";"
        });
    });
</script>

Контроллер тегов вызывается и возвращает данные Json правильно, поскольку я жестко закодировал строковый параметр 'b' в метод LookUpTag, чтобы убедиться, но строковый параметр t для автозаполнения всегда равен нулю.

    public ActionResult AutoComplete(string t)
    {
        IQueryable<Tag> searchResults = tagRepository.LookUpTag("b");

        var data = (from searchResult in searchResults
                    select new { Id = searchResult.ID, Name = searchResult.Name }).ToList();
        return Json(data);
    }

Есть ли логическая причина для этого?

Ответы [ 2 ]

1 голос
/ 24 декабря 2009

Единственное, что я вижу, это то, что ваш параметр в вашем действии называется t. Если вы используете этот плагин автозаполнения , то похоже, что значение поиска будет отправлено через параметр строки запроса с именем q (то есть он будет запрашивать URL-адрес, такой как .../Tags/AutoComplete?q=b). Затем MVC попытается сопоставить этот параметр строки запроса с параметром в вашем действии, также называемым q.

Так что это может быть такое же простое исправление, как изменение подписи действия на:

public ActionResult AutoComplete(string q)
1 голос
/ 24 декабря 2009
$('#searchTag')

Поиск идентификатора возвращает только один элемент. Попробуйте использовать имя класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...