ASP.NET MVC 4中的单页应用程序路由

And*_*yuk 6 asp.net-mvc-4

我正在使用asp.net net mvc4和javascript构建单页面应用程序.

我的javascript有它自己的路由引擎,所以我希望所有路由都在root下由javascript处理,所有路由api都由服务器端处理.即:

/             <--- javascript handles 
/api          <--- ASP.NET MVC handles
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何告诉ASP.NET MVC不处理这些路由,到目前为止我尝试的甚至没有运行:

        routes.MapRoute(
            name: "Client",
            url: "/",
            defaults: new { controller = "Home", action = "Index",  }
        );

        routes.MapRoute(
            name: "API",
            url: "api/{controller}/{action}/{id}",
            defaults: new { controller = "Tasks", action = "Index", id = UrlParameter.Optional }
        );
Run Code Online (Sandbox Code Playgroud)

欢迎任何想法,谢谢!

Iso*_*ous 18

除非使用catch-all参数,否则路径URL中不存在参数的默认值.您还需要首先创建API路由,以避免被catch-all路由消耗.

routes.MapRoute(
    name: "API",
    url: "api/{controller}/{action}/{id}",
    defaults: new { controller="Tasks", action="Index", id=UrlParameter.Optional }
);

routes.MapRoute(
    "Default", // Route name
    "{*catchall}", // URL with parameters
    new { controller = "Home", action = "Index" } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)

更新:我应该提一下,在这种情况下,.NET MVC仍会将任何不匹配"API"的请求转发到"Home/Index",在您的情况下,它应该提供客户端MVC框架的入口点.