一尘不染

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

c#

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

<%= 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扩展功能而不必重新编写整个扩展?


阅读 224

收藏
2020-05-19

共1个答案

一尘不染

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

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