模型绑定Asp net core 2.2

Model binding Asp net core 2.2

我有以下复杂模型:

public class User
    {
        public int Id { get; set; }

        public string UserName { get; set; }

        public int UserId { get; set; }
    }

我需要使用 [FromBody] 在我的操作方法中绑定整个模型,而 Id 属性 应该是 [FromQuery]。我的操作方法如下所示:

public IActionResult Delete([FromBody]User userRequest)
{
    // Some code
}

问题是我无法更改模型,因为它是第 3 方,而且我不能将 Id 作为操作方法中的第二个参数,因为我有验证逻辑对于 userRequest 我需要 Id。有什么想法吗?

使用 DTO/view 模型并映射到 User。例如:

public class UserDTO
{
    public string UserName { get; set; }
    public int UserId { get; set; }
}

然后:

public IActionResult Delete(int id, [FromBody]UserDTO userRequest)
{
    var user = new User
    {
        Id = id,
        UserName = userRequest.UserName,
        UserId = userRequest.UserId
    }

    // do something
}