You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在.NET Core MVC中生成带#id的动作链接?

在.NET Core MVC中生成带锚点的完整URL

我明白你要的是直接生成类似http://localhost:5013/Home/Glossary#Agnikumara这种包含锚点的完整URL字符串,而不是生成带id属性的<a>标签——之前搜到的方案大多用Html.ActionLink这类辅助方法,它们确实会生成带id的标签,这和你的需求不符。

下面是两种可靠的实现方式,都能直接生成你需要的URL格式:

方法1:手动拼接锚点

利用Url.Action生成基础路由URL,再直接拼接锚点部分:

<a href="@(Url.Action("Glossary", "Home") + "#Agnikumara")">Agnikumara</a>

如果需要生成绝对URL(包含主机和端口),可以补充协议和主机参数:

<a href="@(Url.Action("Glossary", "Home", null, Request.Scheme, Request.Host.Value) + "#Agnikumara")">Agnikumara</a>

方法2:使用fragment路由参数

.NET Core MVC的URL辅助方法支持一个特殊的fragment参数,会自动将其转换为URL的锚点部分:

<a href="@Url.Action("Glossary", "Home", new { fragment = "Agnikumara" })">Agnikumara</a>

同样,要生成绝对URL的话,加上协议和主机参数即可:

<a href="@Url.Action("Glossary", "Home", new { fragment = "Agnikumara" }, Request.Scheme, Request.Host.Value)">Agnikumara</a>

为什么之前的方案不对?

你搜到的带id属性的锚标签,大多是用了Html.ActionLink的htmlAttributes参数,比如:

@Html.ActionLink("Agnikumara", "Glossary", "Home", null, new { id = "Agnikumara" })

这个方法的最后一个参数是用来设置<a>标签本身的HTML属性的,所以会生成带id="Agnikumara"的标签,而不是把锚点加到URL里——这和你的需求完全是两回事,所以要避开这种写法,改用Url.Action来构造URL字符串,再自己包裹<a>标签。

内容的提问来源于stack exchange,提问作者J86

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:47:42