2014-11-08 2 views
0

У меня есть приложение на 100% javascript внутри моего проекта ASP.NET WebAPI. Это приложение использует все данные из моих методов API.Вызов контроллеров в разных папках в ASP.NET WebAPI

Теперь мне было предложено создать простой портал, созданный в Razor и HTML, также в моем проекте WebAPI (так, как проект MVC).

Таким образом, я создал папку под «Контроллеры» папку с именем «Портал», где Im размещая все мои портальные эксклюзивные контроллеры.

Вот контроллеры структуры папок:

enter image description here

Это моя Razor структура просмотров веб-приложение:

enter image description here

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

enter image description here

Я предполагаю, потому что у меня есть 2 CommonControllers, но 1 для обслуживания моего JavaScript Application а другой для моего приложения Portal.

Строка в моем Index.cshtml, что вызывает общие контроллеры является:

<div class="page-header page-header-blue"> 
    @Html.Action("Header", "Common") 
    <h1><i class="icon-bar-chart"></i> Dashboard</h1> 
</div> 

В моей WebApiConfig.cs У меня есть следующий веб-Api Маршрут:

config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{action}" 
      ); 

So I don't know how to tell it that I want to call CommonController that is under "Portal" folder.

Любой ключ или совет о том, как это сделать и о лучшей практике?

UPDATE:

У меня есть создать другой маршрут для моего портала контроллеров:

config.Routes.MapHttpRoute(
       name: "DefaultMvc", 
       routeTemplate: "portal/{controller}/{action}" 
      ); 

Похоже на работу, но в моем index.cshtml называет: @Html.Action("Header", "Common"), как я могу сказать действие вызвать Portal Common а не только Common?

+0

возможно дубликат [маршрута API Web игнорируется и обрабатывается MVC] (http://stackoverflow.com/questions/25184349/web-api-route-is-ignored-and-processing-by-mvc) –

+0

Прочтите решение возможного дубликата, но я не понимаю. – VAAA

+0

Я думал лучше создать другой веб-проект только для приложения портала. – VAAA

ответ

1

Я думаю, вы можете использовать области для своего дела.

public override void RegisterArea(AreaRegistrationContext context) 
{ 
    context.MapRoute(
     "Billing_default", 
     "Admin/{controller}/{action}/{id}", 
     new { action = "Index", id = UrlParameter.Optional } 
    ); 
} 

И вам необходимо обновить методу Application_Start

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
    RouteConfig.RegisterRoutes(RouteTable.Routes); 
    BundleConfig.RegisterBundles(BundleTable.Bundles); 
} 

Area in MVC 5 with example - step by step

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