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

首次使用.NET Core时无法通过Ajax POST请求调用控制器Action的问题求助

刚上手.NET Core遇到这种404问题太正常了,毕竟它和传统ASP.NET MVC在路由配置上有不少细节差异,我帮你梳理几个最可能的原因和解决办法:

1. 端点路由配置缺失(最常见原因)

.NET Core 3.0+默认使用端点路由,如果你的项目里没正确配置控制器路由,就会导致Action找不到。

检查你的Program.cs(.NET 6+)或者Startup.cs(.NET 5及更早):

  • 首先要确保已经添加了控制器服务:
    // Program.cs
    builder.Services.AddControllers();
    
  • 然后在中间件管道里启用控制器路由:
    // Program.cs
    app.UseRouting();
    
    // 两种方式二选一:
    app.MapControllers(); // 匹配属性路由或默认路由的控制器
    // 或者指定默认路由模板
    app.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}"
    );
    

2. 路由大小写敏感性坑

.NET Core路由默认是大小写敏感的(和传统MVC不一样)!你的Action方法名是mapContact(小写m),但如果用默认路由,要确保Ajax请求的URL大小写完全匹配:

var url = "/MapObjects/mapContact"; // 这里的mapContact要和方法名大小写一致

如果你的Action是PascalCase命名(比如MapContact),那URL就要改成/MapObjects/MapContact。

3. 用属性路由明确路径(最稳妥的方式)

如果不想纠结默认路由的规则,直接给Action加上属性路由,明确指定访问路径:

namespace myName.Controllers
{
    public class MapObjectsController : Controller
    {
        [HttpPost]
        [Route("MapObjects/mapContact")] // 明确路由路径
        public JsonResult mapContact()
        {
            Account account = new Account();
            return Json(account);
        }
    }
}

也可以给控制器加路由前缀,简化Action的路由:

[Route("[controller]")] // 前缀为控制器名
public class MapObjectsController : Controller
{
    [HttpPost("[action]")] // 路径为控制器名/方法名
    public JsonResult mapContact()
    {
        Account account = new Account();
        return Json(account);
    }
}

4. 静态HTML页面的路径问题

你是在普通HTML页面发起Ajax请求,不能用Razor的@Url.Action(这个是服务器端渲染语法,只有Razor视图能解析)。如果你的应用部署在子目录下,建议用window.location.origin拼接绝对路径,避免根路径错误:

var url = window.location.origin + "/MapObjects/mapContact";

5. 控制器扫描范围问题

确保你的MapObjectsController在Controllers命名空间下(或者已配置的扫描范围内),.NET Core默认只会扫描项目根目录下Controllers命名空间里的控制器,如果你的控制器在其他命名空间,需要在添加服务时指定:

builder.Services.AddControllers()
    .AddApplicationPart(typeof(MapObjectsController).Assembly);

按上面的步骤排查,大概率能解决你的404问题。如果还是不行,可以看看浏览器F12的网络请求里的完整URL,对比路由规则再调整~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 19:27:45