用asp.net MVC连字符的HTML属性


111

在创建具有带连字符属性的元素而不是使用以下元素时,是否存在更好的语法:

<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %>

查看提议的标准HTML 5和WIA ARIA的HTML规范,似乎HTML属性中的连字符正计划通过某种简单的名称间距变得更加普遍。

例如,HTML 5提出自定义属性带有前缀,data-并且WIA ARIA aria-对所有WIA ARIA属性使用前缀。

在ASP.NET MVC中使用HTML帮助程序时,例如<%= Html.TextBox("name", value, new { attribute = attributeValue }) %>将匿名对象转换为字典。

不幸的是,在C#中,名称中不支持连字符,因此唯一的选择是创建字典。它的语法非常冗长,有没有人看到一种更好的替代方法或一种简单的方法来更改ASP.NET MVC的HTML扩展功能而不必重新编写整个扩展?

Answers:


202

在数据属性名称中使用下划线,它将神奇地为您处理,将其转换为连字符。它知道您要使用连字符而不是下划线,因为下划线在html属性名称中无效。

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>

2
我在几个SO问题中发现了类似的问题,这是最好的答案。
user2780436 2015年

您能否添加原因说明您的声明下划线在html属性中无效。至少为HTML 4.01状态该属性值只能包含字母(az和AZ),数字(0-9),连字符(ASCII十进制45),句点(ASCII十进制46),下划线(ASCII十进制95)和冒号( ASCII十进制58)
上网

@threeFourOneSixOneThree您的引用是指属性值,但是在这个问题中,我们指的是属性名称。
ED-209

@threeFourOneSixOneThree我已将答案的结尾更改为“下划线在html属性名称中无效”
ED-209

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.