gpt4 book ai didi

asp.net-mvc-4 - ASP.NET MVC 4 中的单页应用程序路由

转载 作者:行者123 更新时间:2023-12-02 15:55:52 24 4
gpt4 key购买 nike

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

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

/             <--- javascript handles 
/api <--- ASP.NET MVC handles

但是,我不知道如何告诉 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 }
);

欢迎任何想法,谢谢!

最佳答案

除非您使用包罗万象的参数,否则您不能为路由 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
);

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

关于asp.net-mvc-4 - ASP.NET MVC 4 中的单页应用程序路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12592001/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com