Если мы посмотрим в представление, которое для нас сгенерировал 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 режиме, то есть ставить перед переменной символ @.