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

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

Archive for the ‘Web Matrix’ Category

Использование 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

Продолжаем работать с WebMatrix

3 комментария

В предыдущем посте мы познакомились с продуктом WebMatrix, который позволяет создавать простые сайты, имея минимум знаний в программировании. Как было сказано, WebMatrix позволяет перемешивать серверный код и HTML на подобии классического ASP или PHP. Давайте рассмотрим простые синтаксические конструкции, которые будут полезны для написания любого серверного кода.

Начнем с того, что весь серверный код начинается с символа @. Так, если Вы планируете вставить в HTML значение переменной или статического свойства, то достаточно записать конструкцию @имя переменной/свойства в том месте, где Вы хотите получить значение (например, внутри элемента div). Если же Вы планируете писать более сложный код, содержащий определение переменных и какую-то логику, то подобный код необходимо заключить в фигурные скобки, а каждую отдельную строку заканчивать точкой с запятой.

Пример 1.

@DateTime.Now.Day

Пример 2.

@{
var i=3;
Response.Write(i);
}

Естественно, что при описании логики кода, Вы можете использовать стандартные конструкции любого языка: условия и циклы. Так, WebMatrix поддерживает два языка при разработке динамических страниц, это C# и VB.NET. Мы будем писать весь код на C#. Ниже Вы можете увидеть небольшой пример, использующий конструкцию if.

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        @{
        var message="";
        if (IsPost)
        {
            message="His name is Sergiy";
        }
        }
        <form action="" method="post">
            <p><label>Enter ID:</label>
               <input type="text" name="text2" />
            </p>
            <p><input type="submit" value="Add" /></p>
        </form>
        <p>@message</p>
    </body>
</html>

Обратите внимание, что в примере выше мы использовали свойство IsPost, позволяющее определить был ли сгенерирован запрос впервые или в результате отправки данных пользователем с этой же страницы. Если пользователь отправил данные, то мы возвращаем имя пользователя из базы (базы пока у нас нет, поэтому возвращаем мое имя).

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

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="" method="post">
            <p><label>Enter ID:</label>
               <input type="text" name="text2" />
            </p>
            <p><input type="submit" value="Add" /></p>
        </form>
        @{
        if (IsPost)
        {
            <p>His name is Sergiy</p>
        }
        }
    </body>
</html>

Выглядит потрясающе. Такого нельзя было выполнить в старом добром ASP.NET. Тут есть одно ограничение: вставки HTML в серверный код должны быть полноценными HTML тегами, иными словами нельзя вставить обычный текст. Если Вы все же решили вставить обычный текст, то и для этого случая есть решение – оператор @:. Вот наш пример, с использованием этого оператора:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="" method="post">
            <p><label>Enter ID:</label>
               <input type="text" name="text2" />
            </p>
            <p><input type="submit" value="Add" /></p>
        </form>
        <p>
        @{
        if (IsPost)
        {
            @: His name is Sergiy
        }
        }
        </p>
    </body>
</html>

Оператор @: указывается только в начале строки, и также допускает перемешивать HTML и серверные переменные. Наконец, если текст состоит из нескольких строк, то его вывод можно оформить и с помощью элемента text:

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <form action="" method="post">
            <p><label>Enter ID:</label>
               <input type="text" name="text2" />
            </p>
            <p><input type="submit" value="Add" /></p>
        </form>
        <p>
        @{
        if (IsPost)
        {
            <text>His name is Sergiy</text>
        }
        }
        </p>
    </body>
</html>

Разобравшись в правилах смешивания серверного кода и HTML, перейдем к вопросам определения переменных и простым синтаксическим конструкциям. Но это будет уже в следующем посте.

Written by Sergiy Baydachnyy

11.08.2010 at 16:50

Опубликовано в .NET Development, ASP.NET, Web Matrix

Tagged with

Начинаем работать с WebMatrix

12 комментариев

Каждый раз, рассказывая об ASP.NET, я сталкиваюсь с одной и той же проблемой со стороны НЕ Microsoft разработчиков: мы не хотим учить ООП, осваивать универсальный продукт Visual Studio, изучать громадный набор классов и т. д., чтобы создавать простые сайты. Действительно, ASP.NET позволяет создавать сложные корпоративные приложения, позволяющие выдерживать большие нагрузки. Но для небольших компаний большинство возможностей ASP.NET не применимы. Ведь большинству компаний нужны простые «визитки», содержащие минимум интерактивности и работы с данными. Вот поэтому все небольшие сайты и продолжают писать на PHP – ведь не нужно нанимать дорогого .NET разработчика, тем более, что сам сайт представляет собой набор HTML страниц. Именно поэтому, Microsoft представляет новый инструмент – Web Matrix, который позволяет покрыть потребности разработчиков небольших сайтов.

Итак, Web Matrix представляет собой легковесный и простой инструмент для создания веб-сайтов (именно веб-сайтов, а не веб-приложений). Инструмент, который ориентирован не только на начинающего ASP.NET разработчика, но и на PHP-разработчика.

