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

HTML锚点标签转为@Html.ActionLink后图标字体显示异常,寻求解决方案

解决@Html.ActionLink中Font Awesome图标显示异常的问题

嘿,我懂你碰到的麻烦了!你原来的问题出在@Html.ActionLink的工作机制上——它默认会把你传入的第一个参数(链接文本)做HTML编码,所以你直接把<i>标签塞进去的话,它不会被浏览器当成HTML元素渲染,反而会变成纯文本显示在页面上,自然就看不到图标了。

先看你原来代码的问题:

你写的这段代码不仅语法有问题(多了多余的单引号和空格),更关键的是ActionLink会把整个字符串转义:

@Html.ActionLink("'far fa - arrow - alt - circle - right'></i> Next1", "ActionName", new { controller = "MyController", id = 1 }, new { @class = "btn btn-primary next-step" })

最终页面上会显示类似'<i class="far fa-arrow-alt-circle-right"></i> Next1'的纯文本,而不是你想要的图标+按钮效果。

推荐的解决方案(最直观,和原始HTML效果完全一致)

放弃用@Html.ActionLink,改用手动写<a>标签,配合@Url.Action生成正确的路由地址。这样既能保留原始HTML的结构,又能保证路由的正确性:

<a href="@Url.Action("ActionName", "MyController", new { id = 1 })" class="btn btn-primary next-step">
    <i class="far fa-arrow-alt-circle-right"></i> Next1
</a>

这种写法和你原来的HTML几乎一模一样,只是把href="#"替换成了Url.Action生成的真实路由地址,图标、样式和文字都会和原始效果完全一致。

如果你一定要用@Html.ActionLink的话

可以用MvcHtmlString.Create()来绕过HTML编码,不过这种写法不如上面的直观,维护起来也麻烦:

@Html.ActionLink(
    MvcHtmlString.Create("<i class='far fa-arrow-alt-circle-right'></i> Next1").ToString(),
    "ActionName",
    "MyController",
    new { id = 1 },
    new { @class = "btn btn-primary next-step" }
)

总结

最稳妥、最易维护的方式还是手动写<a>标签+Url.Action,这样你能完全控制HTML结构,确保和原始UI效果一致,也避免了ActionLink带来的编码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 05:39:06