2015-09-02 189 views
0

我只是有一個關於ASP.NET Web API屬性路由似乎受到限制的簡單問題,但希望我只是在研究。在我的控制,我試圖做這樣的事情:ASP.NET WebAPI 2路由

public class OrdersController : ApiController 
{ 
    [HttpGet] 
    [Route("{apiRoot}/customers/{id:int}/orders")] 
    public IHttpActionResult GetCustomerOrders(int id) {...} 
} 

{apiRoot}在任何一個配置文件定義。

這可能實際上並不是必須的,但我想知道如何在路由屬性中放置特定路徑,而不必編寫靜態路徑。這裏的一般想法是否應該只是將文本放入路徑路徑中,除了參數{}

回答

0

如何切換到使用RoutePrefix:

[MyRoutePrefix] 
public class OrdersController : ApiController 
{ 
    [HttpGet] 
    [Route("customers/{id:int}/orders")] 
    public IHttpActionResult GetCustomerOrders(int id) {...} 
} 

public class MyRoutePrefixAttribute : RoutePrefixAttribute 
{ 
    public MyRoutePrefixAttribute() 
    { 
     Prefix = "the route prefix"; 
    } 
} 

RoutePrefixAttribute不密封像RouteAttribute所以擴展它應該讓你做你需要什麼。當然,假設單個類中的所有控制器都使用相同的根路徑。

注:我沒有機會嘗試這個,但根據我所知道的屬性路由,我不明白爲什麼它不應該工作。

+1

原來,僅使用RoutePrefix屬性本身效果很好。我不想繼承RoutePrefix,只是用屬性和路徑裝飾類很好。我可能可以通過繼承來修復它,但只是使用RoutePrefix工作正常。 感謝您的回答! – PSGuy