ASP.NET Razor - грамматика кода на C# и VB

Razor поддерживает как C# (C sharp), так и VB (Visual Basic).

Основные правила синтаксиса Razor в C#

  • Код Razor заключен в @{ ... }
  • Внутренние выражения (переменные и функции) начинаются с @
  • Кодовые строки оканчиваются точкой с запятой
  • Строки окружены кавычками
  • Код C# чувствителен к регистру
  • Расширение файла C# - .cshtml

Пример на C#

<!-- Единстрочный блок кода -->
@{ var myMessage =	"Hello World"; }
<!-- Внутренние выражения или переменные -->
<p>Значение myMessage: @myMessage</p> 
<!-- Многострочный блок кода -->
@{
var greeting = "Добро пожаловать на наш сайт!";
var weekDay = DateTime.Now.DayOfWeek;
var greetingMessage = greeting + " Здесь в Хьюстоне сегодня: " + weekDay;
}
<p>Приветствие: @greetingMessage</p>

Запуск примера

Основные правила синтаксиса Razor в VB

  • Код Razor заключен в @Code ... End Code
  • Внутренние выражения (переменные и функции) начинаются с @
  • Переменные объявляются с помощью ключевого слова Dim
  • Строки окружены кавычками
  • VB не чувствителен к регистру
  • Расширение файла VB - .vbhtml

Пример

<!-- Единстрочный блок кода -->
@Code dim myMessage = "Hello World" End Code
<!-- Внутренние выражения или переменные -->
<p>Значение myMessage: @myMessage</p> 
<!-- Многострочный блок кода -->
@Code
dim greeting = "Добро пожаловать на наш сайт!" 
dim weekDay = DateTime.Now.DayOfWeek 
dim greetingMessage = greeting & " Здесь в Хьюстоне сегодня: " & weekDay
Конец кода 
<p>Приветствие: @greetingMessage</p>

Запуск примера

Как это работает?

Razor - это простой языков программирования, используемый для внедрения серверного кода в веб-страницы.

Синтаксис Razor основан на ASP.NET фреймворке, который является составной частью .NET фреймворка Microsoft, специально разработанного для разработки веб-приложений.

Синтаксис Razor предоставляет вам все возможности ASP.NET, но использует упрощенный синтаксис, что делает его более легким для изучения для начинающих и более эффективным для повышения производительности для профессионалов.

Страницы Razor можно описать как HTML-страницы с двумя типами содержимого: HTML-контентом и кодом Razor.

Когда сервер читает такие страницы, перед тем как отправить HTML-страницу в браузер, он сначала запустит код Razor. Эти коды, выполняемые на сервере, могут выполнять задачи, которые не могут быть выполнены в браузере, такие как доступ к серверной базе данных. Серверный код может создавать динамическое HTML-контент до того, как страница будет отправлена в браузер. С точки зрения браузера, HTML, созданный серверным кодом, не отличается от статического HTML-контента.

ASP.NET веб-страницы с использованием синтаксиса Razor имеют специальные расширения файлов cshtml (с использованием синтаксиса Razor на C#) или vbhtml (с использованием синтаксиса Razor на VB).

Обработка объектов

Серверный код часто связан с объектами.

"Date" - это пример встроенного объекта ASP.NET, но можно также определить свои собственные объекты, такие как веб-страница, текстовое поле, файл или запись базы данных, и т.д.

Объекты могут иметь методы, которые они могут выполнять. Записи базы данных могут предоставлять метод "сохранить", объект изображения может иметь метод "поворот", объект электронной почты может предоставлять метод "отправить", и так далее.

Объекты также могут иметь атрибуты, описывающие их характеристики. Записи базы данных могут иметь атрибуты FirstName и LastName.

Объект ASP.NET Date имеет атрибут Now (записывается как Date.Now), у атрибута Now есть атрибут Day (записывается как Date.Now.Day). В следующем примере показано, как можно получить某些 атрибуты объекта Date:

Пример

<table border="1">
<tr>
<th width="100px">Name</th>
<td width="100px">Value</td>
</tr>
<tr>
<td>Day</td><td>@DateTime.Now.Day</td>
</tr>
<tr>
<td>Hour</td><td>@DateTime.Now.Hour</td>
</tr>
<tr>
<td>Minute</td><td>@DateTime.Now.Minute</td>
</tr>
<tr>
<td>Second</td><td>@DateTime.Now.Second</td>
</tr>
</td>
</table>

Запуск примера

Условия If и Else

Одной из важнейших характеристик динамических веб-страниц является выполнение действий на основе условий.

Обычно для достижения этой цели используется оператор if ... else:

Пример

@{
var txt = "";
if(DateTime.Now.Hour > 12)
  {txt = "Добрый вечер";}
else
  {txt = "Доброе утро";}
}
<html>
<body>
<p>Сообщение: @txt</p>
</body>
</html>

Запуск примера

Чтение ввода пользователя

Одна из важных характеристик динамических веб-страниц - это чтение ввода пользователя.

Чтение ввода с помощью функции Request[] и тестирование условия IsPost:

Пример

@{
var totalMessage = "";
if(IsPost)
    {
    var num1 = Request["text1"];
    var num2 = Request["text2"];
    var total = num1.AsInt() + num2.AsInt();
    totalMessage = "Общее количество = " + total;
    }
}
<html>
<body style="background-color: beige; font-family: Verdana, Arial;">
<form action="" method="post">
<p><label for="text1">Первый номер:</label><br>
<input type="text" name="text1" /></p>
<p><label for="text2">Второй номер:</label><br>
<input type="text" name="text2" /></p>
<p><input type="submit" value="Добавить" /></p>
</form>
<p>@totalMessage</p>
</body>
</html>

Запуск примера