Сообщение Ajax на странице ASP .NET 2.2 Razor выдает ошибку 404 - PullRequest
0 голосов
/ 03 апреля 2019

Я не могу заставить это работать с последней версией .NET Core 2.2 Razor. Я жестко запрограммировал URL, чтобы убедиться, что он правильный. Скрипт ajax находится в частичном представлении, но я проверил, чтобы переместить скрипт на главную страницу с тем же результатом 404.

$.ajax({
    type: 'POST',
    url: 'https://localhost:44349/Admin/Catalog/Products/Edit?handler=Filter&id=1',
    success: function (data) {
        alert("success");
    },
    error: function (xhr, textStatus, error) {
        alert(xhr.statusText);
    }
});

А вот мой обработчик:

public IActionResult OnPostFilter(int id)
        {
            return new JsonResult("test");
        }

Я отключил токен AntiForgery в автозагрузке, чтобы убедиться, что это не вызывает мою проблему:

    services.AddMvc().AddRazorPagesOptions(o =>
    {
        o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
    });

1 Ответ

0 голосов
/ 05 апреля 2019

404 означает, что URL неверен.

Razor Pages необходимо установить заголовок RequestVerificationToken при отправке запроса POST:

Добавить @Html.AntiForgeryToken() на ваш взгляд,затем измените свой AJAX, как:

$.ajax({
            type: 'POST',
            url: 'https://localhost:44349/Admin/Catalog/Products/Edit?handler=Filter',
            contentType: 'application/x-www-form-urlencoded',
            dataType:'json',
            data: {
                 id: 1                  
            },
            headers:
            {
                "RequestVerificationToken": $('input:hidden[name="__RequestVerificationToken"]').val()
            },
            success: function (data) {
                alert("success");
            },
            error: function (xhr, textStatus, error) {
                alert(xhr.statusText);
            }
        });
...