2012-10-09 52 views
5

Es posible que tenga una pregunta coja, pero estoy luchando un poco con el enrutamiento de varios controladores en una sola URL. Así que mi pregunta es cómo trabajar con una URL como esta:Múltiples controladores en el enrutamiento

GET http://foo.com/API/Devices/2/Parameters/2 

donde finalmente device y parameters son todos los controladores y los números son identificadores. Tengo controladores para cada uno de ellos, pero ¿cómo procesarlos, enrutarlos al controlador adecuado?

¿Alguna dirección para mirar?

ACTUALIZACIÓN:
Sólo una aclaración de la solución que Acabé usando y sigue la respuesta a continuación.

enrutamiento fragmento:

config.Routes.MapHttpRoute(
      name: "DeviceCommandsControllerHttpRoute", 
      routeTemplate: "api/devices/{deviceId}/commands/{id}", 
      defaults: new { controller = "devicecommands", id = RouteParameter.Optional } 
     ); 

controlador fragmento:

[HttpGet] 
public DeviceCommand GetById(int id, int deviceId) 
    { ... } 

y finalmente la URL:

GET http://localhost:49479/api/Devices/2/Commands/1 

Respuesta

8

estoy trabajando con una necesidad smilar en este momento y tengo el siguiente estructura de ruta:

public static void RegisterRoutes(HttpRouteCollection routes) { 

    routes.MapHttpRoute(
     "UserRolesHttpRoute", 
     "api/users/{key}/roles", 
     new { controller = "UserRoles" }); 

    routes.MapHttpRoute(
     "AffiliateShipmentsHttpRoute", 
     "api/affiliates/{key}/shipments", 
     new { controller = "AffiliateShipments" }); 

    routes.MapHttpRoute(
     "ShipmentStatesHttpRoute", 
     "api/shipments/{key}/shipmentstates", 
     new { controller = "ShipmentStates" }); 

    routes.MapHttpRoute(
     "AffiliateShipmentShipmentStatesHttpRoute", 
     "api/affiliates/{key}/shipments/{shipmentKey}/shipmentstates", 
     new { controller = "AffiliateShipmentShipmentStates" }); 

    routes.MapHttpRoute(
     "DefaultHttpRoute", 
     "api/{controller}/{key}", 
     new { key = RouteParameter.Optional }); 
} 

Creo que puede averiguar cómo puede implementar la suya basándose en esto.

Cuestiones relacionadas