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

如何编写fetch POST请求,将对象传递给预期接收对应对象的C#方法

问题排查及修复方案

核心问题修复

1. 后端接口修正

你现有后端接口存在多个导致路由无法匹配的致命问题:

  • 动作方法访问修饰符为private,仅支持类内部调用,必须改为public才能被ASP.NET Core路由系统识别
  • 参数没有指定绑定来源,和前端提交的格式无法匹配
  • 原代码存在大括号语法错误,需修正

修正后代码示例:

[HttpPost]
[Route("ResetPassword")]
public void ResetPassword([FromBody] Player player)
{
    // 你的业务逻辑
}

注:请确认Player类中存在与提交字段匹配的Email公共属性

2. 前端请求修正

你现有代码用FormData封装JSON属于冗余操作,直接提交JSON格式数据即可和后端绑定规则匹配,同时新增错误捕获方便定位问题:

const continueBtn = document.getElementById("continueBtn");
continueBtn.onclick = () => {
    const email = document.getElementById("lblEmail").innerHTML;
    sendResetEmail(email);
}

async function sendResetEmail(email) {
    try {
        const payload = {
            email: email
        }
        let response = await fetch(`/ResetPassword`,
        {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(payload)
        });
        // 打印响应状态方便排查
        if (!response.ok) {
            console.error('请求异常,状态码:', response.status);
        }
    } catch (err) {
        console.error('请求发送失败:', err);
    }
}

如果业务场景必须使用FormData提交,可将后端参数改为[FromForm] string json,收到后自行反序列化为Player对象即可

通用端点无法访问排查步骤

  • 打开浏览器F12开发者工具,切换到「网络」面板,触发请求后查看请求状态码:
    • 状态码404:检查路由配置、控制器是否继承ControllerBase/Controller、接口Route特性与请求路径是否匹配、控制器是否配置了路由前缀
    • 状态码400:查看响应体的错误提示,一般为参数绑定失败,检查提交的字段名称、类型是否和后端模型匹配,是否遗漏必填字段
    • 状态码500:后端代码执行报错,查看服务端日志或响应体的错误详情定位问题
  • 如果你启用了鉴权中间件,确认当前请求携带了有效的鉴权凭证,否则会被中间件直接拦截,不会进入你的接口方法
  • 确认后端服务正常启动,请求的域名/端口和后端服务监听地址一致

内容的提问来源于stack exchange,提问作者AJ Jones

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 20:15:03