我正在尝试将所有与现有控制器不匹配的网址重定向到某个控制器。
例如,网址mywebsite.com/newyork应该作为mywebsite.com/Cities/Info/newyork处理
我在RegisterRoutes中使用以下代码,但它似乎无法正常工作,因为我得到了404响应:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Cities",
url: "{cityname}",
defaults: new { controller = "Cities", action = "Info", cityname= "" }
);
答案 0 :(得分:19)
您应首先将城市路线放入并删除空的默认参数:
routes.MapRoute(
name: "Cities",
url: "{cityname}",
defaults: new { controller = "Cities", action = "Info" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
路线按顺序处理,因此您应该具有最具体的第一个到最不具体的(您的默认路线)。
当您的website.com/newyork与默认路线匹配时,它不会继续您的城市路线。