ASP.net MVC 4路由和可选参数的意外结果
本文关键字:参数 意外 结果 net MVC 路由 ASP | 更新日期: 2023-09-27 18:06:28
这是我的路由,唯一需要的参数是控制器
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}"
}
);
我希望下面的url可以工作:
/汽车/
/汽车/页面/2
/法国/车/法国/汽车/页面/2
It kind works:
Url.Action("index", "car", new { country= "france", pagelabel = "page", page = 2} )
会产生:/法国/汽车/页面/2
,
如果我想要一个没有国家/地区的url视图动作响应,但一个构造函数,如
Url.Action("index", "car", new { pagelabel = "page", page = 2} )
将产生这个链接://汽车/页面/2
我得到了这个双斜杠"//car"所以它破坏了链接。
我怀疑它不喜欢{country}前面的{country}参数在{country}/{controller}/…url定义我不想让我的路由配置变得复杂,也不想有另一个路由声明一定有办法,我做错了什么?
可选参数必须遵循任何必需参数。据我所知,没有别的办法。同样的限制也适用于其他任何地方(方法定义等)。
只是重复路线,有一个指定的国家和一个没有任何国家。MVC将决定使用哪一个