2012-10-09 9 views
5

में एकाधिक नियंत्रक मुझे लंगड़ा सवाल हो सकता है, लेकिन मैं एक यूआरएल में एकाधिक नियंत्रकों के रूटिंग के साथ थोड़ा सा संघर्ष कर रहा हूं। तो मेरे सवाल है कि कैसे इस तरह एक यूआरएल के साथ काम करने के लिए है:रूटिंग

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

जहां अंततः device और parameters सभी नियंत्रकों और नंबर दिए गए हैं आईडी है। मेरे पास उनमें से प्रत्येक के लिए नियंत्रक हैं लेकिन उन्हें कैसे संसाधित करते हैं, उन्हें उचित नियंत्रक तक पहुंचाते हैं?

कोई भी दिशा देखने के लिए?

अद्यतन:
बस स्पष्टीकरण समाधान जो मैं का उपयोग कर समाप्त हो गया और नीचे इस सवाल का जवाब इस प्रकार के लिए।

रूटिंग स्निपेट:

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

नियंत्रक स्निपेट:

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

और अंत यूआरएल:

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

उत्तर

8

मैं एक smilar की आवश्यकता के साथ अभी काम कर रहा हूँ और मैं निम्नलिखित है मार्ग संरचना:

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 }); 
} 

मुझे लगता है कि आप यह समझ सकते हैं कि आप इस पर आधारित कैसे अपना कार्यान्वित कर सकते हैं।