gpt4 book ai didi

c# - 将特定路由与 Url.Action 结合使用

转载 作者:行者123 更新时间:2023-11-30 13:37:39 27 4
gpt4 key购买 nike

我在路由配置中声明了两条路由,如下所示:

routes.MapRoute(
name: "SpecificAction",
url: "{controller}/{action}/{id}-{id2}",
defaults: new { controller = "Main", action = "SpecificAction", id = UrlParameter.Optional, id2 = UrlParameter.Optional }
);

routes.MapRoute(
name: "DefaultNoParams",
url: "{controller}/{action}/",
defaults: new { controller = "Main", Action = "Index" },
namespaces: new string[1] { "Project.Controllers" }
);

我有两个如下所示的 Controller 操作:

[HttpGet]
public ActionResult TheAction()
{

}

[HttpPost]
public ActionResult TheAction([ModelBinder(typeof(SpecificModelBinder))] SpecificModel model)
{

}

我想要一个指向我 View 中第一个操作的链接,所以我使用 Url.Action 生成了一个:

<a href="@Url.Action("TheAction", "Main")">The Action</a>

但是,这会输出 url http://site/Main/TheAction/-(注意末尾的破折号,这似乎表明我的 SpecificAction 路线正在使用中。

有什么方法可以使用特定路由调用 Url.Action 吗?或者有什么其他方法可以避免这个破折号出现在 url 中吗?

最佳答案

发现重复问题 here

简而言之,使用 Url.RouteUrl() 而不是 Url.Action() 来获取正确的 URL。

在您的情况下,您甚至可以根据需要使用 @Html.RouteLink() 获取整个 anchor 标记。

关于c# - 将特定路由与 Url.Action 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21788245/

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