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

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

Продолжаем работать с 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 в 16:50

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

Tagged with

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

Subscribe to comments with RSS.

  1. Немного не потрясающе. Кажется был более компактный синтаксис
    @if (IsPost)
    {
    some action
    }
    а то с @{if(условие){действие}} кажется громоздким

    Jeje

    11.08.2010 at 18:21

    • Такой синтаксис также замечательно работает. Просто я до этого примера, перед условием определял переменную и не стер скобки:)

      Sergiy Baydachnyy

      12.08.2010 at 06:44


Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: