gpt4 book ai didi

asp.net-mvc - 在ASP.Net MVC中定义自定义URL路由

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

我定义了以下路线:

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(name: "Homepage", url: "", defaults: new { controller = "Restaurants", action = "Search" });
routes.MapRoute(name: "About", url: "about", defaults: new { controller = "Home", action = "About" });
routes.MapRoute(name: "Disclaimer", url: "disclaimer", defaults: new { controller = "Home", action = "Disclaimer" });
routes.MapRoute(name: "Contact", url: "contact", defaults: new { controller = "Home", action = "Contact" });
routes.MapRoute(name: "RestaurantDetails", url: "{id}/{slug}", defaults: new { controller = "Restaurant", action = "Details" });
routes.MapRoute(name: "RestaurantLocationDetails", url: "{id}/{restaurantSlug}/{locationSlug}", defaults: new { controller = "Restaurant", action = "LocationDetails" });
routes.MapRoute(name: "Api", url: "api/{action}", defaults: new { controller = "Api" });
}

我找到了一些提供404的路由,所以我安装了RouteDebugger NuGet软件包。

它显示了我对前4条路由的期望,但是在最后3条路由中,我仍然得到404,并且Route幸的是,Route Debugger不会出现在页面底部-我希望它可以显示映射的位,但是我什么都没有。所有 View 都存在。

因此,我假设我在路由定义上犯了一个错误-任何人都可以对此进行说明吗?另外,如何获取路由调试器来向我展示如何将那些返回404的页面的URL映射到路由字典中?

最佳答案

您需要更改路线的顺序。

routes.MapRoute(name: "Homepage", url: "", defaults: new { controller = "Restaurants", action = "Search" });
routes.MapRoute(name: "About", url: "about", defaults: new { controller = "Home", action = "About" });
routes.MapRoute(name: "Disclaimer", url: "disclaimer", defaults: new { controller = "Home", action = "Disclaimer" });
routes.MapRoute(name: "Contact", url: "contact", defaults: new { controller = "Home", action = "Contact" });
routes.MapRoute(name: "Api", url: "api/{action}", defaults: new { controller = "Api" });
routes.MapRoute(name: "RestaurantLocationDetails", url: "{id}/{restaurantSlug}/{locationSlug}", defaults: new { controller = "Restaurant", action = "LocationDetails" });
routes.MapRoute(name: "RestaurantDetails", url: "{id}/{slug}", defaults: new { controller = "Restaurant", action = "Details" });

路由将按照添加到路由列表中的顺序进行处理。

例如: api/action也与 RestaurantDetails路由匹配,因为route url参数中只有两个参数。

因此,它需要从具体到一般。通常,如果在两个路由定义中具有相同数量的参数,则选择的第一个路由将被添加。

关于asp.net-mvc - 在ASP.Net MVC中定义自定义URL路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5903996/

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