Перспективные языки веб-разработки

Инструментарий WebMatrix для серверной разработки

Разбить на страницы
Показывать лекцию целиком

При работе над лекцией использовался Учебный курс по WebMatrix Владимира Юнева (http://blogs.msdn.com/b/vyunev/archive/2011/10/30/webmatrix-5-razor-asp-net.aspx). Автор выражает ему свою благодарность.

Примеры

Презентацию к данной лекции можете скачать здесь.

В предыдущих разделах нашего курса мы изучали способы разработки клиентских приложений, запускаемых в браузере пользователя. Однако, при разработке более или менее серьезного сайта нам придется осваивать технологии создания активных серверных страниц. Для чего нужны активные серверные страницы? Прежде всего для предоставления доступа к данным. Благодаря возможности хранения данных на веб-сервере можно создать электронный магазин, новостной сайт или сервис социальных сетей. Активные серверные страницы позволяют, также реализовывать сложную бизнес-логику, например, резервировать авиабилеты.Активные серверные страницы повышают безопасность веб-сайта, так как просмотрев их исходный код в браузере, невозможно ничего понять об их истинном содержании.

В Microsoft разработана своя версия активных серверных страниц, которая называется ASP.NET. Несмотря на огромные возможности этой технологии, у новичков на начальном этапе могут возникнуть некоторые сложности. Рассмотрим следующий пример. Допустим, нам нужно отобразить на экране некоторый текст. С помощью технологии ASP.NET это можно сделать следующим образом (sample_1):

<%@PageLanguage="C#"%>
<scriptrunat="server">
protectedvoidPage_Load(object sender, EventArgs e)
{
stringstr;
str = "Глядя на Мир, не перестаешь удивляться";
myLabel.Text = str;
    }
</script>
<!DOCTYPEhtml>
<htmlxmlns="http://www.w3.org/1999/xhtml">
<headrunat="server">
<title>Отображениетекста в метке</title>
</head>
<body>
<formid="form1"runat="server">
<div>
<asp:LabelID="myLabel"runat="server"/>
</div>
</form>
</body>
</html>
    

Согласитесь, получается сложновато… Нельзя ли упростить пример? Оказывается, можно. Резкое уменьшение количества кода позволяет очень интересная идея Microsoft - технология ASP.NetRazor. Сравните следующий код с предыдущим.

@{
varstr = "Время подобно искусному управителю, непрестанно производящему новые таланты взамен исчезнувших"; 
}
@str
    

Для ускоренной разработки веб-приложений на основе технологии ASP.NetMicrosoft предложила инструмент WebMatrix.В состав WebMatrix включены такие компоненты, как облегченный веб-сервер IIS DeveloperExpress, СУБД SQL Server CE 4, программные расширения ASP.Net и новый механизм отображения данных на веб-страницах в модели MVC (ModelViewController) под названием ASP.Net Razor.

WebMatrix дает возможность применять готовые веб-приложения с открытым исходным кодом, содержит разнообразные встроенные шаблоны веб-страниц и позволяет программировать новые приложения. WebMatrix - это мощный, простой и бесплатный инструмент, с которым легко и просто создавать современные веб-сайты. В галерее WebMatrixимеются наиболее популярные приложения, созданные с использованием PHP и ASP.NET - WordPress, Drupal, DotNetNuke, SugarCRM и другие. Для облегчения работы программиста в WebMatrix имеется поддержка IntelliSense. WebMatrix так же поддерживает автоматическое завершение кода JavaScript. В WebMatrixимеется ряд инструментов (LESS и Sass), существенно облегчающих разработку каскадных таблиц стилей. LESS и Sass предлагают разработчикам такие возможности, как переменные, примеси (mixins), вложения, встроенные функции общего назначения.

Для упрощения написания JavaScript-кода в WebMatrix имеется редактор CoffeeScript, предлагающий подсветку синтаксиса, выделение регионов кода, завершение кода.

В настоящее время все большую популярность приобретают мобильные устройства. В WebMatrix имеется множество шаблоновпроектов (например, NodeStarterTemplate). В WebMatrix можно увидеть как ваш будущий сайт будет работать на разных платформах (десктоп/ноутбук/нетбук/планшет/смартфон). При разработке мобильных приложений используется технология jQueryMobile. В WebMatrix имеются эмуляторыWindowsPhone и iPhone/iPad. Планируется добавить эмулятор Android.

Технология Razor

При работе с технологией Razor веб-странички, в отличие от ASP.NET-страниц, имеющих расширение .aspx, будут иметь расширение .cshtml (.vbhtml).

Покажем на примере, как можно создавать веб-странички с расширением .cshtml в программе WebMatrix.

Вначале запускаем программу WebMatrix.

Выбираем пункт Templates (шаблоны). Далее, выбираем пункт EmptySite (Пустой сайт), указываем название сайта (myFirstRazor).

Далее, щелкаем правой кнопкой мыши по названию сайта и добавляем файл (NewFile…).

Из списка появившихся шаблонов выбираем тип файла CSHTML и указываем имя файла - DateTime.cshtml.

Далее, вводим следующий код(sample_2)

@{
varmyDate=DateTime.Now.Date;
varmyDay=DateTime.Now.Day;
varmyMonth=DateTime.Now.Month;
varmyYear=DateTime.Now.Year;
varmyDayOfWeek=DateTime.Now.DayOfWeek;
}

<!DOCTYPEhtml>

<htmllang="en">
<head>
<metacharset="utf-8"/>
<styletype="text/css">
p{
font-family: 'Comic Sans MS'; color: #0094ff;
}
</style>
<title>Знакомство с типом Дата/Время</title>
</head>
<body>
<p>Сегодняшняя дата: @myDate</p>
<p>@myDay-й день месяца</p>
<p>День недели - @myDayOfWeek</p>
<p>@myMonth-й месяц</p>
<p>@myYear-й год</p>
</body>
</html>
    

Запускаем проект и получаем следующий результат:

Здесь хотелось бы отметить следующее.

  • Скриптовая часть заключается в серверные скобки:
    @{
    ………………
    
    }
          
  • Использовался язык программирования JavaScript
  • Помимо JavaScript вполне можно использовать и C#.В следующие примере мы покажем способ нахождения суммы вещественного массива, написанный на языке C# (sample_3).

    <styletype="text/css">
    p {
    font-family: 'Comic Sans MS';color: #0094ff;
        }
    </style>
    
    @{
    double[] alpha = { -3.8, 11.6, 5.9, 13.4, 24.67 };
    int n = alpha.Length;
    double sum = 0;
    stringstr = "";
    inti;
    
    for (i = 0; i<n;i++ )
        {
    str+=alpha[i] + " ";
            sum+=alpha[i];
        }
    
    }
    <p>Массив: @str</p>
    <p>Сумма массива: @sum</p>
        

    Обратите внимание, что код нашей веб-страницы может быть очень аскетичным. Рассмотрим еще один пример работы с массивом (sample_4).

    @{
    string[] Planets = {"Меркурий","Венера","Земля","Марс",
    "Юпитер","Сатурн","Уран", "Нептун" };
    <p>Количество планет Солнечной системы:  @Planets.Length</p>
    foreach (var Planet in Planets)
    {
    <br/>@Planet
     }
    
    <h3>Обратный порядок планет:</h3>
    Array.Reverse(Planets);
    foreach (varreversedItemin Planets)
     {
    <br/>@reversedItem
     }
    
    }
        

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

    Условныйоператор (sample_5)

    <styletype="text/css">
    p {
    font-family: 'Comic Sans MS';color: #0094ff;
        }
    </style>
    @{
    var a1 = 3;
    var a2 = -5;
    varstr="";
    var b1=a1;
    if (a1 > a2) { b1 = a1; } else { b1 = a2; }
    str = "Наибольшее из двух чисел = " + b1;
    }
    <p>Первое число: @a1</p>
    <p>Второе число: @a2</p>
    <p>@str</p>
            

    Переключатель (sample_6)

    <styletype="text/css">
    p {
    font-family: 'Comic Sans MS'; color: #0094ff;
        }
    </style>
    
    @{
    var weekday = "Пятница";
    var greeting = "";
    switch(weekday)
    {
    case"Понедельник": greeting = "Отдых от выходного дня"; break;
    case"Вторник": greeting = "Подготовка к рабочему дню"; break;
    case"Среда": greeting = "Рабочий день"; break;
    case"Четверг": greeting = "Отдых от рабочего дня"; break;
    case"Пятница": greeting = "Подготовка к выходному дню"; break;
    case"Суббота": greeting = "Первый выходной день"; break;
    case"Воскресенье": greeting = "Второй выходной день"; break;        
    default: greeting = "Сегодня какой-то другой день, отлично."; break;
    }
    <p>Сегодня @weekday,  @greeting</p>
    }
            

    В следующем примере (sample_7) мы покажем прием работы со словарем. Программа будет генерировать библейские заповеди.

    <styletype="text/css">
    h1 {
    font-family: 'Comic Sans MS'; color: #0094ff;
        }
    </style>
    
    @{
    var Precept = newDictionary<int, string>();
        Precept.Add(1, "Я Господь, Бог твой; да не будет у тебя других богов пред лицом Моим");
    Precept.Add(2, "Не делай себе кумира и никакого изображения того, что на небе вверху, 
    что на земле внизу, и что в воде ниже земли. Не поклоняйся им и не служи им; ибо Я Господь, Бог твой, 
    Бог ревнитель, наказывающий детей за вину отцов до третьего и четвёртого [рода], ненавидящих Меня, 
    и творящий милость до тысячи родов любящим Меня и соблюдающим заповеди Мои");
    Precept.Add(3, "Не произноси имени Господа, Бога твоего, напрасно; ибо Господь не оставит без наказания того, 
    кто произносит имя Его напрасно");
    Precept.Add(4, "Помни день субботний, чтобы святить его. Шесть дней работай, 
    и делай всякие дела твои; а день седьмый - суббота Господу, Богу твоему: не делай в оный никакого дела ни ты, 
    ни сын твой, ни дочь твоя, ни раб твой, ни рабыня твоя, ни скот твой, ни пришлец, который в жилищах твоих. 
    Ибо в шесть дней создал Господь небо и землю, море и все, что в них; а в день седьмый почил. 
    Посему благословил Господь день субботний и освятил его");
    Precept.Add(5, "Почитай отца твоего и мать твою, чтобы продлились дни твои на земле, 
    которую Господь, Бог твой, дает тебе");
    Precept.Add(6, "Не убивай");
    Precept.Add(7, "Не прелюбодействуй");
    Precept.Add(8, "Не кради");
    Precept.Add(9, "Не произноси ложного свидетельства на ближнего твоего");
    Precept.Add(10, "Не желай дома ближнего твоего; не желай жены ближнего твоего, ни раба его, 
    ни рабыни его, ни вола его, ни осла его, ничего, что у ближнего твоего");
    
    Random rand = newRandom();
    int n=rand.Next(1, 10);
    stringstr = Precept[n];
    }
    
    <h1>@str</h1>
        

    В заключение мы продемонстрируем работу с формой (sample_8). В форме мы разместим три поля ввода и кнопку. В поля ввода пользователь будет вводить коэффициенты квадратного уравнения. При нажатии на кнопку программа будет выдавать на экран результат.

    @{
    varstr = "";
    if(IsPost) {
    // Извлечение чисел, введенных пользователем.
    
    var a = Request["txtA"].AsFloat();
    var b = Request["txtB"].AsFloat();
    var c = Request["txtC"].AsFloat();
    
    var d = System.Math.Pow(b, 2) - 4 * a * c;
    
    if (d< 0) { str = "Действительных корней нет!"; } 
    
    else
    {
    var x1=(-b-System.Math.Sqrt(d))/(2*a);
    var x2 = (-b + System.Math.Sqrt(d)) / (2 * a);
    str = "x1 = " + x1 + ", x2 = " + x2;    
    }                        
    
    }
    }
    <!DOCTYPEhtml>
    <html>
    <head>
    <title></title>
    <metahttp-equiv="content-type"content="text/html;charset=utf-8"/>
    <styletype="text/css">
    body {background-color: beige; font-family: Verdana, Arial;
    margin: 50px; }
    form {padding: 10px; border-style: solid; width: 250px;}
    </style>
    </head>
    <body>
    <p>Решение квадратного уравнения</p>
    <formaction=""method="post">
    <p><labelfor="txtA">a=</label>
    <inputtype="text"name="txtA"/>
    </p>
    <p><labelfor="txtB">b=</label>
    <inputtype="text"name="txtB"/>
    </p>
    
    <p><labelfor="txtC">c=</label>
    <inputtype="text"name="txtC"/>
    </p>
    <p><inputtype="submit"value="Вычислить"/></p>
    
    </form>
    <p>@str</p>
    </body>
    </html>
        

    На практических занятиях мы изучим возможности технологии ASP.NETRazor для работы с базами данных и создания галерей изображений.

    Страницы:

    При работе над лекцией использовался Учебный курс по WebMatrix Владимира Юнева (http://blogs.msdn.com/b/vyunev/archive/2011/10/30/webmatrix-5-razor-asp-net.aspx). Автор выражает ему свою благодарность.

    Примеры

    Презентацию к данной лекции можете скачать здесь.

    В предыдущих разделах нашего курса мы изучали способы разработки клиентских приложений, запускаемых в браузере пользователя. Однако, при разработке более или менее серьезного сайта нам придется осваивать технологии создания активных серверных страниц. Для чего нужны активные серверные страницы? Прежде всего для предоставления доступа к данным. Благодаря возможности хранения данных на веб-сервере можно создать электронный магазин, новостной сайт или сервис социальных сетей. Активные серверные страницы позволяют, также реализовывать сложную бизнес-логику, например, резервировать авиабилеты.Активные серверные страницы повышают безопасность веб-сайта, так как просмотрев их исходный код в браузере, невозможно ничего понять об их истинном содержании.

    В Microsoft разработана своя версия активных серверных страниц, которая называется ASP.NET. Несмотря на огромные возможности этой технологии, у новичков на начальном этапе могут возникнуть некоторые сложности. Рассмотрим следующий пример. Допустим, нам нужно отобразить на экране некоторый текст. С помощью технологии ASP.NET это можно сделать следующим образом (sample_1):

    <%@PageLanguage="C#"%>
    <scriptrunat="server">
    protectedvoidPage_Load(object sender, EventArgs e)
    {
    stringstr;
    str = "Глядя на Мир, не перестаешь удивляться";
    myLabel.Text = str;
        }
    </script>
    <!DOCTYPEhtml>
    <htmlxmlns="http://www.w3.org/1999/xhtml">
    <headrunat="server">
    <title>Отображениетекста в метке</title>
    </head>
    <body>
    <formid="form1"runat="server">
    <div>
    <asp:LabelID="myLabel"runat="server"/>
    </div>
    </form>
    </body>
    </html>
        

    Согласитесь, получается сложновато… Нельзя ли упростить пример? Оказывается, можно. Резкое уменьшение количества кода позволяет очень интересная идея Microsoft - технология ASP.NetRazor. Сравните следующий код с предыдущим.

    @{
    varstr = "Время подобно искусному управителю, непрестанно производящему новые таланты взамен исчезнувших"; 
    }
    @str
        

    Для ускоренной разработки веб-приложений на основе технологии ASP.NetMicrosoft предложила инструмент WebMatrix.В состав WebMatrix включены такие компоненты, как облегченный веб-сервер IIS DeveloperExpress, СУБД SQL Server CE 4, программные расширения ASP.Net и новый механизм отображения данных на веб-страницах в модели MVC (ModelViewController) под названием ASP.Net Razor.

    WebMatrix дает возможность применять готовые веб-приложения с открытым исходным кодом, содержит разнообразные встроенные шаблоны веб-страниц и позволяет программировать новые приложения. WebMatrix - это мощный, простой и бесплатный инструмент, с которым легко и просто создавать современные веб-сайты. В галерее WebMatrixимеются наиболее популярные приложения, созданные с использованием PHP и ASP.NET - WordPress, Drupal, DotNetNuke, SugarCRM и другие. Для облегчения работы программиста в WebMatrix имеется поддержка IntelliSense. WebMatrix так же поддерживает автоматическое завершение кода JavaScript. В WebMatrixимеется ряд инструментов (LESS и Sass), существенно облегчающих разработку каскадных таблиц стилей. LESS и Sass предлагают разработчикам такие возможности, как переменные, примеси (mixins), вложения, встроенные функции общего назначения.

    Для упрощения написания JavaScript-кода в WebMatrix имеется редактор CoffeeScript, предлагающий подсветку синтаксиса, выделение регионов кода, завершение кода.

    В настоящее время все большую популярность приобретают мобильные устройства. В WebMatrix имеется множество шаблоновпроектов (например, NodeStarterTemplate). В WebMatrix можно увидеть как ваш будущий сайт будет работать на разных платформах (десктоп/ноутбук/нетбук/планшет/смартфон). При разработке мобильных приложений используется технология jQueryMobile. В WebMatrix имеются эмуляторыWindowsPhone и iPhone/iPad. Планируется добавить эмулятор Android.

    Технология Razor

    При работе с технологией Razor веб-странички, в отличие от ASP.NET-страниц, имеющих расширение .aspx, будут иметь расширение .cshtml (.vbhtml).

    Покажем на примере, как можно создавать веб-странички с расширением .cshtml в программе WebMatrix.

    Вначале запускаем программу WebMatrix.

    Выбираем пункт Templates (шаблоны). Далее, выбираем пункт EmptySite (Пустой сайт), указываем название сайта (myFirstRazor).

    Далее, щелкаем правой кнопкой мыши по названию сайта и добавляем файл (NewFile…).

    Из списка появившихся шаблонов выбираем тип файла CSHTML и указываем имя файла - DateTime.cshtml.

    Далее, вводим следующий код(sample_2)

    @{
    varmyDate=DateTime.Now.Date;
    varmyDay=DateTime.Now.Day;
    varmyMonth=DateTime.Now.Month;
    varmyYear=DateTime.Now.Year;
    varmyDayOfWeek=DateTime.Now.DayOfWeek;
    }
    
    <!DOCTYPEhtml>
    
    <htmllang="en">
    <head>
    <metacharset="utf-8"/>
    <styletype="text/css">
    p{
    font-family: 'Comic Sans MS'; color: #0094ff;
    }
    </style>
    <title>Знакомство с типом Дата/Время</title>
    </head>
    <body>
    <p>Сегодняшняя дата: @myDate</p>
    <p>@myDay-й день месяца</p>
    <p>День недели - @myDayOfWeek</p>
    <p>@myMonth-й месяц</p>
    <p>@myYear-й год</p>
    </body>
    </html>
        

    Запускаем проект и получаем следующий результат:

    Здесь хотелось бы отметить следующее.

  • Скриптовая часть заключается в серверные скобки:
    @{
    ………………
    
    }
          
  • Использовался язык программирования JavaScript
  • Помимо JavaScript вполне можно использовать и C#.В следующие примере мы покажем способ нахождения суммы вещественного массива, написанный на языке C# (sample_3).

    <styletype="text/css">
    p {
    font-family: 'Comic Sans MS';color: #0094ff;
        }
    </style>
    
    @{
    double[] alpha = { -3.8, 11.6, 5.9, 13.4, 24.67 };
    int n = alpha.Length;
    double sum = 0;
    stringstr = "";
    inti;
    
    for (i = 0; i<n;i++ )
        {
    str+=alpha[i] + " ";
            sum+=alpha[i];
        }
    
    }
    <p>Массив: @str</p>
    <p>Сумма массива: @sum</p>
        

    Обратите внимание, что код нашей веб-страницы может быть очень аскетичным. Рассмотрим еще один пример работы с массивом (sample_4).

    @{
    string[] Planets = {"Меркурий","Венера","Земля","Марс",
    "Юпитер","Сатурн","Уран", "Нептун" };
    <p>Количество планет Солнечной системы:  @Planets.Length</p>
    foreach (var Planet in Planets)
    {
    <br/>@Planet
     }
    
    <h3>Обратный порядок планет:</h3>
    Array.Reverse(Planets);
    foreach (varreversedItemin Planets)
     {
    <br/>@reversedItem
     }
    
    }
        

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

    Условныйоператор (sample_5)

    <styletype="text/css">
    p {
    font-family: 'Comic Sans MS';color: #0094ff;
        }
    </style>
    @{
    var a1 = 3;
    var a2 = -5;
    varstr="";
    var b1=a1;
    if (a1 > a2) { b1 = a1; } else { b1 = a2; }
    str = "Наибольшее из двух чисел = " + b1;
    }
    <p>Первое число: @a1</p>
    <p>Второе число: @a2</p>
    <p>@str</p>
            

    Переключатель (sample_6)

    <styletype="text/css">
    p {
    font-family: 'Comic Sans MS'; color: #0094ff;
        }
    </style>
    
    @{
    var weekday = "Пятница";
    var greeting = "";
    switch(weekday)
    {
    case"Понедельник": greeting = "Отдых от выходного дня"; break;
    case"Вторник": greeting = "Подготовка к рабочему дню"; break;
    case"Среда": greeting = "Рабочий день"; break;
    case"Четверг": greeting = "Отдых от рабочего дня"; break;
    case"Пятница": greeting = "Подготовка к выходному дню"; break;
    case"Суббота": greeting = "Первый выходной день"; break;
    case"Воскресенье": greeting = "Второй выходной день"; break;        
    default: greeting = "Сегодня какой-то другой день, отлично."; break;
    }
    <p>Сегодня @weekday,  @greeting</p>
    }
            

    В следующем примере (sample_7) мы покажем прием работы со словарем. Программа будет генерировать библейские заповеди.

    <styletype="text/css">
    h1 {
    font-family: 'Comic Sans MS'; color: #0094ff;
        }
    </style>
    
    @{
    var Precept = newDictionary<int, string>();
        Precept.Add(1, "Я Господь, Бог твой; да не будет у тебя других богов пред лицом Моим");
    Precept.Add(2, "Не делай себе кумира и никакого изображения того, что на небе вверху, 
    что на земле внизу, и что в воде ниже земли. Не поклоняйся им и не служи им; ибо Я Господь, Бог твой, 
    Бог ревнитель, наказывающий детей за вину отцов до третьего и четвёртого [рода], ненавидящих Меня, 
    и творящий милость до тысячи родов любящим Меня и соблюдающим заповеди Мои");
    Precept.Add(3, "Не произноси имени Господа, Бога твоего, напрасно; ибо Господь не оставит без наказания того, 
    кто произносит имя Его напрасно");
    Precept.Add(4, "Помни день субботний, чтобы святить его. Шесть дней работай, 
    и делай всякие дела твои; а день седьмый - суббота Господу, Богу твоему: не делай в оный никакого дела ни ты, 
    ни сын твой, ни дочь твоя, ни раб твой, ни рабыня твоя, ни скот твой, ни пришлец, который в жилищах твоих. 
    Ибо в шесть дней создал Господь небо и землю, море и все, что в них; а в день седьмый почил. 
    Посему благословил Господь день субботний и освятил его");
    Precept.Add(5, "Почитай отца твоего и мать твою, чтобы продлились дни твои на земле, 
    которую Господь, Бог твой, дает тебе");
    Precept.Add(6, "Не убивай");
    Precept.Add(7, "Не прелюбодействуй");
    Precept.Add(8, "Не кради");
    Precept.Add(9, "Не произноси ложного свидетельства на ближнего твоего");
    Precept.Add(10, "Не желай дома ближнего твоего; не желай жены ближнего твоего, ни раба его, 
    ни рабыни его, ни вола его, ни осла его, ничего, что у ближнего твоего");
    
    Random rand = newRandom();
    int n=rand.Next(1, 10);
    stringstr = Precept[n];
    }
    
    <h1>@str</h1>
        

    В заключение мы продемонстрируем работу с формой (sample_8). В форме мы разместим три поля ввода и кнопку. В поля ввода пользователь будет вводить коэффициенты квадратного уравнения. При нажатии на кнопку программа будет выдавать на экран результат.

    @{
    varstr = "";
    if(IsPost) {
    // Извлечение чисел, введенных пользователем.
    
    var a = Request["txtA"].AsFloat();
    var b = Request["txtB"].AsFloat();
    var c = Request["txtC"].AsFloat();
    
    var d = System.Math.Pow(b, 2) - 4 * a * c;
    
    if (d< 0) { str = "Действительных корней нет!"; } 
    
    else
    {
    var x1=(-b-System.Math.Sqrt(d))/(2*a);
    var x2 = (-b + System.Math.Sqrt(d)) / (2 * a);
    str = "x1 = " + x1 + ", x2 = " + x2;    
    }                        
    
    }
    }
    <!DOCTYPEhtml>
    <html>
    <head>
    <title></title>
    <metahttp-equiv="content-type"content="text/html;charset=utf-8"/>
    <styletype="text/css">
    body {background-color: beige; font-family: Verdana, Arial;
    margin: 50px; }
    form {padding: 10px; border-style: solid; width: 250px;}
    </style>
    </head>
    <body>
    <p>Решение квадратного уравнения</p>
    <formaction=""method="post">
    <p><labelfor="txtA">a=</label>
    <inputtype="text"name="txtA"/>
    </p>
    <p><labelfor="txtB">b=</label>
    <inputtype="text"name="txtB"/>
    </p>
    
    <p><labelfor="txtC">c=</label>
    <inputtype="text"name="txtC"/>
    </p>
    <p><inputtype="submit"value="Вычислить"/></p>
    
    </form>
    <p>@str</p>
    </body>
    </html>
        

    На практических занятиях мы изучим возможности технологии ASP.NETRazor для работы с базами данных и создания галерей изображений.

    Вернуться к учебному плану