1<%@ Page Language="C#" CodeBehind="Review.aspx.cs"
2 Inherits="MyFirstSite.Review" %>
3
4<!DOCTYPE html>
5<html>
6<head>
7 <title>Отзыв</title>
8 <link rel="stylesheet"
9 href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css">
10</head>
11<body>
12 <div class="container mt-4" style="max-width:500px">
13 <form id="form1" runat="server">
14
15 <!-- ═══ ФОРМА ═══ -->
16 <asp:Panel ID="pnlForm" runat="server" Visible="true">
17
18 <h2 class="mb-4">Оставь отзыв</h2>
19
20 <div class="mb-3">
21 <label class="form-label">Твоё имя:</label>
22 <asp:TextBox ID="txtName" runat="server"
23 CssClass="form-control"
24 Placeholder="Как тебя зовут?" />
25 </div>
26
27 <div class="mb-3">
28 <label class="form-label">Оценка:</label>
29 <asp:DropDownList ID="ddlRating" runat="server"
30 CssClass="form-select">
31 <asp:ListItem Value="1">1 — ужасно</asp:ListItem>
32 <asp:ListItem Value="2">2 — плохо</asp:ListItem>
33 <asp:ListItem Value="3">3 — нормально</asp:ListItem>
34 <asp:ListItem Value="4">4 — хорошо</asp:ListItem>
35 <asp:ListItem Value="5" Selected="True">5 — отлично</asp:ListItem>
36 </asp:DropDownList>
37 </div>
38
39 <div class="mb-3">
40 <label class="form-label">Отзыв:</label>
41 <asp:TextBox ID="txtReview" runat="server"
42 TextMode="MultiLine"
43 Rows="4"
44 CssClass="form-control"
45 Placeholder="Напиши, что понравилось..." />
46 </div>
47
48 <asp:Button ID="btnSubmit" runat="server"
49 Text="Отправить"
50 CssClass="btn btn-primary"
51 OnClick="BtnSubmit_Click" />
52
53 <asp:Label ID="lblError" runat="server"
54 CssClass="alert alert-danger mt-2"
55 style="display:block" Visible="false" />
56
57 </asp:Panel>
58
59 <!-- ═══ РЕЗУЛЬТАТ ═══ -->
60 <asp:Panel ID="pnlResult" runat="server" Visible="false">
61
62 <h2 class="mb-3">Спасибо за отзыв!</h2>
63
64 <div class="card">
65 <div class="card-body">
66 <asp:Label ID="lblStars" runat="server"
67 style="font-size:22px;color:#c9962c" />
68 <p class="card-text mt-2">
69 <asp:Label ID="lblReviewText" runat="server" />
70 </p>
71 <p class="card-text text-muted">
72 — <asp:Label ID="lblReviewName" runat="server" />
73 </p>
74 </div>
75 </div>
76
77 </asp:Panel>
78
79 </form>
80 </div>
81</body></html>
стр 16, 60 — две Panel: форма (Visible="true") и результат (Visible="false"). При отправке меняются местами.
стр 30 — form-select — Bootstrap-класс для <select>. Для DropDownList используется он, а не form-control.
стр 42 — TextMode="MultiLine" + Rows="4" — многострочное поле.
стр 53–55 — Label для ошибки. Visible="false" — изначально скрыт, появится только если пользователь оставил пустое поле.
стр 64–75 — Bootstrap-карточка: card → card-body → содержимое.
1using System;
2
3namespace MyFirstSite
4{
5 public partial class Review : System.Web.UI.Page
6 {
7 protected void BtnSubmit_Click(object sender, EventArgs e)
8 {
9 string name = txtName.Text.Trim();
10 string review = txtReview.Text.Trim();
11
12 // Валидация
13 if (name == "" || review == "")
14 {
15 lblError.Text = "Заполни все поля!";
16 lblError.Visible = true;
17 return;
18 }
19
20 // Звёздочки
21 int rating = int.Parse(ddlRating.SelectedValue);
22 string stars = new string('★', rating)
23 + new string('☆', 5 - rating);
24
25 // Заполняем карточку
26 lblStars.Text = stars;
27 lblReviewText.Text = review;
28 lblReviewName.Text = name;
29
30 // Переключаем панели
31 pnlForm.Visible = false;
32 pnlResult.Visible = true;
33 }
34 }
35}
стр 9–10 — Trim() обрезает пробелы. Без него строка " " прошла бы проверку.
стр 16 — lblError.Visible = true показывает Label с ошибкой. В отличие от CSS, Visible в ASP.NET контролирует, вообще рендерится ли элемент в HTML.
стр 22–23 — new string('★', 3) → "★★★". Заполненные + пустые = всегда 5.
стр 31–32 — главный трюк: форма пропадает, карточка появляется. Одна страница, два состояния.