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

.NET 6 MVC中Ajax POST请求控制器Action返回404错误排查

解决MVC .NET 6中AJAX POST请求404错误的问题

核心问题分析

AJAX调用控制器Action时返回404、断点未触发,直接原因是请求URL格式错误,同时还存在返回类型与AJAX配置不匹配的问题。


具体解决方案

1. 修正AJAX请求的URL格式

MVC默认路由规则是 控制器名称/动作方法名称,你当前写的"GetThingsContaining/MyController"完全搞反了顺序,这是404的主要原因。建议使用根路径开头的绝对路径,避免相对路径带来的问题。

修正后的JavaScript代码:

function GetThingsContaining() { 
    $.ajax({
        type: "POST",
        url: "/MyController/GetThingsContaining", // 修正为正确的路由顺序
        data: { searchCriteria: "afd" },
        dataType: "html", // 改为html,因为Action返回的是PartialView(HTML内容)
        success: function (data) {
            // 示例:将返回的PartialView内容插入到页面指定元素中
            // $("#searchResultContainer").html(data);
        },
        error: function (xhr, status, error) {
            console.log("错误详情: " + error); // 用控制台日志更便于调试
            alert("Well that stinks");
        }
    }); 
}

2. 匹配返回类型与AJAX的dataType配置

你的Action返回的是PartialView(HTML格式的视图内容),但原AJAX代码设置了dataType: "json",这会导致请求成功后解析数据失败,必须改为dataType: "html"。

3. 验证控制器与Action的配置

确保控制器类命名正确(必须以Controller结尾,比如MyController),且Action的[HttpPost]特性正确:

public class MyController : Controller
{
    [HttpPost]
    public IActionResult GetThingsContaining(string searchCriteria)
    {
        // 补充returnModel的业务逻辑,例如从数据库查询数据
        var returnModel = new List<YourDataModel>(); // 替换为实际的模型类型
        return PartialView("~/Views/Investments/_SearchDataList.cshtml", returnModel);
    }
}

如果项目使用了属性路由,需要给Action添加路由特性:

[HttpPost]
[Route("MyController/GetThingsContaining")]
public IActionResult GetThingsContaining(string searchCriteria)
{
    // ...
}

4. 确认参数绑定有效性

当前的POST请求使用默认的表单编码格式(application/x-www-form-urlencoded),参数searchCriteria不需要额外添加[FromBody]特性,原代码的参数绑定方式是有效的。如果后续需要用JSON格式传参,才需要添加[FromBody]并在AJAX中设置contentType: "application/json"。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:25:23