Asp.net mvc 有没有办法用HTML5数据属性创建ActionLink?

Asp.net mvc 有没有办法用HTML5数据属性创建ActionLink?,asp.net-mvc,html,Asp.net Mvc,Html,HTML5允许使用前缀为短语“data-”的自定义属性,这些属性通过验证而无需使用自定义DTD()。在Asp.NETMVC中,是否有任何方法可以指定带有数据属性的ActionLink 向ActionLink添加属性的典型方法是传入一个匿名对象,每个对象都有一个自定义属性: new { customattribute="value" } 我想做的是: new { data-customattribute="value" } 但这不起作用,因为连字符在属性名称中无效。有没有办法绕过这个限制?或者

HTML5允许使用前缀为短语“data-”的自定义属性,这些属性通过验证而无需使用自定义DTD()。在Asp.NETMVC中,是否有任何方法可以指定带有数据属性的ActionLink

向ActionLink添加属性的典型方法是传入一个匿名对象,每个对象都有一个自定义属性:

new { customattribute="value" }
我想做的是:

new { data-customattribute="value" }

但这不起作用,因为连字符在属性名称中无效。有没有办法绕过这个限制?或者我必须在使用ActionLink和使用数据属性之间进行选择吗?

是的,
ActionLink
方法有一个重载,它采用
IDictionary
而不是匿名对象

<%=Html.ActionLink("text", "Index", "Home", null /*routeValues*/, 
    new Dictionary<string, object> { 
       { "data-customattribute", "value" }, 
       { "data-another", "another-value" } 
    })%>

产出:

<a data-another="another-value" data-customattribute="value" href="/">text</a>

或者您可以使用

new{data\u customattribute=“value”}


而且编译器足够聪明,能够理解您的意思

完美。未来读者注意:如果您对HTML属性使用IDictionary,那么还必须对routeValues参数使用RouteDictionary(您可以使用与上面使用的HTML属性相同的语法)。是的,要在mvc3之前的版本中实现相同的解决方案,您应该使用@ağdaşsolution