Asp.net mvc 有没有办法用HTML5数据属性创建ActionLink?
HTML5允许使用前缀为短语“data-”的自定义属性,这些属性通过验证而无需使用自定义DTD()。在Asp.NETMVC中,是否有任何方法可以指定带有数据属性的ActionLink 向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" } 但这不起作用,因为连字符在属性名称中无效。有没有办法绕过这个限制?或者
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