Маршрутизация атрибутов веб-API ASP.NET: RoutePrefix с параметром Route

Возможно ли в ASP.NET иметь атрибут RoutePrefix в ApiController, который содержит параметр маршрута?

[RoutePrefix("api/parent/{pid}/child")]
public class ChildController : ApiController
{
    [Route("")]
    public HttpResponseMessage Get(object pid)
    {
        //...
    }

    [Route("{cid}"]
    public HttpResponseMessage Get(object pid, object cid)
    {
        //...
    }
}

Я хотел бы, чтобы параметр pid был доступен для всех методов контроллера.


person Mackers    schedule 20.07.2015    source источник
comment
Мне удалось заставить это работать, если я ввожу параметр ( {pid:int} ) и входной параметр должен быть целым числом, а не объектом. Почему не работает как написано выше?   -  person Mackers    schedule 20.07.2015


Ответы (1)


Вы не можете использовать object в качестве типа параметра, потому что веб-API не знает, как преобразовать строку в объект. Вы должны использовать простой тип, такой как int, string, Guid и т. д. Если вы хотите использовать сложный тип, вы должны использовать атрибут FromUri или написать для него собственный преобразователь.

Дополнительные сведения о http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

person Kin    schedule 21.09.2015