成功执行 OnPost() 后 POST 返回 400 (RazorPages)

230丹尼尔

我在 asp.net 核心中使用 RazorPages。

当我使用 jQuery/Ajax 创建对 RazorPage 的发布请求时,OnPost() 方法运行没有错误,并且响应状态代码设置为 200。

HttpContext.Response.StatusCode = 200;

在 Chrome 控制台中,我的请求返回了错误代码 400,并带有消息“无法加载资源”。错误来源的链接将我引导至VM6.js,第 38 行。

VM6.js 截图

类似的代码适用于另一个 RazorPage,所以我认为它可能试图呈现我的页面 (.cshtml) 并出错。我通过在加载 cshtml 文件时输出到控制台来证明这个理论是错误的,并且在发出 POST 请求时我没有得到这个输出。

这是用于提交表单的工作页面和损坏页面共享的 Javascript:

$("[name|='form']").submit(function() {
    var formData = $(this).serialize();
    $.ajax({
        type: "POST",
        data: formData,
        success: function() {
            $("#success").toast("show");
        },
        error: function(xhr) {
            if (xhr.status == 429) {
                $("#ratelimit").toast("show");
            } else {
                $("#error").toast("show");
            }
        }
    });
    return false;
});

如何确保我的网络服务器返回代码 200 而不是 400?

230丹尼尔

要修复 400 错误,我需要在表单中包含 method="post"。这意味着包含验证令牌并且不会引发错误。

因为我的页面包含 C# 代码,如果未事先调用 OnGet() 方法会引发错误,这会在每次发布请求后导致 500 错误,尽管页面未加载。

if(~~~ == null) return;在我的 cshtml 顶部添加了它,现在它似乎可以工作了。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章