Статья Автор: Деникина Н.В., Деникин А.В.

Конвертер температур

ASP.NET Web Forms · ПрактикаЗанятие 2.5
SilverTests.ru · УчебникКонвертер температур — задание
            Конвертер температур

Практическое задание: создай страницу по образцу


🎯 Что нужно сделать

Создать страницу, которая переводит температуру из Цельсия в Фаренгейты и обратно. Пользователь вводит число, выбирает направление перевода и нажимает кнопку. Ответ появляется ниже.

Это первое самостоятельное задание. Сначала попробуй сделать сам, опираясь на образец и подсказки. Если застрянешь — раскрывай подсказки одну за одной. Полное решение — в самом конце.

1Образец: как должна выглядеть страница
localhost:5000/Convert.aspx

Конвертер температур

25
C → F F → C
25 °C = 77 °F
2Что должно работать
  • На странице есть поле ввода числа, два переключателя (C→F и F→C), кнопка и метка для результата
  • При нажатии «Перевести» рассчитывается значение и показывается ниже
  • Если ввели не число (например, «горячо») — показывается сообщение об ошибке
  • Результат показывается в красивом виде: 25 °C = 77 °F
Формулы. Для перевода Цельсия в Фаренгейт: F = C * 9 / 5 + 32. Обратно: C = (F - 32) * 5 / 9.
3Поиграй с готовой версией

Прежде чем писать код, попробуй, как это должно работать:

Конвертер температур

 
4Какие элементы тебе понадобятся
Что нужно Какой элемент
Поле для ввода числа asp:TextBox
Два переключателя в одной группе asp:RadioButton (с одинаковым GroupName)
Кнопка «Перевести» asp:Button
Место для ответа asp:Label
Важно про RadioButton. Чтобы переключатели работали как группа (выбран только один), у них должен быть одинаковый GroupName. Например: GroupName="dir".
5Подсказки (раскрывай по одной)

Сначала попробуй написать сам! Если совсем не получается — раскрой первую подсказку. Если и после неё не понятно — следующую.

Подсказка 1: с чего начать разметку

Создай в проекте новую страницу Convert.aspx. Внутри тега <form runat="server"> размести элементы по очереди: TextBox, два RadioButton, Button, Label. У каждого должен быть ID и runat="server".

Имена ID можно взять такие: txtValue, rbCF, rbFC, btnConvert, lblResult.

Подсказка 2: как сделать переключатели одной группой
<asp:RadioButton ID="rbCF" runat="server"
Text="C → F" GroupName="dir" Checked="true" />
<asp:RadioButton ID="rbFC" runat="server"
Text="F → C" GroupName="dir" />

GroupName="dir" у обоих — это и делает их группой. Checked="true" у первого — он будет выбран при открытии страницы.

Подсказка 3: каркас обработчика

В файле Convert.aspx.cs создай метод-обработчик кнопки. Помнишь сигнатуру с прошлого занятия?

protected void BtnConvert_Click(object sender, EventArgs e)
{
// 1. Прочитать число из txtValue.Text
// 2. Узнать, какой переключатель выбран (rbCF.Checked)
// 3. Применить формулу
// 4. Записать ответ в lblResult.Text
}

Не забудь привязать его в разметке: OnClick="BtnConvert_Click" у кнопки.

Подсказка 4: безопасное чтение числа

Текст из TextBox нужно превратить в число. Используй double.TryParse — он не упадёт, если введено не число:

bool ok = double.TryParse(txtValue.Text, out double value);
if (!ok)
{
lblResult.Text = "Введи число!";
return; // выходим из метода
}

После этой проверки в переменной value точно лежит число, и можно с ним работать.

Подсказка 5: как узнать, какой переключатель выбран

У RadioButton есть свойство Checked — оно равно true, если переключатель выбран. Проверяй так:

if (rbCF.Checked)
{
// перевод C → F
double result = value * 9 / 5 + 32;
lblResult.Text = value + " °C = " + result + " °F";
}
else
{
// перевод F → C
// напиши сам по аналогии
}
6Полное решение

Открой только если совсем не получается или хочешь проверить свою версию.

Показать решение целиком
Convert.aspx
1<%@ Page Language="C#" CodeBehind="Convert.aspx.cs"
2 Inherits="MyFirstSite.Convert" %>
3
4<!DOCTYPE html>
5<html>
6<head><title>Конвертер температур</title></head>
7<body>
8 <form id="form1" runat="server">
9
10 <h2>Конвертер температур</h2>
11
12 <p>Значение:
13 <asp:TextBox ID="txtValue" runat="server" />
14 </p>
15
16 <p>
17 <asp:RadioButton ID="rbCF" runat="server"
18 Text="C → F" GroupName="dir"
19 Checked="true" />
20 <asp:RadioButton ID="rbFC" runat="server"
21 Text="F → C" GroupName="dir" />
22 </p>
23
24 <asp:Button ID="btnConvert" runat="server"
25 Text="Перевести"
26 OnClick="BtnConvert_Click" />
27
28 <p><asp:Label ID="lblResult" runat="server" /></p>
29
30 </form>
31</body></html>
Convert.aspx.cs
1using System;
2
3namespace MyFirstSite
4{
5 public partial class Convert : System.Web.UI.Page
6 {
7 protected void BtnConvert_Click(object sender, EventArgs e)
8 {
9 // 1. Читаем число
10 bool ok = double.TryParse(txtValue.Text, out double value);
11 if (!ok)
12 {
13 lblResult.Text = "Введи число!";
14 return;
15 }
16
17 // 2. Считаем по нужной формуле
18 if (rbCF.Checked)
19 {
20 double result = value * 9 / 5 + 32;
21 lblResult.Text = value + " °C = " + result + " °F";
22 }
23 else
24 {
25 double result = (value - 32) * 5 / 9;
26 lblResult.Text = value + " °F = " + result + " °C";
27 }
28 }
29 }
30}

стр 10TryParse возвращает true, если строку удалось превратить в число, и кладёт результат в value.

стр 14return в void-методе = выход из обработчика без значения. Если число некорректное, дальше не идём.

стр 18 — проверяем, какой переключатель выбран. Если выбран не rbCF, значит выбран rbFC — это else.

7Если получилось — попробуй улучшить

Если базовая версия работает, попробуй добавить что-то от себя:

  • Округлять результат до 1 знака после запятой: Math.Round(result, 1)
  • Если температура ниже -273,15 °C — показать «Так не бывает!» (это абсолютный ноль)
  • Добавить третий переключатель: Кельвины (K = C + 273,15)
  • Раскрашивать ответ: ниже 0 — синим, выше 30 — красным (через lblResult.ForeColor)
  • Очищать поле ввода после расчёта: txtValue.Text = "";
Это не обязательно. Главная цель — заставить базовую версию работать. Улучшения — для тех, кто хочет копнуть глубже.

чему НАУчились 

Создание страницы с нуля по образцу. Размещение нескольких разных элементов на форме (TextBox, RadioButton, Button, Label). Чтение значений из C# через .Text и .Checked. Безопасное преобразование строки в число через TryParse. Условная логика в обработчике события. Запись результата в Label.

© SilverTests.ru · ASP.NET Web Forms · Практика · Конвертер температур
Печать