C# ASP.NET核心2.1-FromQuery不起作用?

C# ASP.NET核心2.1-FromQuery不起作用?,c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,我有捕获所有参数的类: public class UserParams { private const int MaxPageSize = 50; public int PageNumber { get; set; } = 1; private int pageSize = 10; public int PageSize { get { return pageSize;} set { pageSize = (value &g

我有捕获所有参数的类:

public class UserParams
{
    private const int MaxPageSize = 50;
    public int PageNumber { get; set; } = 1;
    private int pageSize = 10;
    public int PageSize
    {
        get { return pageSize;}
        set { pageSize = (value > MaxPageSize) ? MaxPageSize : value;}
    }

    public int UserId { get; set; }        
    public string OrderBy { get; set; }
    public bool isAll {get; set;} = true; 
    public bool isManagers { get; set; } = false;
    public bool isPartners { get; set; } = false;
}
和我的控制器:

[HttpGet]
public async Task<IActionResult> GetUsers([FromQuery] UserParams userParams)
{
    var users = await _appRepo.GetUsers(userParams);
    var usersDto = _mapper.Map<IEnumerable<UserSimpleDto>>(users);
    Response.AddPagination(users.CurrentPage, users.PageSize, users.TotalCount, users.TotalPages);
    return Ok(usersDto);
}    
[HttpGet]
公共异步任务GetUsers([FromQuery]UserParams UserParams)
{
var users=await_appRepo.GetUsers(userParams);
var usersDto=\u mapper.Map(用户);
Response.AddPagination(users.CurrentPage、users.PageSize、users.TotalCount、users.TotalPages);
返回Ok(usersDto);
}    
而我的appRepo.GetUsers:

public async Task<PagedList<User>> GetUsers(UserParams userParams)
{
    var users = _context.Users.OrderByDescending(p => p.FirstName).AsQueryable();
    if(userParams.isManagers)
    {
        users = users.Where( u => u.IsManager == true);
    }

    if(userParams.isPartners)
    {
        users = users.Where( u => u.IsPartner == true);
    }

    return await PagedList<User>.CreateAsync(users, userParams.PageNumber, userParams.PageSize);
}
public异步任务GetUsers(UserParams UserParams)
{
var users=_context.users.OrderByDescending(p=>p.FirstName).AsQueryable();
if(userParams.isManagers)
{
users=users.Where(u=>u.IsManager==true);
}
if(userParams.isPartners)
{
用户=用户。其中(u=>u.IsPartner==true);
}
返回wait PagedList.CreateAsync(users,userParams.PageNumber,userParams.PageSize);
}
我试图用Postman调试代码: 或

但是似乎params isManagers仍然是false(结果仍然是get all users)


如何修复此错误?

可能重复的错误请参见此。基本上,
FromQuery
只适用于内置的现成类型。如果你想做你所拥有的,你需要做一个定制的模型绑定器。我在我的课程中看到了一个例子,angular使用httpclient发送数据,并使用httpparams作为用户参数。他们用这种方式捕获dotnetcore中的userparam。但我不知道如何使用postman测试它。@Nightingal2K1您的代码对我来说很好。另外,您的方法名为GetUsers,为什么在Postman调用中只使用“user”?@AlexRiabov因为我的控制器:[Route(“api/[controller]”])]公共类UserController:controller,所以每次我调用/api/user时,它都会使用HtttpGet调用方法,尽管我将其命名为GetUsers