Pierwsza aplikacja w ASP .NET MVC – MVC część 2

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ń.

image

Po wyświetleniu listy wydarzeń, użytkownik może kliknąć jedno z nich, zostanie przekierowany do adresu URL /Wydarzenia/Szczegoly/WydarzenieId

image

Nowy typ projektu

Po zainstalowaniu ASP .NET MVC dostępny jest now typ projektu:

image

Po stworzeniu projektu struktura przedstawia się tak:

image

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:

image

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.

image

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:

image

Żeby były poprawnie generowane dla niej linki, należy dodać nową ścieżkę mapowania w Global.asax.cs:

image

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:

image

Jako przykład – markup dla Kategorie.aspx:

image

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:

image

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