[英]How to remove automatically a url parameter (set as UrlParameter.Optional in global.asax) when using ActionLink method in MVC4?
我有一个小问题:
假设我具有以下路由设置(默认设置), 但我还有更多其他路由,它们具有不同的可选url参数名称 。
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home",
action = "Index",
id = UrlParameter.Optional }
);
我使用简单的逻辑创建面包屑菜单:
foreach(var item in RouteData.Values){
if(item.Key.Equals("controller")) {
url = htmlHelper.ActionLink("Link text", "Index", item.Key).ToHtmlString();
}
...
}
好吧,当我在http://localhost:1234/
面包屑url返回正常。 http://localhost:1234/Home/Index
。
但是当访问http://localhost:1234/Home/Index/1
,当前控制器(在面包屑一侧)的锚定URL就像来自浏览器的url(相同的值, http://localhost:1234/Home/Index/1
)。
可以自动删除设置为UrlParameter.Optional
url参数UrlParameter.Optional
中的UrlParameter.Optional
参数,以便不显示在锚定url中?
id
很简单,对于可选的url参数,我有很多路由和不同的名称 。
谢谢
您无法在global.asax中执行此操作。 不能以这种方式更改方法行为。 这没有任何意义:您的应用将无法按预期运行。
但是,您可以使用此重载os GenerateUrl提供空的RouteValueDictionary。 这样,您就可以摆脱当前的路线数据(包括当前的请求参数,例如url中的ID)。
public static string GenerateUrl(
string routeName,
string actionName,
string controllerName,
RouteValueDictionary routeValues,
RouteCollection routeCollection,
RequestContext requestContext,
bool includeImplicitMvcValues
)
这将为您提供一个网址,您可以使用该网址创建操作链接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.