Проблема конкатенации бритвы MVC3 - PullRequest
2 голосов
/ 07 ноября 2011

Я пытаюсь создать идентификатор для ввода, выполнив следующее

    id="@ViewData.ModelMetadata.ContainerType.Name + "_" +  @ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate")"

, но оно идет с id = "propertyName +".Как я могу соединить два вместе с подчеркиванием в середине в виде бритвы?

Ответы [ 3 ]

4 голосов
/ 07 ноября 2011

Вы можете использовать синтаксис @(expression) для выражения явного выражения кода.

Вы должны быть явно указаны здесь, потому что пробел после @ViewData.ModelMetadata.ContainerType.Name не является допустимым символом для идентификатора C #, поэтому оценка на этом останавливается.

Алгоритм, используемый Razor для обработки неявного выражения кода, следующий:

  1. Разбор идентификатора. Как только мы видим символ, который недопустим в идентификаторе C # или VB, мы останавливаемся и переходим к шагу 2
  2. Проверьте скобки - если мы увидим «(» или «[», перейдите к шагу 2.1., В противном случае перейдите к шагу 3
    1. Анализ до совпадения ")" или "]" (мы отслеживаем вложенные пары "()" и "[]" и игнорируем "() []", которые мы видим в строках или комментариях)
    2. Вернуться к шагу 2
  3. Проверьте "." - Если мы его увидим, перейдите к шагу 3.1, в противном случае НЕ ПРИНИМАЙТЕ "." как код, и перейдите к шагу 4
    1. Если символ ПОСЛЕ "." допустимый идентификатор, примите "." и вернитесь к шагу 1, в противном случае перейдите к шагу 4
  4. Готово!

(взято из в блоге Скотту )

3 голосов
/ 07 ноября 2011

Попробуй так:

id="@(ViewData.ModelMetadata.ContainerType.Name)_@(ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate"))"

или как это:

id="@string.Format("{0}_{1}", ViewData.ModelMetadata.ContainerType.Name, ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate"))"
2 голосов
/ 07 ноября 2011
id="@(ViewData.ModelMetadata.ContainerType.Name + "_" +  ViewData.TemplateInfo.GetFullHtmlFieldId("FromDate"))"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...