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

AJAX调用ASP.NET Core控制器GET方法无法接收Id参数问题咨询

问题根本原因

你构造请求URL时使用的路由参数名与控制器方法接收的参数名不匹配,导致ASP.NET Core模型绑定无法正确映射参数:

  • @Url.Action 中你传入的路由参数为 new {id=user.UserId },最终生成的请求URL带的参数为 ?id=xxx
  • 但控制器 Manage 方法的入参命名为 string userId,二者名称不一致,绑定失败就会返回null值

你之前用 asp-route-UserId 写法可以正常运行,就是因为参数名和控制器入参完全对齐,所以绑定正常。


修复方案(二选一即可)

方案1:修改Url.Action的路由参数名和控制器入参对齐

调整按钮中Url.Action的参数名,把id改成userId:

<a class="btn btn-primary" onclick="manageRolePopup('@Url.Action("Manage","Role", new {userId=user.UserId },Context.Request.Scheme)')">Manage Roles</a>

方案2:修改控制器方法的入参名和URL参数对齐

调整控制器方法的入参名,把userId改成id:

[HttpGet]
public async Task<IActionResult> Manage(string id)
{
    var user = await _userManager.FindByIdAsync(id);
    // 其余原有逻辑无需改动
}

排查小技巧:点击按钮时打开浏览器F12开发者工具的「网络」标签,查看对应AJAX请求的完整URL,就能直观看到携带的参数名和值,快速定位不匹配问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 01:36:00