Блог Сергея Байдачного

Мой блог о технологиях

Archive for 22 февраля, 2011

Использование WebMatrix: Переменные, условия, циклы

leave a comment »

Итак, чтобы приступить к разбору работы с конкретными объектами и описанию 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, а также перейду к использованию конкретных объектов.

Written by Sergiy Baydachnyy

22.02.2011 at 18:16

Опубликовано в Web Matrix

Tagged with

Использование WebMatrix: Helpers и Visual Studio

leave a comment »

Продолжаю писать серию статей, посвященных продукту WebMatrix. Все статьи Вы можете найти в этом блоге по ссылке https://baydachnyy.com/category/web-matrix/.

Итак, когда я последний раз писал о WebMatrix, то многие разработчики задавали два интересных вопроса: о возможности работать с Razor в Visual Studio и о модели подключения Helpers к созданному в WebMatrix проекту. Действительно, в версии бета 1 ответов на эти вопросы еще не было. Тем не менее, релиз позволяет пополнять свое приложение дополнительными Helpers, а Visual Studio уже способен редактировать Razor файлы.

Начнем с поддержки в Visual Studio. Если говорить о WebMatrix, то тут в интерфейсе появилась специальная кнопка Visual Studio в разделе Launch. Нажатие на эту кнопку приводит к запуску Visual Studio и открытию там текущего проекта. Этот механизм удачно работает, когда Вы редактируете в Visual Studio файл HTML, JavaScript или CSS документы. Но, как только речь заходит о редактировании .cshtml файлов (то есть содержащих код на Razor), то тут Visual Studio бессилен. Но выход есть. Для того, чтобы дать возможность Visual Studio создавать Razor страницы, использовать IntelliSense систему, необходимо установить компонент ASP.NET MVC 3. Несмотря на название, этот компонент несет в себе все то, что позволяет работать с Razor.

Чтобы становить ASP.NET MVC 3, достаточно запустить Web Platform Installer и выбрать соответствующий компонент.

clip_image002

Как только ASP.NET MVC установлен, Visual Studio пополняется рядом шаблонов, один из который ASP.NET Web Site (Razor). (только создавайте не новый проект, а новый веб-сайт)

clip_image004

 

Теперь перейдем к вопросу работы с Helpers.

Напомню, что Helpers представляют собой готовые компоненты, способные выполнять некоторые функции (работа с Twitter, Facebook, отображение видео и т.д.)

В бета 1 все проекты на WebMatrix включали отдельную библиотеку, содержащую готовый набор Helpers. Поэтому код с твиттером из предыдущего поста работал нормально. Однако тут возникало две проблемы: даже стандартная библиотека с Helpers регулярно должна обновляться (расширяться); необходимо разработчикам предоставить не просто новый продукт, но и создать экосистему, позволяющую расширять существующий набор Helpers собственными разработками. Именно поэтому, уже в бета 2, Helpers перестали подключать автоматически, а разработчик получил возможность подключать как стандартные Helpers, так и разработанные другими разработчиками.

Подключение Helpers к Вашему проекту возможно с помощью ссылки ASP.NET Web Pages Administration, которая позволяет открыть окно администратора, позволяющее управлять Helpers в Вашем приложении.

На первом этапе, чтобы получить доступ к этому окну, Вам необходимо ввести пароль и подтвердить ввод, что позволяет получить сгенерировать специальный файл, содержащий Ваш пароль в каталоге веб-приложения. Чтобы гарантировать то, что пароль ввел владелец сайта (ведь функциональность доступна через веб), вам необходимо подтвердить Ваши права. Это делается крайне просто. В папке App_Data/Admin нужно найти файл _password.config и удалить в имени этого файла символ «_» (иными словами, если можете файлы в директории веб-приложения редактировать, то точно владелец сайтаJ).

Как только Вы переименовали файл, Вам становится доступна возможность разворачивать доступные Helpers:

clip_image006

Тут можно найти и стандартную библиотеку ASP.NET Web Helpers Library (без которой тот же Твиттер работать не будет), описание которых доступно по ссылке http://www.asp.net/webmatrix/tutorials/asp-net-web-pages-api-reference.

Следует отметить, что ряд Helpers подключается в виде уже готовой библиотеки, а часть – в виде исходных файлов .cshtml. Таким образом, Вы можете использовать некоторые Helpers, как прмер для написания собственных (дойдут руки, напишу).

Written by Sergiy Baydachnyy

22.02.2011 at 16:44

Опубликовано в Web Matrix

Tagged with