首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ASP.NET MVC4中的单页应用路由

问ASP.NET MVC4中的单页应用路由
EN

Stack Overflow用户
提问于 2012-09-26 06:25:34
回答 1查看 8.8K关注 0票数 6

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

我的javascript有它自己的路由引擎,所以我希望根目录下的所有路由都由javascript处理,而api下的所有路由都由服务器端处理。即:

代码语言:javascript
复制
/             <--- javascript handles 
/api          <--- ASP.NET MVC handles

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

代码语言:javascript
复制
        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 }
        );

欢迎有任何想法,谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-27 00:17:49

您不能为路由URL中不存在的参数设置默认值,除非您使用一个catch-all参数。您还需要首先创建API路由,以避免它被通用路由消耗。

代码语言:javascript
复制
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
);

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

票数 18
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12592001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档