Razor视图锚点导航失效:如何生成正确格式的锚点链接
解决锚点链接前多余斜杠的问题
我之前也碰到过这个烦人的问题!ASP.NET MVC的Url.Action在生成空路径时总会自动加个尾部斜杠,再加上锚点就变成了多余的/#myAnchor,而且如果页面设置了<base>标签,纯前端的锚点链接也会出现同样的问题。给你几个靠谱的解决办法:
方法1:手动去除Url.Action生成的尾部斜杠
利用TrimEnd('/')把Url.Action("", "")生成的/去掉,再拼接锚点:onclick="location.href='@Url.Action("", "").TrimEnd('/')#myAnchor'"这样最终生成的链接就是
https://url.com#myAnchor,完美去掉了多余的斜杠。方法2:直接获取当前请求的基础路径
通过Request.Url.GetLeftPart(UriPartial.Path)获取当前页面的完整路径(不带尾部斜杠,除非当前就是根路径),再拼接锚点:onclick="location.href='@Request.Url.GetLeftPart(UriPartial.Path)#myAnchor'"这个方法更灵活,不管当前页面是根目录还是子页面,都能正确生成锚点链接。
方法3:解决纯前端标签的锚点问题
如果是纯前端的<a>标签出现这个问题,大概率是页面设置了<base href="/" />导致相对路径被解析成/#myAnchor。可以用这两种方式解决:- 用JS直接拼接绝对路径:
<a href="javascript:void(0)" onclick="location.href = window.location.origin + '#myAnchor'">跳转到锚点</a> - 直接生成绝对路径的锚点链接:
<a href="@Request.Url.Scheme://@Request.Url.Host#myAnchor">跳转到锚点</a>
- 用JS直接拼接绝对路径:
内容的提问来源于stack exchange,提问作者WhoMightThisOneBe
相关产品推荐
相关产品推荐

