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

ASP.NET Core MVC中如何获取登录用户ID并通过AJAX提交?

解决方案

方法1:直接通过Razor语法注入用户ID到JS变量

替换你代码里的var CreatedUserId=@User这一行,用Razor直接获取登录用户的ID并赋值给JS变量:

var CreatedUserId = '@User.FindFirstValue(System.Security.Claims.ClaimTypes.NameIdentifier)';

接着把这个ID添加到要提交的对象中:

// 在构建VehicleLoginCreate对象的代码后添加这一行
VehicleLoginCreate.CreatedUserId = CreatedUserId;

方法2:用隐藏输入字段存储用户ID

在你的AddModal模态框里添加一个隐藏输入框:

<input type="hidden" id="createdUserId" value="@User.FindFirstValue(System.Security.Claims.ClaimTypes.NameIdentifier)" />

然后在JS中读取这个字段的值:

var CreatedUserId = $('#AddModal #createdUserId').val();
VehicleLoginCreate.CreatedUserId = CreatedUserId;

后端接收处理

确保你的VehicleLoginCreate模型类包含对应属性:

public class VehicleLoginCreate
{
    // 保留原有所有属性
    public string CreatedUserId { get; set; }
    public List<ItemLoadModel> ItemLoadModels { get; set; }
}

你的AddVehicleLogin接口直接接收模型即可拿到用户ID:

[HttpPost]
public IActionResult AddVehicleLogin(VehicleLoginCreate model)
{
    // 这里model.CreatedUserId就是执行操作的登录用户ID,直接用于数据库记录
    // 执行插入逻辑...
    return Ok();
}

注意事项

  • 必须确保用户已通过ASP.NET Core身份认证系统登录(比如Identity、JWT),否则User.FindFirstValue会返回null。
  • 如果你的用户ID是整数类型,需要把JS中的值转为数字:var CreatedUserId = parseInt('@User.FindFirstValue(ClaimTypes.NameIdentifier)');

内容的提问来源于stack exchange,提问作者Sefa Köse

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:24:26