2013-10-09 3 views
10

Я схожу с ума здесь ... это кажется очень простой задачей. Во-первых, я знаю только основы Web Api и MVC, поэтому, пожалуйста, не напугайте меня.Маршрутизация подпапки ASP.NET Web Api Controller

В проекте мне нужно логически создавать подпапки контроллера (для целей организации). У меня было ощущение, что это не так просто, как я думал. У меня есть маршрут по умолчанию следующим образом:

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

Работает как следует непосредственно из папки контроллеров в моем проекте. Я добавил подпапку в контроллерах/контроллерах папок контроллеров/отчетов. Я искал довольно много и просто не могу найти решение. Как добавить маршрут, который будет направляться в подпапку. Я пробовал:

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

и:

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

Маршрутизация фактически не использует файловую систему, она направляется на действия контроллера. –

+0

Но разве вам не нужно в какой-то момент указать путь, если контроллер находится в подпапке? Он не просто находит, что он это делает? –

+0

По соглашению, структура ищет контроллеры в папке 'Controller', но помимо этого она не смотрит на пути. Зачем вам нужно создавать подпапку для каждого контроллера? Если вы хотите, вы можете играть с маршрутизацией, чтобы получить URL-адреса в самый раз, если это то, что вам нужно. –

ответ

3

Nevermind Я идиотка ... Я оставил маршрут по умолчанию в, удалила "Отчеты" в URL. Он нашел контроллер, хотя он был в подпапке.

+0

У меня такое чувство, что это вызовет проблемы на линии. Что делать, если у вас есть два одинаково названных контроллера, разделенных разными пространствами имен из-за использования подпапок. Это просто надзор в дизайне WebApi. – MoonStom

Смежные вопросы