You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Razor页面应用中Ajax上传文件返回400错误,求问题排查

Razor页面文件上传400错误排查修复

以下是可能导致400错误的原因及对应修复方案:

1. 防伪令牌验证失败

Razor页面默认强制验证AntiForgeryToken,你的JS中@GetAntiXsrfToken()可能未正确生成有效令牌。推荐改用页面内置的防伪令牌:

  • 在页面添加隐藏令牌输入:
@Html.AntiForgeryToken()
  • 修改JS中令牌获取方式:
headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() }

2. 表单默认提交行为未阻止

submit按钮点击后会触发表单默认提交,导致AJAX请求被干扰。修改如下:

  • 调整JS函数,阻止默认行为并添加空文件校验:
function showUploadResult(event) {
    event.preventDefault();
    var files = $('#myFile').prop("files");
    if (files.length === 0) {
        alert("请选择文件后再提交");
        return false;
    }
    var url = "/Index?handler=UploadCustomerSuccessBonus";
    var formData = new FormData();
    formData.append("CustomerSuccessBonus", files[0]);

    $.ajax({
        type: 'POST',
        url: url,
        data: formData,
        cache: false,
        contentType: false,
        processData: false,
        headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },
        success: function () {
            alert("上传成功");
        },
        error: function () {
            alert("上传出错");
        }
    });
    return false;
}
  • 更新按钮的onclick绑定:
<input type="submit" onclick="return showUploadResult(event)">

3. 参数匹配与后台逻辑补充

  • 确保FormData的键名CustomerSuccessBonus和后台方法参数名完全一致(大小写敏感),当前代码已匹配,但需避免拼写错误。
  • 后台可添加日志或判断,排查文件接收情况:
public IActionResult OnPostUploadCustomerSuccessBonus(IFormFile CustomerSuccessBonus)
{
    if (CustomerSuccessBonus != null && CustomerSuccessBonus.Length > 0)
    {
        // 此处添加文件处理逻辑
        return Page();
    }
    return BadRequest("未接收到有效文件");
}

内容的提问来源于stack exchange,提问作者Linda G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 11:05:42