Использование WebMatrix: Переменные, условия, циклы
Итак, чтобы приступить к разбору работы с конкретными объектами и описанию Helpers, рассмотрим сначала основы синтаксиса ASP.NET Razor.
Во втором посте о WebMatrix я уже писал о том, как выполнять вставки серверного кода и как «подмешивать» в серверный код HTML. Поэтому не буду повторяться, а перейду к механизму определения переменных.
Определение переменных.
Определение переменных в Razor синтаксисе очень похоже на определение переменных в C#. Достаточно указать тип переменной (int, DateTime, double, bool и т. д.) и имя переменной. При объявлении переменной можно выполнить и инициализацию:
@{
string s;
int j = 3;
}
Переменные можно объявлять и с помощью ключевого слова var. Тут вы не указываете тип явно, но должны обязательно выполнить инициализацию переменной при объявлении, чтобы компилятор мог проверить правильность ее использования в коде.
@{
var s=”Hello”;
var j = 3;
}
Имея набор переменных, Вам может понадобиться выполнять преобразования из одного типа в другой. Для этой цели можно воспользоваться стандартным явным или неявным преобразованием, а также набором методов, принадлежащих объекту типа String.
Вот пример явного преобразования:
@{
double d=3.5;
int j = (int)d;
}
Среди методов, которые позволяют выполнить преобразование, выделяют метод ToString(), который присутствует у любого объекта, а также набор методов, принадлежащих объекту типа String: AsBool(), AsDecimal(), AsFloat(), AsInt(), AsDateTime().
Наконец, класс String описывает несколько методов, которые не выполняют преобразование, а позволяют проверить возможность последнего (естественно, возвращая bool): IsBool(), IsDecimal(), IsFloat(), IsInt(), IsDateTime().
На последок отметим, что если Вы определяете строку, которая содержит специальные символы (слеш, использующийся для указания пути к файлам), то строку начинают с символа @. Кроме этого, если Вы хотите указать внутри строки двойную кавычку, то должны поставить две двойных кавычки:
@{
string s = @"\Hello""";
@s
}
На экране отобразится \Hello”.
Собственно говоря, по переменным все. Теперь перейдем к структурам выбора.
Конструкции if и switch.
Как и в любом нормальном языке ASP.NET Razor поддерживает стандартные структуры выбора. Самая простейшая структура, это if. Ниже пример условия if в «худшем» своем проявлении.
if (i<3)
{
. . .
}
else if (i==3)
{
. . .
}
else
{
. . .
}
Иными словами, синтаксис соответствует языку программирования С#, где указывается оператор if, за которым следует условие, заключенное в скобки. Условие обязательно возвращает bool. Далее идут возможные ветвления и блок else (которые могут и отсутствовать).
Вторая конструкция – switch, позволяет сделать выбор, сопоставив значение переменной некоторому списку. Вот пример такой структуры:
switch (s)
{
case "Sergey":
@: <p>It’s your name</p>
break;
case "Viktor":
@: <p>Name of your brother</p>
break;
default:
@: <p>I don’t know your name</p>
break;
}
Согласно синтаксису, каждый выбор case, должен завершаться ключевым словом break. Может присутствовать блок default, который выполняется, если ни одна метка не найдена.
Циклы
Наконец, циклы. Как и в С# в Razor присутствует четыре типа структур, реализующих циклы, это for, foreach, do, while.
Самый сложный и универсальный цикл, это for. Он содержит три блока, первый из которых определяет и инициализирует переменные, второй – проверяет условие, а третий – выполняет какие-то действия над переменными. Вот пример такого цикла, печатающего цифры от 1 до 10:
for (int i=1; i<=10; i++)
{
@i;
}
Вторая структура foreach, позволяет перебрать все элементы какой-то коллекции. Это верно и для массивов и для более сложных коллекций (например, списки).
Структура do…while позволяет выполнять какое-то действие, пока не будет достигнуто заданное условие. Причем сначала выполняется действие, а затем проверяется условие:
int i=0;
do
{
i++;
@i;
}
while (i < 10);
На экране будет все тот же набор чисел от 1 до 10.
Последний цикл while позволяет сначала проверить условие, а только потом выполнить действие (если условие возвращает true):
int i = 0;
while (i<10)
{
i++;
@i;
}
В следующем посте я продолжу рассматривать синтаксические особенности Razor, а также перейду к использованию конкретных объектов.
Добавить комментарий