1

Я был так уверен, что делал это раньше, но я не могу заставить это работать..net Маршрутизация атрибутов WebApi с параметром коллекции

У меня есть веб-контроллер api 2, и я хочу иметь два метода.
Один, который принимает один идентификатор и возвращает один объект.
Один, который принимает несколько идентификаторов и возвращает коллекцию объектов.

Так что у меня есть что-то похожее на это:

[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 

я ожидал, чтобы быть в состоянии назвать второй метод с чем-то подобный этому, но, хотя метод и ударил, коллекция идентификаторов всегда равна нулю:

/products/foo/bar/?ids=1000&ids=1001&ids=1002 

Я пропустил что-то очевидное?

ответ

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); 
} 
+0

Thankyou! Извините за задержку, обозначающую ответ, я заболел. :( –