ASP.NET CORE 2.1 - FromQuery不起作用?

问题描述 投票:0回答:1

我有用于捕获所有参数的类:

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);
}    

虽然我的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);
}

我试图用Postman调试代码:http://localhost:5000/api/user?isManagers=1http://localhost:5000/api/user?isManagers=true

但似乎params isManagers仍然是假的(结果仍然得到所有用户)

如何解决这个错误?

c# asp.net-core asp.net-core-webapi
1个回答
0
投票

您是否尝试将FromQuery属性放在类的每个属性上?

像这样:

public class UserParams
{
    private const int MaxPageSize = 50;
    [FromQuery] 
    public int PageNumber { get; set; } = 1;

    Etc
}
© www.soinside.com 2019 - 2024. All rights reserved.