Маршрутизация атрибутов веб-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