我的路由配置问题(MVC 5)。我有多个具有相同参数签名的路由(相同数量的参数和参数类型)。
在下面的代码中,底部的2个配置设置是对接头。对服务器的正常回发应该在底部获得默认路径,而是由于相同的签名而获取中间的路径。
我无法找到一种方法,使中间的一个与底部的默认值相同。我仍然需要中间一个只有那两个字符串(action和gameHtmlAbbr)。
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: null,
url: "{gameConsoleHtmlAbbr}",
defaults: new { Controller = "Game", action = "GameList", gameConsoleHtmlAbbr = (string)null }
);
routes.MapRoute(
name: null,
url: "{action}/{gameHtmlAbbr}",
defaults: new { Controller = "Game", action = "Snes", gameHtmlAbbr = (string)null }
);
routes.MapRoute(
name: null,
url: "{controller}/{action}",
defaults: new { controller = "Game", action = "GameList" }
);
}
}
答案 0 :(得分:1)
第2和第3路线都定义了一条包含2个路段的路线(但没有区分它们),并且由于路线按照定义的顺序进行匹配,任何有2个路段的路段都会匹配第2路段(第3路线将永远不会被执行)
您需要为每个方法定义一个特定路由,例如,点击Snes()
GameController
方法,在默认路由之前添加特定路由(并删除第二条路径
routes.MapRoute(
name: "Snes",
url: "Snes/{gameHtmlAbbr}",
defaults: new { Controller = "Game", action = "Snes", gameHtmlAbbr = (string)null }
);