我可以通过ajax访问在不同位置具有相同名称的控制器吗?

问题描述:

我在两个不同的位置有两个名为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

您可以在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 } 
     ); 
    } 
}