asp.net mvc 6 скрипт, помогающий вводить скрипт

jquery asp.net asp.net-mvc tag-helpers

735 просмотра

2 ответа

721 Репутация автора

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

 public override void Process(TagHelperContext context, TagHelperOutput output)
    {
        output.TagName = "div";
        output.TagMode = TagMode.StartTagAndEndTag;
        output.Content.AppendHtml("<input id='QuickFilter' autocomplete='on' class='form-control' />");
        output.Content.AppendHtml("<script type='text/javascript' src ='../js/autocomplete.js'></script>");
     }

autocomplete.js

$(document).ready(function () {
$("#QuickFilter").autocomplete({
    source: function (request, response) {
        $.ajax({
            url: "/PhoneChange/Autocomplete",
            type: "POST",
            dataType: "json",
            data: { Prefix: request.term },
            success: function (data) {
                response($.map(data, function (item, i) {
                    return {
                        label: item["clientName"] + " " + item["clientSurname"] + " " + item["clientPhone"],
                        value: item
                    };
                }))
            }
        })
    },
    messages: {
        noResults: "",
        results: function () { }
    },
    select: function (event, ui) {
        event.preventDefault();
        $("#OldPhoneNumber").val(ui.item.value["clientPhone"]);
        $("#AgreementId").val(ui.item.value["id"]);
        $("#QuickFilter").val(ui.item.label);
    }
});
});

Проблема в том, что когда мой помощник по тегам запущен и html генерируется в консоли, я получаю сообщение об ошибке

ReferenceError: $ не определено

Так что мой скрипт автозаполнения не может найти файл jquery.js, но asp.net автоматически добавил его, и когда я осматриваю страницу, я вижу файл jquery.js, но каким-то образом мой скрипт не может ... Может кто-нибудь предложить какое-либо решение для этого проблема?

Автор: Nikas Žalias Источник Размещён: 18.07.2016 09:05

Ответы (2)


0 плюса

1 Репутация автора

Возможно, путь к файлу сценария, который вы используете в вашем помощнике по тегам, является относительным. Вы должны использовать более конкретный путь, чтобы вы могли использовать помощника в любом представлении (см. Http://www.coffeecup.com/help/articles/absolute-vs-relative-pathslinks/ ).

<script type='text/javascript' src ='../js/autocomplete.js'></script>

должно быть как

<script type='text/javascript' src ='~/scripts/jquery/js/autocomplete.js'></script>

Так что любая страница находит ссылку. «~ /» означает, что это корень сайта.

Автор: Lucas Segers Размещён: 18.07.2016 11:55

0 плюса

1107 Репутация автора

Это может быть вызвано тем, что autocomplete.jsвключено ранее JQuery.

Макет бритвы asv.net mvc по умолчанию ( Views/Shared/_Layout.cshtml) включает файлы JavaScript в конце документа, как описано в следующем псевдокоде.

<html>
... content omitted ...
<body>
    @Content <!-- Actual content -->
    <script src="Jquery"></script>
    <script src="Site.js"></script>
</body>
</html>

Вот краткое обсуждение того, где включить скрипт на веб-странице.

Чтобы решить это, вы можете:

  • Переместите включение скриптов библиотеки в элемент head вверху страницы.
  • Запланируйте включение autocomplete.js, когда документ будет готов с помощью window.onload
Автор: Chedy2149 Размещён: 08.01.2017 01:40
Вопросы из категории :
32x32