我很确定我以前做过这个,但我无法让它发挥作用。
我有一个web api 2控制器,我想有两种方法 一个获取一个ID并返回一个对象 一个获取多个ID并返回一组对象。
所以我有类似的东西:
[RoutePrefix("products/{company}/{dept}")]
public class ProductsController : ApiController
{
[Route("{id:int}")]
public async Task<IHttpActionResult> Get(string company, string dept, int id)
{
// this method works OK.
...
return this.Ok(product);
}
[Route("")]
public async Task<IHttpActionResult> Get(string company, string dept, IEnumerable<int> ids)
{
// ids is always null, so this method fails.
...
return this.Ok(products);
}
}
我可以通过以下方式调用第一种方法:
/products/foo/bar/1000
我希望能用这样的方法调用第二个方法,但是虽然方法被命中,但是ids集合总是为null:
/products/foo/bar/?ids=1000&ids=1001&ids=1002
我错过了一些明显的东西吗?
答案 0 :(得分:1)
您只需在参数前添加[FromUri]
。
[Route("")]
public async Task<IHttpActionResult> Get(string company, string dept, [FromUri] IEnumerable<int> ids)
{
// ids now are filled with data ;)
...
return this.Ok(products);
}