Тире (-) в участнике анонимного класса

действительно ли возможно использовать тире (-) в имени элемента анонимного класса? Я главным образом интересуюсь этим использовать с 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.

23
задан svinto 5 March 2010 в 19:11
поделиться

3 ответа

Невозможно использовать - как часть любого идентификатора. http://msdn.microsoft.com/en-us/library/aa664670 (VS.71) .aspx

1
ответ дан 29 November 2019 в 01:58
поделиться

Нет, потому что тире является оператором C # ( минус ), а пробелы не имеют значения.

В данный момент компилятор думает, что вы пытаетесь вычесть животное из данных , что не работает, если оператор - не указан для типов в вопрос.

2
ответ дан 29 November 2019 в 01:58
поделиться

Нет, вы не можете использовать символ дефиса. Вы должны использовать буквенно-цифровые символы, символы подчеркивания или другие символы, описанные здесь. '-' рассматривается как минус. data-animal будет рассматриваться так же, как data - animal, так что это даже не будет компилироваться, если вы не определили отдельно data и animal (и это может вызвать тонкие ошибки, если вы это сделали!).

Правка: Благодаря возможности C# иметь идентификаторы с управляющими последовательностями Unicode, вы можете получить эффект тире в имени идентификатора. Эскейп-последовательность для "&mdash" (более длинный символ тире) - "U+2014". Таким образом, data-animal можно выразить как data\u2014animal. Но с точки зрения стиля кодирования я не понимаю, почему бы вам не выбрать более удобное соглашение об именовании.

Кроме того, еще один момент из "2.4.2 Идентификаторы (C#)": В идентификаторе не может быть двух таких экранирующих последовательностей подряд (например, data\u2014\u2014animal).

0
ответ дан 29 November 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: