Если мы посмотрим в представление, которое для нас сгенерировал Visual Studio, то возможно у вас будет две магические строчки, которые стоит рассмотреть:
@{ }
Магический @ переводит фреймворк в режим выполнения кода, а фигурные скобки указывают его границы.
@{ int i = 10; }
В этом примере в режиме кода создается переменная i, которой присваивается значение 10. Ничего особого, просто что-то нужно было написать для примера.
В режиме кода можно писать практически все, что угодно, никаких ограничений вроде нет. Можно даже полностью отказаться от контроллеров и обращаться к модели прямо из View, потому что никто вас остановить не может, если нет наставника или начальника, который даст по рукам. В представлениях не должно быть никакой логики! Да, это возможно, но это очень плохо. В файлах cshtml может быть CS код, если он необходим для отображения чего-либо на странице.
У начинающего программиста может возникнуть вопрос - что писать в контроллерах, а что писать в cshtml? Трудно дать такое правило, которое работало бы в 100% случаев. Я бы сказал так – если код можно написать где-то в другому месте, в представлении лучше его не писать.
Как только фигурные скобки заканчиваются, после этого мы снова возвращаемся в режим HTML и можем писать текст даже без тэгов:
@{ int i = 10; <p>index = @i</p> } Это текст
В этом примере я еще и HTML код вставил в блок кода и это совершенно легально. Как только фреймворк видит открывающийся HTML тэг, он переходит в режим отображения этого языка разметки. Как только достигается конец тега, то мы возвращаемся в режим кода и можем писать CS код. Написать просто текст среди кода нельзя, но это и не нужно. В тех случаях, когда вам нужно в блоке кода вывести на страницу какой-то текст, можно использовать тэг:
@{ int i = 10; index = @i }
Это очень удобный трюк и когда фреймворк отображает содержимое тега, то на странице не будут отражаться никакие пробелы до открывающегося тега или после него, так что можете ставить пробелы так, чтобы код выглядел в редакторе красиво.
Есть еще один вариант перевести текущую строку в HTML режим – поставить @: (символ @ и двоеточие)
@{ int i = 10; @: This is a string @i }
В этом примере у нас в блоке кода первая строка это чистый CS код, а вторая строка переведена в режим HTML, поэтому можно писать просто текст, а для вывода значения переменно i мне приходится отображать ее, как это делается в html режиме, то есть ставить перед переменной символ @.