2012-04-23 172 views
1

假設我有一個包含訂單和訂單詳細信息的應用程序。我試圖找出如何最好地設置架構,以便我可以檢索特定訂單的所有訂單細節。這似乎優雅,直觀地有一個URL結構是這樣的:在ASP.NET Web API中映射HTTP路由

http://example.com/api/orders/{orderid}/orderdetails 

我可以註冊在Global.asax中的路由:

System.Web.Routing.RouteTable.Routes.MapHttpRoute(
    name: "DefaultApi", 
    routeTemplate: "api/orders/{orderid}/orderdetails", 
    defaults: new { orderid = System.Web.Http.RouteParameter.Optional } 
); 

但我不能在OrdersController弄清楚什麼方法這個類映射到。上述路線在我的控制器類中所期望的方法簽名是什麼?據我所知,這甚至不是有效的,所以隨意推薦一種不同的方法。

回答

3

我知道它與以下工作。

Global.asax中的Application_Start:

System.Web.Routing.RouteTable.Routes.MapHttpRoute(
name: "DefaultApi", 
routeTemplate: "api/{controller}/{orderid}/{action}" 
); 

控制器類:

[ActionName("OrderDetails")] 
public IEnumerable<OrderDetail> GetOrderDetails(int orderId) 
{ 
// return data... 
} 
0

添加System.Web.Http.WebHost DLL參考到您的Web應用程序。謝謝。

+1

這不回答OP問題。他問他的路線映射到的OrdersController類中的哪個方法和簽名。 – keithm 2016-05-12 18:17:12