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

Возможно ли в 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 был доступен для всех методов контроллера.

1 ответ

Решение

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

Более подробная информация на http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api

Другие вопросы по тегам