Ajax发布到ASP .NET 2.2 Razor页面给出404错误

时间:2019-04-03 02:34:38

标签: asp.net-core razor asp.net-core-mvc

我似乎无法使它与最新的.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 :(得分:0)

404表示网址不正确。

剃须页在发送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);
            }
        });