使用带连字符的属性创建元素而不是使用时,是否有更好的语法:
<%= Html.TextBox ("name", value, new Dictionary<string, object> { {"data-foo", "bar"} }) %>
查看建议标准HTML 5和WIA ARIA的HTML规范,似乎HTML属性中的连字符被设计为更常见的某种简单的名称间距。
E.g。 HTML 5建议自定义属性以data-
为前缀,WIA ARIA使用aria-
前缀来表示所有WIA ARIA属性。
在ASP.NET MVC中使用HTML帮助程序时,例如<%= Html.TextBox("name", value, new { attribute = attributeValue }) %>
,匿名对象将转换为字典。
不幸的是,在C#中,名称中不支持连字符,因此唯一的选择是创建字典。其语法非常详细,有没有人看到更好的替代方法或改变ASP.NET MVC HTML扩展功能的简单方法,而无需重新编写整个扩展名?
答案 0 :(得分:186)
在数据属性名称中使用下划线,它会神奇地为您处理它,将其转换为连字符。它知道你想要一个连字符而不是一个下划线,因为下划线在html属性名称中无效。
<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>
答案 1 :(得分:18)
ActionLink htmlAttributes提供的答案建议使用下划线而不是连字符。在将页面发送到浏览器时,MVC.Net应该发出连字符而不是下划线。