我在RouteConfig中有路线:
routes.MapRoute(
name: "AdsCategories",
url: "Ads/{key}",
defaults: new
{
controller = "Ads",
action = "Index",
key = UrlParameter.Optional
},
constraints: new
{
key = new ExcludingValuesConstraint(
"edit", "create", "details",
"delete", "AdsSlider", "UserAds",
"GetCitiesByRegion", "Index", "AddComent",
"search", "SetFilter")
},
namespaces: new string[] { "Vprok.Controllers" }
);
在htmlhelper中形成链接的代码:Link.MergeAttribute("href", urlHelper.Action(action, controller));
如果我去页面广告/ somekey。并在此页面上使用帮助程序:@Html.ActiveLi("Объявления", "Index", "Ads")
。返回“Ads / somekey”而不是“Ads /”。
为什么UrlHelper.Action合并了{key} parametr whith URL?
已解决问题。此代码返回“广告/”:Link.MergeAttribute("href",urlHelper.RouteUrl("Default", new{ action, controller}));
答案 0 :(得分:0)
这是因为当UrlHelper.Action生成出站网址时会重复使用当前路由值。您可以为UrlHelper.Action方法提供空路由值,以覆盖不需要的路由值。
另请参阅此similar question。