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

如何将HTML链接转换为带href与aria-expanded属性的ASP.NET MVC ActionLink?

解决ASP.NET MVC ActionLink添加href和aria-expanded属性的问题

嘿,我来帮你搞定这个问题!先给你梳理清楚两个关键点,顺便纠正下你代码里的小问题:

1. 关于href属性

你完全不需要手动添加href!@Html.ActionLink的核心作用就是根据你指定的动作名(Action)、**控制器名(Controller)**和路由参数,自动生成正确的href属性值。比如你写的代码里,它会自动生成指向Project控制器下ProjectDetails动作的链接地址,不需要额外手动指定。

2. 添加aria-expanded属性(顺便修正参数顺序)

你原来的代码参数顺序有点问题哦!你把@class放到了路由参数的位置,而不是HTML属性的位置,这会导致生成的URL里多出?class=has-arrow这样的无效参数,而不是给a标签加上class属性。

正确的做法是使用ActionLink的五参数重载,把路由参数(如果不需要就传null)和HTML属性分开:

方法一:使用匿名对象(用下划线代替短横线)

C#不允许匿名对象的属性名带短横线,所以我们用下划线,Razor会自动帮我们转换成HTML属性的短横线格式:

@Html.ActionLink("Project", "ProjectDetails", "Project", null, new { @class = "has-arrow", aria_expanded = "false" })

这样生成的HTML会是:

<a href="/Project/ProjectDetails" class="has-arrow" aria-expanded="false">Project</a>

方法二:使用Dictionary定义HTML属性

如果你更习惯直接写带短横线的属性名,可以用Dictionary<string, object>来定义:

@{
    var htmlAttributes = new Dictionary<string, object>
    {
        { "class", "has-arrow" },
        { "aria-expanded", "false" }
    };
}
@Html.ActionLink("Project", "ProjectDetails", "Project", null, htmlAttributes)

这个方法和上面的效果完全一样,只是写法不同,适合属性较多或者属性名比较特殊的场景。

内容的提问来源于stack exchange,提问作者Aly-Elgarhy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 10:47:40