3.2. Razor – вывод данных в представлениях

Представления в .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"))

Итак, просто для вывода переменной на страницу, достаточно поставить @ перед переменной. Если есть пробелы или что-то большее, чем одна переменная (как в случае с умножением возраста) нужно заключить все в скобки.

Предыдущая глава

3.1. Razor комментарии

Следующая глава

3.3. CS код в представлениях

О блоге

Программист, автор нескольких книг серии глазами хакера и просто блогер. Интересуюсь безопасностью, хотя хакером себя не считаю

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне