Проблема
Я пытаюсь объявить анонимный тип с свойством с именем data-maxchars
.
Поскольку минус является оператором, он деградирует (?) мое искомое имя свойства в операцию, и я получаю ошибку компиляции: Invalid anonymous type member declarator.
Я знаю, что я могу избежать зарезервированных слов, используя @, но я не могу понять, есть ли способ избежать минуса.
object attributes = (object)new { @class = "foo" } // OK
Происхождение
Анонимный тип передается как аргумент object
в TextAreaExtensions.TextArea: <%= Html.TextArea(Model.Field.Id, val, rows, cols, attributes)%>
. Это генерирует ввод с доставленными атрибутами.
Я хочу использовать прогрессивное усовершенствование JS, чтобы ограничить количество символов, которые пользователь может вставить.
Поэтому я использую префикс data-
для моего атрибута: http://ejohn.org/blog/html-5-data-attributes/
Альтернативы
- При написании этого я заметил, что существует перегрузка, в которой вместо ID объекта используется IDictionary.
- Я могу написать ввод вручную.
- Я мог бы использовать другой префикс и игнорировать стандарты. (Boo!)
Но если есть способ использовать смешное имя свойства, я хотел бы изучить его.