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