Prosta aplikacja do przeglądania wydarzeń
Na potrzeby dzisiejszego artykułu zaimplementuje prostą aplikację pozwalającą na przeglądanie kategoryzowanych wydarzeń.
Po wybraniu kategorii wydarzenia, użytkownik zostanie przekierowany do adresu URL w postaci – /Wydarzenia/Lista/Nazwakategorii, gdzie zostanie wyświetlona lista wydarzeń.
Po wyświetleniu listy wydarzeń, użytkownik może kliknąć jedno z nich, zostanie przekierowany do adresu URL /Wydarzenia/Szczegoly/WydarzenieId
Nowy typ projektu
Po zainstalowaniu ASP .NET MVC dostępny jest now typ projektu:
Po stworzeniu projektu struktura przedstawia się tak:
Struktura projektu
Na tym etapie najważniejsze w ASP .NET MVC są 3 foldery :
- /Controllers
- /Models
- /Views
W nich powinny znaleĽć się elementy o których pisałem w poprzednim artykule na ten temat. W poszczególnych folderach umieszczamy odpowiednio: kontrolery, model i widoki. Taka struktura nie jest przymusowa, ale polecana dla przejrzystości i wygody.
Kontroler
Do dalszego tworzenia mojej aplikacji do przeglądania wydarzeń dodam nowy kontroler, w tym celu można użyć opcji "Add new item" z menu kontekstowego:
Moja klasa WydarzeniaController dziedziczy z System.Web.MVC.Controller. Okazuje się, że nie jest to konieczne – równie dobrze kontroler będzie działać bez dziedziczenia, może tylko wtedy zabraknąć paru metod.
Zdefiniowałem w kontrolerze 3 nowe akcje, Kategorie – będzie wyświetlać listę kategorii, Lista – będzie wyświetlać listę wydarzeń w danej kategorii, a Szczegoly – będzie wyświetlać szczegółowe informacje o danym wydarzeniu.
Gdy zdefiniowany został WydarzeniaController w projekcie ASP .NET MVC będzie do niego kierować wszystkie adresy URL, które zawierają "/Wydarzenia". Oznacza, że gdy np: w żądaniu zostanie użyty "Wydarzenia/Kategorie" uruchomiona zostanie akcja(metoda) Kategorie i tak dalej.
Jedna ważna uwaga dotyczy akcji Lista:
Żeby były poprawnie generowane dla niej linki, należy dodać nową ścieżkę mapowania w Global.asax.cs:
Pełną implementację controllera można znaleĽć w pełnej wersji aplikacji na końcu artykułu.
Widok
Dla widoków również najlepiej stworzyć strukturę folderów, w której każdemu kontrolerowi odpowiada osobny folder. Dla każdej akcji zdefiniuje osobny plik .aspx z widokiem:
Jako przykład – markup dla Kategorie.aspx:
ViewData to pole służące do przechowywania danych, które mają być pokazane w widoku, w moim wypadku, ViewData jest silnie typowane – jest to bardzo wygodne, ponieważ można bez przeszkód używać intellisense. Żeby ViewData był silnie typowany należy odpowiednio skonstruować klasę strony w codebehind:
Wystarczy użyć generica, żeby nasz widok miał silnie typowane dane.
Podsumowanie
Muszę przyznać, że pisanie aplikacji w ten sposób w ASP sprawia bardzo dużą przyjemność. Całość udało mi się stworzyć bez opuszczania VS 2008, łącznie ze stworzeniem bazy danych, struktury tabel i wypełnienie ich danymi. W projekcie użyłem także Linq to SQL, praktycznie po paru kliknięciach miałem diagram klas i same klasy, nie musiałem wogóle martwić się o interakcje z bazą.
Słowo ostrzeżenia – MVC jest dostępne w tym momencie jako PREVIEW1 – co należy traktować jako wersję alfa, więc nie należy się za bardzo przywiązywać do jakichkolwiek rzeczy, może się zmienić.
Pełny projekt do ściągnięcia – uwaga w formacie Visual Studio 2008.
BTW. przy okazji polecam podcast z jednym z PMów z MVC