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
相关产品推荐
相关产品推荐

