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

C# ASP.NET MVC:.cshtml中Ajax无法向控制器传递数据

问题排查与解决

核心问题:Action方法名拼写错误

你的Ajax请求指向的Action是BulkParcelStatusUpdateSave,但控制器中定义的方法名是BuldParcelStatusUpdateSave(单词Bulk被误写为Buld,少了一个字母l)。这会导致请求找不到对应的Action方法,直接触发404错误,进入Ajax的error回调。

其他潜在问题及验证点

  • 参数绑定验证:当前Ajax设置了contentType: "application/json; charset=utf-8"且用JSON.stringify(obj)传递数据,这个配置符合ASP.NET模型绑定JSON数组的要求,修复方法名后应该能正常绑定到List<ParcelBulkUpdateSaveModel>。
  • 返回值处理:控制器返回空字符串,而success回调中执行data.split("|")虽不会直接报错,但如果后续逻辑依赖分割后的有效内容,建议返回符合预期格式的数据(比如"Success|NewStatus")。
  • 路由匹配:如果项目使用属性路由,需确保控制器或Action上的[Route]属性与请求URL匹配;若为传统路由,当前/控制器名/Action名的URL格式符合默认路由规则。

修复步骤

  1. 修改控制器方法名,与Ajax请求的URL保持一致:
[HttpPost]
public string BulkParcelStatusUpdateSave(List<ParcelBulkUpdateSaveModel> sentData)
{
    string returnString = "";

    foreach (var record in sentData)
    {
        _repo.BulkParcelStatusUpdateSave(record);
    }

    return returnString;
}
  1. 重新测试请求,此时应该能触发控制器的断点,正常处理数据。
  2. (可选)调整返回值格式,确保success回调中的split("|")能获取到有效数据。

内容的提问来源于stack exchange,提问作者Jonathan Small

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 12:52:27