Modul 1 - Lekcija 1.1
Razumijevanje MVC arhitekture i konfiguracija razvojnog okruženja
📚 Nivo: Početni | 🎯 Praktični primjeri: 5
Model-View-Controller (MVC) je arhitekturni pattern koji razdvaja aplikaciju u tri glavne komponente: Model (podaci), View (interfejs) i Controller (koordinator).
Omogućava separation of concerns - svaka komponenta ima jasno definisanu odgovornost. To znači da možete mijenjati View bez uticaja na Model.
Model predstavlja poslovnu logiku i podatke aplikacije.
[Table("Departments", Schema = "Stats")]
public class Department {
[Key]
public int DepartmentID { get; set; }
[Required]
public string DepartmentCode { get; set; }
}
Odgovoran za prikaz podataka korisniku koristeći Razor sintaksu (HTML + C#).
@model IEnumerable<Department>
<table>
@foreach (var dept in Model) {
<tr><td>@dept.DepartmentCode</td></tr>
}
</table>
Prima zahtjeve, komunicira sa Modelom, i vraća View. To je "mozak".
public class DepartmentsController : Controller {
public ActionResult Index() {
var departments = GetDepartmentsFromDb();
return View(departments);
}
}
ASP.NET Web Forms pokušao je sakriti stateless prirodu HTTP protokola oponašajući desktop aplikacije.
"Debeli" ViewState, težak Unit Testing, loš HTML i kontrola, SEO problemi zbog .aspx URL-ova.
| Karakteristika | Web Forms | MVC 5 | .NET 9 |
|---|---|---|---|
| Koncept | Event-driven | Request/Response | Modularni API-first |
| HTML kontrola | Ograničena | Potpuna (Razor) | Potpuna (Tag Helpers) |
| Testabilnost | Jako teška | Dobra | Odlična (DI) |
| Platforma | Samo Windows | Samo Windows | Cross-platform |
Prijenos informacija mimo glavnog Modela.
ViewData["Kljuc"] = "Vr"; (Dictionary, zahtijeva cast)ViewBag.Kljuc = "Vr"; (Dynamic objekt, "ljepša" sintaksa)TempData["Kljuc"] = "Vr"; (Dictionary, preživljava jedan
Redirect)Zlatno pravilo: Koristite TempData za poruke nakon preusmjeravanja ("Uspješno!"). Za podatke na istoj stranici koristite ViewModel, a vrlo rijetko ViewBag.
MyMvcApp/
├── App_Start/ (Konfiguracija aplikacije: Bundle, Route...)
├── Controllers/ (Controller klase, npr. HomeController)
├── Models/ (Model klase)
├── Views/ (Razor view fajlovi)
│ ├── Home/ (View-ovi za HomeController)
│ └── Shared/ (Zajednički view-ovi: _Layout.cshtml)
├── Global.asax (Globalni event handleri)
└── Web.config (Konfiguracija, baze, itd.)
Konvencije imenovanja kontrolera (završavaju sa "Controller") i mapiranje foldera u Views omogućavaju sistemu automatsko povezivanje bez mnogo konfigurisanja.
Kreiranje ASP.NET Web Application (.NET Framework).
Često se postavlja pitanje: Da li koristiti lokalne fajlove ili CDN (Content Delivery Network)?
U ovoj lekciji naučili smo:
U Lekciji 1.2 detaljno istražujemo Global.asax,
App_Start i kako MVC obrađuje HTTP zahtjeve.