2013-10-09 11 views
10

Ich bin verrückt hier ... das scheint wie eine sehr einfache Aufgabe. Zunächst einmal kenne ich nur die Grundlagen der Web Api und MVC - also bitte spieß mich nicht auf.ASP.NET Web Api Controller Unterordner Routing

In dem Projekt muss ich Controller-Unterordner (für Organisationszwecke) logisch erstellen. Ich hatte das Gefühl, es war nicht so einfach wie ich dachte. Ich habe die Standardroute wie folgt:

config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 

Welche funktioniert wie es sollte direkt aus dem Ordner Controller in meinem Projekt. Ich habe einen Unterordner in den Controllern Ordner Controller/Berichte hinzugefügt. Ich habe ziemlich viel gesucht und kann einfach keine Lösung finden. Wie kann ich eine Route hinzufügen, die zum Unterordner führt? Ich habe versucht:

config.Routes.MapHttpRoute(
      name: "ReportingApi", 
      routeTemplate: "api/Reports/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 

und:

config.Routes.MapHttpRoute(
      name: "ReportingApi", 
      routeTemplate: "api/Reports/{id}", 
      defaults: new { controller = "userunit" id = RouteParameter.Optional } 
+0

Routing verwendet nicht das Dateisystem, es leitet zu Controller-Aktionen. –

+0

Aber müssen Sie nicht irgendwann einen Pfad angeben, wenn sich ein Controller in einem Unterordner befindet? Es findet nicht nur, dass es das tut? –

+0

Per Konvention sucht das Framework nach Controllern im Ordner 'Controller', aber darüber hinaus werden keine Pfade gesucht. Warum müssen Sie für jeden Controller einen Unterordner erstellen? Wenn Sie möchten, können Sie mit dem Routing experimentieren, um die URLs genau richtig zu bekommen, wenn Sie danach suchen. –

Antwort

3

Nevermind Ich bin ein Idiot ... Ich ließ die "Berichte" in der URL die Standard-Route in, entfernt. Es hat den Controller gefunden, obwohl er in einem Unterordner war.

+0

Ich habe das Gefühl, das wird Ärger auf der ganzen Linie verursachen. Was ist, wenn Sie zwei Controller mit identischem Namen haben, die durch die Verwendung von Unterordnern durch unterschiedliche Namespaces getrennt sind? Dies ist nur ein Versehen im WebApi-Design. – MoonStom