2012-07-05 9 views
8

ich kämpfe, um die Routing-Konfiguration notwendig, um herauszufinden, das folgende einfache Szenario zu unterstützen:MVC 4 Web API - Routen für zusammengesetzte Schlüssel

http..service/api/objects/key1/key2 

Ich fühle mich wie ich alles versucht habe.

Das größte Problem ist, dass, wenn es sieht aus wie ich es geknackt habe, finde ich, dass

http..service/api/objects/key1 

zum parameterlos geleitet wird IQueryable zu Holen.

Antwort

4

Ich denke, ich habe es genagelt.

routes.MapHttpRoute(
    name: IQueryableObjectsApiRouteName, 
    routeTemplate: "api/objects", 
    defaults: new { controller = "objects" } 
); 

routes.MapHttpRoute(
    name: ObjectsApiRouteName, 
    routeTemplate: "api/objects/{siteId}/{assetId}", 
    defaults: new { controller = "objects", siteId = "", assetId = "" } 
); 

Ich muss zwei explizite Routen zu jedem Controller mit zusammengesetzten Schlüsseln einrichten. Die Standardwerte für die Tasten sind "", die ich im Controller erfahre und meine eigenen 404 werfe.

Es funktioniert für mich. Ich kann jetzt zum Mittagessen gehen.

+0

könnten Sie Ihre Controller-Methode Parameter angeben? :) Ich würde gerne wissen, wie es mit Composite-Schlüssel aussieht – Roylee

+1

Sorry Roylee, ich habe diesen Vertrag/Client verlassen. Ich würde erwarten, dass es einfach "public" SomeModel Get (String SiteId, String AssetId) sein würde. –

+0

Es ist in Ordnung :) Ich hatte es :) Ja, Sie haben Recht – Roylee

Verwandte Themen