使用asp.net mvc连接html属性

时间:2010-05-24 14:34:01

标签: c# asp.net-mvc

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

<%= 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扩展功能的简单方法,而无需重新编写整个扩展名?

2 个答案:

答案 0 :(得分:186)

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

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

答案 1 :(得分:18)

ActionLink htmlAttributes提供的答案建议使用下划线而不是连字符。在将页面发送到浏览器时,MVC.Net应该发出连字符而不是下划线。