我已经阅读了很多关于为什么模型绑定不起作用的问题,但我的问题却恰恰相反。我很好奇:为什么在下面的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
& Take
是0
。
我希望queryOptions
为null
,除非在查询字符串中使用了这些属性名称,如下所示:/api/clients/1234/items?skip=0&take=5
。有人可以解释这种行为吗?