Skip to content

Instantly share code, notes, and snippets.

@sunmeat
Created December 19, 2025 16:31
Show Gist options
  • Select an option

  • Save sunmeat/38d1b4d597f19b05d8d434dfa5844ca4 to your computer and use it in GitHub Desktop.

Select an option

Save sunmeat/38d1b4d597f19b05d8d434dfa5844ca4 to your computer and use it in GitHub Desktop.
ДЗ. трирівнева архітектура. рівень PL

Завдання: ASP.NET Core MVC. Багаторівнева архітектура. Рівень представлення. Веб-додаток «Музичний портал»

Модифікувати раніше розроблений веб-додаток «Музичний портал» з монолітною архітектурою таким чином, щоб у результаті вийшла трирівнева архітектура.

У цьому завданні необхідно реалізувати Presentation Layer (рівень представлення), з яким безпосередньо взаємодіє користувач.

Зокрема, потрібно:

  • Розробити класи-контролери (Controllers).
  • Розробити подання (Views) — Razor-шаблони (.cshtml).
  • За потреби розробити моделі представлення (View Models або Binding Models) — спеціальні класи для передачі даних між контролером і представленням.
  • Забезпечити валідацію трансферних моделей (DTO) як на стороні сервера, так і на стороні клієнта.
  • Для управління процесом валідації застосовувати атрибути валідації (Data Annotations, наприклад [Required], [StringLength], [RegularExpression] тощо).
  • Для відображення помилок валідації використовувати тег-хелпери валідації:
    • <asp-validation-summary> — для загального підсумку помилок.
    • <asp-validation-for> — для помилок конкретного поля.
  • Забезпечити стилізацію повідомлень про помилки (наприклад, за допомогою CSS-классів Bootstrap: text-danger, is-invalid, або власних стилів).

Рівень представлення повинен взаємодіяти виключно з рівнем бізнес-логіки (BLL) через абстракції (інтерфейси сервісів). Безпосередній доступ до рівня доступу до даних (DAL) з контролерів заборонений. Основний акцент — на чистоті контролерів, правильній передачі даних через View Models/DTO, повноцінній валідації та зручному відображенні помилок для користувача.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment