2016-07-15 1 views
0

У меня есть 2 контроллера MVC с именем CommonController.cs в двух разных местах. Вот оба пути относительно корня:Могу ли я получить доступ к контроллеру с тем же именем в другом месте через ajax?

  1. /Controllers/CommonController.cs
  2. /CDS/Controllers/CommonController.cs

Это представляет проблему, когда я пытаюсь сделать AJAX вызов первого общего регулятора. URL в вызове Ajax выглядит следующим образом:

$.ajax({ 
      cache: false, 
      method: 'GET', 
      dataType: 'json', 
      url: ROOT_URL + 'Common/GetCountries', 
      data: { }, 
//more code 

Есть ли способ открыть контроллер и по-прежнему сохранить тот же имя контроллера в другом месте, или я должен переименовать один из контроллеров?

+1

С помощью переименования ваша жизнь станет проще. В противном случае попробуйте изменить настройки маршрута, чтобы назначить другой URL-адрес одному из контроллеров. – Ian

+0

Я предлагаю вам поставить ваш второй контроллер в Районе. Затем вы можете изменить отображение маршрута, чтобы он работал. – Maxime

+0

Переименуйте его или настройте маршрутизацию так, чтобы имя маршрута было другим. По умолчанию url будет 'controllerName/actionName/parameters', я не уверен, почему у вас есть' Controllers/Common' в url, возможно, было бы лучше также предоставить конфигурацию маршрутизации, чтобы получить лучший ответ. – Igor

ответ

3

Вы можете вручную добавить свой путь к контроллеру в класс RouteConfig.cs. Если вы объявите оба контроллера, то он легко найдет.

Вы можете внести некоторые изменения в RouteConfig.cs, как указано ниже. Надеюсь, это поможет вам.

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Country", 
      url: "/Controllers/Index", 
      defaults: new { controller = "CommonController", action = "Index", id = UrlParameter.Optional } 
     ); 

     routes.MapRoute(
      name: "State", 
      url: "/CDS/Controllers/Details/5", 
      defaults: new { controller = "CommonController", action = "Details", id = UrlParameter.Optional } 
     ); 
    } 
} 
Смежные вопросы