我想优化网址的外观,如下所示:
http://localhost:3817/Affaire/SearchAffaires?OnlyFavorite=True
所以我添加了一条新路线:
routes.MapRoute(
"Search Affaire Only Favorite", // Route name
"{controller}/{action}/OnlyFavorite", // URL with parameters
new { controller = "Affaire", action = "SearchAffaires", OnlyFavorite = true } // Parameter defaults
);
现在,URL更易于阅读:
http://localhost:3817/Affaire/SearchAffaires/OnlyFavorite
但是出现了一个新问题:我的页面上的其他链接因路由而发生了变化!
此处示例:... / Affaire / SearchAffaires?LabelName = Baxter& OnlyLabel = True& OnlyFavorite = True
之前:... / Affaire / SearchAffaires?LabelName = Baxter& OnlyLabel = True
如您所见,变量 OnlyFavorite 已添加到网址中。最后我找到了这种行为的原因:路由系统热衷于对路由进行匹配,以至于它将重用来自传入URL的段变量值。处理此行为的最佳方法是防止它发生。强烈建议你 不依赖于此行为,并且您为URL模式中的所有段变量提供值。
这有点烦人,因为我有很多变数!
有关该问题的任何解决方案?为什么这种行为不会发生在一条路线上(默认路线)?
由于
答案 0 :(得分:0)
看起来如果我注册这样的路线,我就摆脱了问题:
routes.MapRoute(
"Search Affaire", // Route name
"{controller}/{action}", // URL with parameters
new { controller = "Affaire", action = "SearchAffaires" } // Parameter defaults
);
routes.MapRoute(
"Search Affaire Only Favorite", // Route name
"{controller}/{action}/OnlyFavorite", // URL with parameters
new { controller = "Affaire", action = "SearchAffaires", OnlyFavorite = true } // Parameter defaults
);