2014-04-30 55 views
0

我想創建這樣的Owin的WebAPI的路由模板:前置前{}控制器自定義參數在ASP.NET的WebAPI路線

cfg.Routes.MapHttpRoute(
      "API Default", "{myparam}/{controller}/{action}", 
      new { id = RouteParameter.Optional }); 

因爲我已經定義控制器,該控制器選擇之前需要一個參數。

我試圖刪除參數並將其設置爲控制器上的RoutePrefixAttribute,但它不起作用。

{controller}必須是路由的第一個動態參數?

回答

1

我會使用某種形式的基於屬性的路由去基於{myparam}的不同控制器。

第一控制器:

[Route("param1/customer/{id}")] public IEnumerable<Order> GetOrdersByCustomer(int id) { ... }

第二個控制器:

[Route("param2/customer/{id}")] public IEnumerable<Order> GetOrdersByCustomer(int id) { ... }

更多信息可以在這裏找到:Attribute Based WebAPI Routing

+0

對不起,但{myparam}在編譯時並不知道,它是動態的(就像一個類別名稱,但它不是這樣的)。 –

+0

我會看看這裏然後,[路由與可選的第一個參數](http://stackoverflow.com/questions/8310815/asp-net-mvc-routing-with-optional-first-parameter) – Trisk

0

刪除RoutePrefix屬性,並設置動態的第一個參數你的行爲路線屬性就像例子如下:

[HttpGet, Route("{myparam}/books/{bookId:int:min(1)}")] 
public HttpResponseMessage Get(string myparam, int bookId) 
{ 
... 
} 
相關問題