ASP.NET Web Forms · ПрактикаЗанятие 2.5
SilverTests.ru · УчебникКонвертер температур — задание
Конвертер температур
Практическое задание: создай страницу по образцу
🎯 Что нужно сделать
Создать страницу, которая переводит температуру из Цельсия в Фаренгейты и обратно. Пользователь вводит число, выбирает направление перевода и нажимает кнопку. Ответ появляется ниже.
Это первое самостоятельное задание. Сначала попробуй сделать сам, опираясь на образец и подсказки. Если застрянешь — раскрывай подсказки одну за одной. Полное решение — в самом конце.
1Образец: как должна выглядеть страница
localhost:5000/Convert.aspx
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}
стр 10 — TryParse возвращает true, если строку удалось превратить в число, и кладёт результат в value.
стр 14 — return в 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.