gpt4 book ai didi

asp.net-mvc - html.routelink 不去指定路由

转载 作者:行者123 更新时间:2023-12-01 03:38:53 25 4
gpt4 key购买 nike

我有一堆路由定义为:

routes.MapRoute(
name: "ID",
url: "{category}/{subcategory}/{lowercategory}/{lowercategory1}/{id}/{ignore}",
defaults: new { controller = "Home", action = "Index", ignore = UrlParameter.Optional }
);

routes.MapRoute(
name: "LowerCategory1",
url: "{category}/{subcategory}/{lowercategory}/{lowercategory1}",
defaults: new { controller = "Home", action = "Index" }
);

routes.MapRoute(
name: "LowerCategory",
url: "{category}/{subcategory}/{lowercategory}",
defaults: new { controller = "Home", action = "Index" }
);

routes.MapRoute(
name: "Subcategory",
url: "{category}/{subcategory}",
defaults: new { controller = "Home", action = "Index" }
);

routes.MapRoute(
name: "Category",
url: "{category}",
defaults: new { controller = "Home", action = "Index" }
);

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

现在我使用 routeLink 来访问默认路由,但它不起作用。
@Html.RouteLink("Create Ad", "Default", new { controller="Electronics",action="Details" })

请求转到主 Controller 索引功能。我做错了什么。如何使用 routeLink 以便请求应该转到默认路由。

最佳答案

我也有这个问题。
似乎代码调用了带有签名的RouteLink重载

RouteLink(string linkText, object routeValues, object htmlAttributes)

这意味着 routeName 永远不会使用此重载设置,并且很可能您会得到一个带有空 href 属性的 anchor 元素或使用默认 Controller 和操作生成的链接,因为 routeValues 也未设置为您期望的值。

我们实际上想调用这个重载来代替
RouteLink(string linkText, string routeName, object routeValues)

这可以通过使用命名参数来确保,如下所示:
@Html.RouteLink("Create Ad", routeName: "Default", routeValues: new { controller="Electronics",action="Details" })

关于asp.net-mvc - html.routelink 不去指定路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32325937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com