如何将用户 ID "inject"到我的模型请求中?



我的员工请求:

namespace API.Requests {
public class EmployeeRequest {
public string Name { get; set; }
...
}
public static class Extensions {
public static Employee ToEntity(this EmployeeRequest request) => new Employee {
Name = request.Name,
//UserId = ...
...
};
}

所以在我的控制器中我有:

[HttpPost]
public async Task<ActionResult> Poststring( [FromForm] EmployeeRequest request )
{
var employee = request.ToEntity();
return Ok(employee.UserId);
}

因此,我需要的是在ToEntity函数内部通过UserManager修改UserId字段,以便在执行ToEntity功能后得到的实体包括UserId。

谢谢!:D

所以,我需要的是在ToEntity函数中修改UserId字段,以便我要查找的实体执行ToEntity函数包括UserId。

只需尝试此代码:

public class HomeController : Controller
{
private readonly UserManager<IdentityUser> _userManager;
public HomeController(UserManager<IdentityUser> userManager)
{
_userManager = userManager;
}
[HttpPost]
public async Task<ActionResult> Poststring([FromForm] EmployeeRequest request)
{
var employee = await request.ToEntity(_userManager, User);
return Ok(employee.UserId);
}
}
public static class Extensions
{
public async static Task<Employee> ToEntity(this EmployeeRequest request,
UserManager<IdentityUser> _userManager, ClaimsPrincipal user) => new Employee
{
UserId = (await _userManager.GetUserAsync(user)).Id.ToString(), 
Name = request.Name,
};
}

最新更新