通过查询字符串

时间:2015-05-13 17:19:12

标签: c# asp.net-web-api model-binding

我已经阅读了很多关于为什么模型绑定不起作用的问题,但我的问题却恰恰相反。我很好奇:为什么在下面的GET操作中会出现与复杂对象的模型绑定,即使查询字符串中没有提供与任何对象属性匹配的数据?

路线配置:

configuration.Routes.MapHttpRoute(
    "Items- Get By Client ID",
    "clients/{id}/items",
    new
    {
        controller = "Item",
        action = "GetByClientId",
        constraints = new { id = @"\d+" }
    }
);

查询选项类:

public class QueryOptions
{
    public int Skip { get; set; }
    public int Take { get; set; }
}

动作:

[HttpGet]
public HttpResponseMessage GetByClientId(int id, [FromUri] QueryOptions queryOptions = null)
{
    // Operations
}

示例GET用例:/api/clients/1234/items

这导致// Operations发生的操作,具有queryOptions的非空实例化对象,具有属性的默认值。在这种情况下,Skip& Take0

我希望queryOptionsnull,除非在查询字符串中使用了这些属性名称,如下所示:/api/clients/1234/items?skip=0&take=5。有人可以解释这种行为吗?

0 个答案:

没有答案