Невозможно заставить AJAX / jquery-ненавязчиво работать в приложении Asp.Net Core. - PullRequest
0 голосов
/ 26 марта 2019

У меня есть приложение ASP.NET Core (.NET Core 2.1). Создан в Visual Studio 2017 15.9.4.

Кажется, что каждая попытка получить AJAX не удалась, и ненавязчивая проверка jquery также не работает. В файле _Layout.cshtml ниже есть ссылка на панель навигации <a asp-controller="Home" asp-action="DoSomething" data-ajax="true" data-ajax-method="POST">Do Something</a>, которую я пытался заставить работать. Метод полностью игнорируется, он всегда отправляется как GET, и он выполняет полную обратную передачу и переходит к Home / DoSomething, что я не думаю, что это должно делать. Метод контроллера просто возвращает Json(true) в настоящее время. Я также не вижу никаких ошибок JavaScript. Кто-нибудь понял, что мне не хватает?

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>My App</title>

    <link rel="stylesheet" href="~/lib/kendo-ui/styles/kendo.common.min.css" />
    <link rel="stylesheet" href="~/lib/kendo-ui/styles/kendo.metro.min.css" />
    <link rel="stylesheet" href="~/lib/kendo-ui/styles/kendo.metro.mobile.min.css" />

    <environment include="Development">
        <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.css" />
        <link rel="stylesheet" href="~/css/site.css" />
    </environment>
    <environment exclude="Development">
        <link rel="stylesheet" href="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/css/bootstrap.min.css"
              asp-fallback-href="~/lib/bootstrap/dist/css/bootstrap.min.css"
              asp-fallback-test-class="sr-only" asp-fallback-test-property="position" asp-fallback-test-value="absolute" />
        <link rel="stylesheet" href="~/css/site.min.css" asp-append-version="true" />
    </environment>

    <environment include="Development">
        <script src="~/lib/jquery/dist/jquery.js"></script>
        <script src="~/lib/jquery-validation/dist/jquery.validate.js"></script>
        <script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.js"></script>
        <script src="~/lib/bootstrap/dist/js/bootstrap.js"></script>
        <script src="~/js/site.js" asp-append-version="true"></script>
    </environment>
    <environment exclude="Development">
        <script src="https://ajax.aspnetcdn.com/ajax/jquery/jquery-3.3.1.min.js"
                asp-fallback-src="~/lib/jquery/dist/jquery.min.js"
                asp-fallback-test="window.jQuery"
                crossorigin="anonymous"
                integrity="sha384-tsQFqpEReu7ZLhBV2VZlAu7zcOV+rXbYlF2cqB8txI/8aZajjp4Bqd+V6D5IgvKT">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/jquery.validate/1.17.0/jquery.validate.min.js"
                asp-fallback-src="~/lib/jquery-validation/dist/jquery.validate.min.js"
                asp-fallback-test="window.jQuery && window.jQuery.validator"
                crossorigin="anonymous"
                integrity="sha384-rZfj/ogBloos6wzLGpPkkOr/gpkBNLZ6b6yLy4o+ok+t/SAKlL5mvXLr0OXNi1Hp">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/jquery.validation.unobtrusive/3.2.9/jquery.validate.unobtrusive.min.js"
                asp-fallback-src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"
                asp-fallback-test="window.jQuery && window.jQuery.validator && window.jQuery.validator.unobtrusive"
                crossorigin="anonymous"
                integrity="sha384-ifv0TYDWxBHzvAk2Z0n8R434FL1Rlv/Av18DXE43N/1rvHyOG4izKst0f2iSLdds">
        </script>
        <script src="https://ajax.aspnetcdn.com/ajax/bootstrap/3.3.7/bootstrap.min.js"
                asp-fallback-src="~/lib/bootstrap/dist/js/bootstrap.min.js"
                asp-fallback-test="window.jQuery && window.jQuery.fn && window.jQuery.fn.modal"
                crossorigin="anonymous"
                integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa">
        </script>
        <script src="~/js/site.min.js" asp-append-version="true"></script>
    </environment>

    <script src="~/lib/kendo-ui/js/kendo.all.min.js"></script>
    <script src="~/lib/kendo-ui/js/kendo.aspnetmvc.min.js"></script>
</head>
<body>
    <nav class="navbar navbar-inverse navbar-fixed-top">
        <div class="container-fluid">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#my-app-navbar-collapse" aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <a asp-controller="Home" asp-action="Index" class="navbar-brand">@ViewData["Title"]</a>
            </div>

            <div class="collapse navbar-collapse" id="my-app-navbar-collapse">
                <ul class="nav navbar-nav">
                    <li><a asp-controller="Home" asp-action="DoSomething" data-ajax="true" data-ajax-method="POST">Do Something</a></li>
                </ul>
            </div>
        </div>
    </nav>

    <div class="container-fluid body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; 2019 - Me</p>
        </footer>
    </div>

    @RenderSection("Scripts", required: false)
</body>
</html>

1 Ответ

0 голосов
/ 27 марта 2019

Кажется, что указанный вами jquery.validate.unobtrusive.js не работает. Я сделал тестовую демонстрацию, и она сработала хорошо. Сценарии jquery.unobtrusive-ajax, которые я использовал в _layout.cshtml

<environment include="Development">
    <script src="~/lib/jquery/dist/jquery.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.js"></script>
    <script src="~/lib/jquery-validation-unobtrusive/jquery.unobtrusive-ajax.js"></script>
</environment>

Вы можете скачать jquery.validate.unobtrusive.js из здесь и добавить его в свой wwwroot / lib / jquery-validation-unobtrusive

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