2012-04-23 123 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