действительно ли возможно использовать тире (-) в имени элемента анонимного класса? Я главным образом интересуюсь этим использовать с asp.net mvc, чтобы передать пользовательские атрибуты помощникам HTML, так как я хочу, чтобы мой HTML передал html5-проверку, этот запуск с данных-.
Exemple, который не работает:
<%=Html.TextBoxFor(x => x.Something, new {data-animal = "pony"})%>
Помещение перед именем элемента не добивается цели также.
Обновление: Если это не возможно, там рекомендуемый путь todo, что я хочу? Мое текущее временное решение состоит в том, чтобы добавить замену ко всему этому как это:
<%=Html.TextBoxFor(x => x.Something, new {data___animal = "pony"}).Replace("___", "-")%>
Но это сосет, потому что это ужасно и повредится когда Model.Something
содержит три подчеркивания. Buhu.
Невозможно использовать - как часть любого идентификатора. http://msdn.microsoft.com/en-us/library/aa664670 (VS.71) .aspx
Нет, потому что тире является оператором C # ( минус ), а пробелы не имеют значения.
В данный момент компилятор думает, что вы пытаетесь вычесть животное
из данных
, что не работает, если оператор -
не указан для типов в вопрос.
Нет, вы не можете использовать символ дефиса. Вы должны использовать буквенно-цифровые символы, символы подчеркивания или другие символы, описанные здесь. '-'
рассматривается как минус. data-animal
будет рассматриваться так же, как data - animal
, так что это даже не будет компилироваться, если вы не определили отдельно data
и animal
(и это может вызвать тонкие ошибки, если вы это сделали!).
Правка: Благодаря возможности C# иметь идентификаторы с управляющими последовательностями Unicode, вы можете получить эффект тире в имени идентификатора. Эскейп-последовательность для "&mdash" (более длинный символ тире) - "U+2014". Таким образом, data-animal можно выразить как data\u2014animal
. Но с точки зрения стиля кодирования я не понимаю, почему бы вам не выбрать более удобное соглашение об именовании.
Кроме того, еще один момент из "2.4.2 Идентификаторы (C#)": В идентификаторе не может быть двух таких экранирующих последовательностей подряд (например, data\u2014\u2014animal
).