Чтобы установить Web Matrix, достаточно воспользоваться следующей ссылкой http://www.microsoft.com/web/webmatrix/. Тут Вам будет предложено использовать Web Platform Installer, чтобы установить не только Web Matrix, но и все требуемые компоненты. Кроме того, Вы можете выбрать любые другие компоненты, предоставляемые Web Platform Installer (развернуть одно или несколько приложений из галереи, добавить возможности к Вашему веб-серверу и т. д.).

clip_image002

Установив Web Matrix и запустив его в первый раз, Вы получаете возможность открыть один из существующих сайтов, либо создать новый сайт на основе существующего шаблона или выбрав сайт из галереи.

clip_image004

Если Вы выбираете механизм создания сайта из галереи, то Web Matrix отображает несколько десятков уже готовых приложений. Данные веб-приложения чаще всего являются популярными в мире системами с открытым кодом, оптимизированные для работы на платформе Windows. Причем тут есть и PHP-приложения (например, WordPress) и ASP.NET приложения. Преимущество такого подхода состоит в том, что Вы сразу получаете готовый сайт, поддерживающий большое количество функционала. Как правило, перед публикацией такого сайта, Вы вносите минимум необходимых изменений (а многие публикуют сайт в исходном виде, особенно если речь идет о CMS). Естественно, чтобы использовать этот подход, необходимо потратить какое-то время на исследование возможностей существующих приложений.

clip_image006

Следующий подход к созданию сайтов состоит в использовании достаточно простых шаблонов, поставляемых вместе с Web Matrix.

clip_image008

Чаще всего Вы будете использовать Empty Site. Остальные шаблоны больше подходят для изучения возможностей Web Matrix.

Cоздав веб-сайт, Вы попадаете в главное окно Web Matrix, которое тут же предоставляет список активностей, которые Вы можете делать с созданным сайтом:

clip_image010

Главное окно оснащено Лентой, содержащей основные действия над сайтом (Запустить, Опубликовать и т. д.). Кроме того тут имеются четыре закладки, описывающие соответствующие рабочие пространства Web Matrix. Давайте рассмотрим каждую из закладок более подробно:

· Site – тут содержатся основные настройки сайта и присутствует возможность проанализировать список запросов ко всем составляющим сайта, чтобы определить потенциальные проблемы при работе со страницами (отсутствующие страницы на сайте);

· Files – это рабочее пространство позволяет просматривать все файлы, из которых состоит ваш веб-сайт, а также добавлять и редактировать файлы сайта. Фактически это основное рабочее пространство с которым придется работать;

· Databases – тут вы можете создать новую базу данных, используя SQL Server Compact Edition, либо подключиться к существующей базе данных, которая храниться в SQL Server или My SQL. Данное пространство имен позволяет взаимодействовать с базой данных, как на уровне отдельных объектов, так и на уровне данных;

· Reports – с помощью этого рабочего пространства Вы сможете создать и просмотреть отчет, позволяющий отобразить проблемы, которые могут возникать при индексации Вашего сайта поисковыми машинами. Отчет будет содержать не только список ошибок, но и рекомендации по их устранению.

Чтобы приступить к созданию нового сайта, перейдите в рабочее пространство Files и выберите существующий index.cshtml файл (двойным щелчком). Файл будет открыт на редактирование. Расширение cshtml представляет собой специальное расширение для файлов содержащих HTML-код и специальные вставки кода. Вот тут самое интересное! Компания Microsoft долгое время пропагандировала разделение кода и содержимого. Это замечательный подход, если речь идет о сложных приложениях, разрабатываемых годами и поддерживаемых разными разработчиками. Но, если речь идет и создании простого сайта, то разработчики предпочитают смешивать код и представление. Последнее легко сделать в PHP, но сложно реализовать в ASP.NET. Именно поэтому в Web Matrix были включены специальные объекты, позволяющие легко смешивать код, используя ASP.NET (в PHP в этом не было необходимости, так как там все было и так плохо, то есть хорошо). В качестве примера можно взять следующий код:

<!DOCTYPE html>

<html>

<head>

<title></title>

</head>

<body>

@DateTime.Now

</body>

</html>

Запустив приложение выше, Вы увидите текущую дату и время. Фактически мы обращаемся к свойству Now класса DateTime, определенного в .NET Framework. И, хотя этот код не похож на синтаксис ASP.NET, это ASP.NET, использующий новый синтаксис, получивший название RazorJ

Аналогично, используя код ниже, мы получим готовую страницу, отображающую мой твиттер:

<!DOCTYPE html>

<html>

<head>

<title></title>

</head>

<body>

@Twitter.Profile(«sbaidachni»)

</body>

</html>

clip_image012

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

Written by Sergiy Baydachnyy

10.08.2010 at 17:00

Опубликовано в .NET Development, ASP.NET, Web Matrix

Tagged with