这是我的路线,唯一需要的参数是控制器
routes.MapRoute(
"countryoptional/controller",
"{country}/{controller}/{pagelabel}/{page}",
new { action = "index", country = UrlParameter.Optional, pagelabel = UrlParameter.Optional, page = UrlParameter.Optional },
new
{
pays = @"$|^(france|belgium)$",
controller = @"^(car|boat)$",
pagelabel = @"^$|page",
page = @"^$|\d{1,6}"
}
);
我期望以下 URLS 可以使用:
/车/
/汽车/页面/2
/法国/汽车
/法国/汽车/页面/2
它有点工作:
Url.Action("index", "car", new { country= "france", pagelabel = "page", page = 2} )
将产生:/france/car/page/2
但
如果我想要一个没有国家/地区的网址,则视图操作会响应,但构造函数如
Url.Action("index", "car", new { pagelabel = "page", page = 2} )
将生成此链接://car/page/2
我得到了这个双斜杠“//car”,所以它当然会破坏链接。
我怀疑它不喜欢 {country}/{controller}/... url 定义中控制器可选前面的 {country} 参数的可能性我不想使我的路由配置复杂化并有另一个路由声明一定是一种方式,我做错了什么?