Представления в .NET это файлы cshtml и это название не просто так состоит из двух частей:
- cs или C Sharp или просто C#
- html, а он и в Африке htm
Первый – это язык программирования, а второй это язык разметки. В результате мы получаем смесь, в которой мы можем писать и то, и другое.
HTML выходит за рамки нашего разговора, и я буду подразумевать, что вы его уже знаете.
Сразу же хочу сказать очень интересную особенность Visual Studio и .NET Framework – они не блокируют cshtml файлы. Если файлы с кодом cs становятся только для чтения и чьтобы их редактировать в VS нужно остановить выполнение кода, то в случае с представлениями – их можно менять в любой момент и достаточно только перегрузить в браузере страницу, чтобы увидеть результат.
Мы уже знаем, что представления могут получать на входе какую-то модель и мы даже пробовали выводить что-то в главе Модель представления. Чтобы вывести какие-то данные из модели на страницу перед C# переменной нужно просто поставить символ @. Напоминаю, для вывода поля FirstName в нашей модели пишем так: @Model.FirstName.
<h1>Hello</h1> <p>First Name: @Model.FirstName</p> <p>Last Name: @Model.LastName</p> <p>Age: @Model.Age</p>
Это все мы уже видели, а теперь двинемся дальше. Бывает необходимо выводить больше, чем просто какую-то простую переменную и в этом случае после символа @ заключаем все в круглые скобки: @(значение)
Например, если в свойстве модели находится число, то мы можем выполнить в этом выражении какую-то математическую операцию:
@(Model.Age * 2)
Здесь я не просто вывожу возраст, а зачем-то умножаю его на 2. Просто не придумал примера получше.
Со строковыми переменными тоже можно выполнять какие-то операции, например, можно прибавить какой-то текст, а имя отобразить в нижнем регистре:
@("Mr. " + Model.FirstName.ToUpper())
Прибавлять "Mr" смысла особо нет, это можно было просто вывести до @(), но мне просто хотелось показать какую-то операцию, которую можно выполнить внутри @() и лучше варианта не нашел.
Тут можно написать даже просто какой-то C# код, главное, чтобы он возвращал что-то, что и будет отображаться на страницу. Например, здесь мы с помощью Int32.Parse приведем строку к числу и оно будет отображено на странице:
Число: @(Int32.Parse("4"))
Итак, просто для вывода переменной на страницу, достаточно поставить @ перед переменной. Если есть пробелы или что-то большее, чем одна переменная (как в случае с умножением возраста) нужно заключить все в скобки.