2016-07-15 44 views
0

我在兩個不同的位置有兩個名爲CommonController.cs的MVC控制器。這裏既是路徑的相對於根:我可以通過ajax訪問在不同位置具有相同名稱的控制器嗎?

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

當我試圖做一個AJAX調用第一公共控制器這是呈現一個問題。在AJAX調用的URL看起來是這樣的:

$.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',我不確定爲什麼你在URL中有'Controllers/Common',也許最好還提供你的路由配置以獲得更好的答案。 – 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 } 
     ); 
    } 
}