http get方法的参数中对象的属性始终为0

时间:2017-12-22 13:36:32

标签: c# asp.net asp.net-web-api asp.net-core http-get

我正在为此项目使用.net core 2.0。

我目前有一个简单的http get方法来搜索对象。由于我想为参数添加分页,我添加了一个分页对象。

问题是每次调用方法时,分页对象都有默认值(对于限制和偏移总是0)

我尝试了几种选择,但没有一种可行。我会发布我的代码以显示我的问题。

控制器方法如下所示:

[HttpGet]
[Route("searchByName")]
public async Task<IActionResult> SearchByName(string searchText, [FromQuery] Paging paging)
{
    // Searching and returning results
}

分页对象如下所示:

[DataContract]
public class Paging
{
    public Paging()
    {
    }

    public Paging(int offset, int limit)
    {
        Limit = limit;
        Offset = offset;
    }

    [FromQuery(Name = "Limit")]
    public int Limit { get; }
    [FromQuery(Name = "Offset")]
    public int Offset { get; }
}

每次使用swagger UI调用方法时,限制和偏移量始终为0.

Example swagger call

这是调试时进入方法的原因:

enter image description here

我忘记了什么吗?我总是可以将参数更改为两个整数,但我更喜欢使用如上所示的对象。如果我忘记添加内容,请告诉我!

1 个答案:

答案 0 :(得分:2)

为属性恢复set;

如果从提供的数据创建了一个新的Paging实例,但由于属性值未在空构造函数中设置,并且不可设置,因此它们仍然是默认值。