在匿名类型的属性名称中使用异常char(减号)

ANe*_*ves 15 c# asp.net-mvc anonymous-types

问题

我试图声明一个名为的属性的匿名类型data-maxchars.

因为减号是一个运算符,它会将我想要的属性名称降级(?)到一个操作中,并且我得到一个编译错误: Invalid anonymous type member declarator.

我知道我可以使用@来逃避保留字,但我无法弄清楚是否有任何方法可以逃避减号.

object attributes = (object)new { @class = "foo" } // OK
Run Code Online (Sandbox Code Playgroud)

起源

匿名类型作为object参数传递给TextAreaExtensions.TextArea : <%= Html.TextArea(Model.Field.Id, val, rows, cols, attributes)%>. 这将生成具有传递属性的输入.

我想使用JS渐进增强来限制用户可以插入的字符数.
所以我data-在我的属性上使用前缀:http://ejohn.org/blog/html-5-data-attributes/

备择方案

  • 在写这篇文章的时候,我注意到有一个带有IDictionary而不是对象的重载.
  • 我可以手工写输入.
  • 我可以使用不同的前缀并忽略标准.(嘘!)

但如果有办法使用有趣的属性名称,我想学习它.

Jul*_*ain 23

从ASP.NET MVC 3开始,您可以使用下划线(_),它将自动替换-为HTML生成.魔术完成了HtmlHelper.AnonymousObjectToHtmlAttributes.

例如: new { data_abc = "def" }将生成为data-abc="def".