Javascript 我可以通过ajax访问位于不同位置的同名控制器吗?

Javascript 我可以通过ajax访问位于不同位置的同名控制器吗?,javascript,c#,jquery,ajax,asp.net-mvc,Javascript,C#,Jquery,Ajax,Asp.net Mvc,我在两个不同的位置有两个名为CommonController.cs的MVC控制器。以下是相对于根的两条路径: /Controllers/CommonController.cs /CDS/Controllers/CommonController.cs 当我尝试对第一个公共控制器进行AJAX调用时,出现了一个问题。ajax调用中的url如下所示: $.ajax({ cache: false, method: 'GET', dat

我在两个不同的位置有两个名为
CommonController.cs
的MVC控制器。以下是相对于根的两条路径:

  • /Controllers/CommonController.cs
  • /CDS/Controllers/CommonController.cs
  • 当我尝试对第一个公共控制器进行
    AJAX
    调用时,出现了一个问题。ajax调用中的url如下所示:

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

    是否有办法访问此控制器并将相同的命名控制器保留在不同的位置,或者我必须重命名其中一个控制器?

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

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

    改名会让你的生活变得更轻松。如果失败,请尝试修改路由设置,为其中一个控制器分配不同的URL。我建议您将第二个控制器放置在一个区域中。然后,您可以更改路由映射以使其工作。重命名它或配置路由以使路由名称不同。默认情况下,url将是
    controllerName/actionName/parameters
    ,我不知道为什么url中有
    Controllers/Common
    ,也许最好也提供路由配置以获得更好的答案。@很抱歉,这是一个未删除的测试错误。已更新以匹配当前的内容running@Ian目前,我们正在采用最简单的方法,即重命名控制器。我很好奇,是否有一种方法可以通过纯JavaScript解决方案来实现这一点。通过重命名,您的生活会变得更加轻松。如果失败,请尝试修改路由设置,为其中一个控制器分配不同的URL。我建议您将第二个控制器放置在一个区域中。然后,您可以更改路由映射以使其工作。重命名它或配置路由以使路由名称不同。默认情况下,url将是
    controllerName/actionName/parameters
    ,我不知道为什么url中有
    Controllers/Common
    ,也许最好也提供路由配置以获得更好的答案。@很抱歉,这是一个未删除的测试错误。已更新以匹配当前的内容running@Ian目前,我们正在采用最简单的方法,即重命名控制器。我很好奇是否有一种方法可以通过纯JavaScript解决方案来实现这一点。