使用 Web API 时参数请求始终为空。我是否缺少使用强类型对象作为参数而不是简单类型作为参数的东西。
网址
http://localhost:2222/api/v1/divisions?EventId=30
Controller 操作
public virtual ApiDivisionsResponse Get(ApiDivisionsRequest request)
{
return _apiDivisionsService.GetDivisions(request);
}
对象
public class ApiDivisionsRequest : ApiAuthorizedRequest
{
public ApiDivisionsRequest()
{
Page = 1;
PageSize = 10;
}
public int EventId { get; set; }
public int PageSize { get; set; }
public int Page { get; set; }
public string[] Includes { get; set; }
}
最佳答案
我非常强烈地邀请您阅读 following article以更好地了解参数绑定(bind)在 Web API 中的工作原理。读完你就会明白,默认情况下,Web API 将查询字符串参数绑定(bind)到原始类型,并将请求正文内容绑定(bind)到复杂类型。
因此,如果您需要将查询字符串参数绑定(bind)到复杂类型,则需要通过使用 [FromUri]
修饰参数来覆盖此默认行为。范围:
public virtual ApiDivisionsResponse Get([FromUri] ApiDivisionsRequest request)
{
...
}
是的,我同意你的看法——这真是一团糟——模型绑定(bind)在普通的 ASP.NET MVC 中非常容易,他们在 Web API 中制造了一场噩梦。但是一旦你知道它是如何工作的,你就会避免陷阱。
关于asp.net-mvc-4 - ASP.NET MVC Web Api 获取未将 QueryString 映射到强类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12589988/