我记下以下网址:
/restaurants/italian/miami.html
/restaurants/italian/miami-p2.html
使用这些路线
routes.MapRoute(null, "{category}/{branch}/{city}-p{page}.html",
new { controller = "Branch", action = "Index" });
routes.MapRoute(null, "{category}/{branch}/{city}.html",
new { controller = "Branch", action = "Index", page = 1 });
现在我的问题是,我想让url的“-p {page}”部分可选,而不仅仅是{page}参数。这样我就可以使用单个路由,并使用它来映射带有Url.RouteUrl(RouteValueDictionary)
的出站URL(如果字典中的页面参数为1,则会自动删除页面部分)。
答案 0 :(得分:1)
我不确定我很清楚你想要什么,但我仍然认为使用一些regular expression constraint可能会解决你的问题。也许是这样的:
routes.MapRoute(null, "{category}/{branch}/{citywithp}{page}.html",
new { controller = "Branch", action = "Index" },
new {citywithp = @"p-\d+$" } );
答案 1 :(得分:0)
为了达到这个目的,我需要3条路线:
routes.MapRoute(null, "{category}/{branch}/{city}.html",
new { controller = "Branch", action = "Index" },
new { page = "1" });
routes.MapRoute(null, "{category}/{branch}/{city}-p{page}.html",
new { controller = "Branch", action = "Index" });
routes.MapRoute(null, "{category}/{branch}/{city}.html",
new { controller = "Branch", action = "Index", page = 1 });
通过这种方式,我可以使用第二条和第三条路线映射入站的所有网址,使用第一条和第二条路线映射出站。