使用asp.net mvc连接html属性

Chr*_*ers 105 c# asp.net-mvc

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

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

查看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扩展功能的简单方法,而无需重写整个扩展?

ED-*_*209 191

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

<%= Html.TextBox("name", value, new { @data_foo = "bar"}) %>
Run Code Online (Sandbox Code Playgroud)

  • +1只是让我免于编写一些真正丑陋的代码.谢谢! (7认同)
  • 我找到了类似的问题几个SO问题,这是最好的答案. (2认同)

Zar*_*eth 18

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