T4MVC – sposób na stringi w aplikacji ASP.NET MVC

Dlaczego T4MVC?

W aplikacji ASP.NET MVC w wielu miejscach wykorzystujemy stringi do określenia takich rzeczy, jak: nazwa kontrolera, nazwa akcji, nazwa widoku, ścieżka do pliku i wiele innych. Osobiście nie lubię używania napisów w kodzie aplikacji. Trudno znaleźć później użycia danego napisu – przez to, gdy zmieniamy na przykład nazwę akcji, bardzo łatwo o pominięcie jakiegoś linku w aplikacji, a to z kolei powoduje, że psujemy jej działanie. Do tego dochodzą problemy z literówkami czy brak podpowiadania dostępnych opcji (tutaj na przykład Resharper to ułatwia i podpowiada).

Zamiast bezpośrednich napisów w swoich aplikacjach używam albo klas ze stałymi dla napisów wewnętrznych aplikacji, które są używane tylko w kodzie, albo zasobów (Resources) dla napisów, które są pokazywane użytkownikowi.

W przypadku ASP.NET MVC można samemu ręcznie tworzyć klasy ze stałymi dla nazw kontrolerów, akcji, widoków itp. Albo można skorzystać z czegoś gotowego. 🙂 Jako wielki fan szablonów T4 (mam nawet przygotowaną prezentację z tej tematyki) w swoich aplikacjach wykorzystuję już istniejący szablon, który generuje wszystko sam. Szablon można pobrać z Nugeta i nazywa się T4MVC (strona projektu).

Na githubie projektu znajduje się bogata dokumentacja pokazująca wszystkie dostępne z szablonu opcje. Ja natomiast w tym wpisie skupię się najbardziej istotnych elementach z szablonu, od których warto zacząć.

Instalacja oraz uruchamianie T4MVC

Instalacja T4MVC jest bardzo prosta. Wystarczy skorzystać z Nugeta i zainstalować pakiet T4MVC. Po instalacji pakietu, aby wygenerować wszystkie elementy, należy przejść do pliku T4MVC.tt w głównym katalogu projektu oraz go zapisać. Zapisanie pliku szablonu T4 powoduje jego wykonanie, czyli na ogół wygenerowanie kodu.

Niestety szablon nie wykonuje się automatycznie, dlatego po każdej zmianie w kodzie (np. po dodaniu nowego kontrolera, dodaniu akcji, zmianie czegoś w kodzie itp.) należy uruchomić szablon jeszcze raz. Możemy też skorzystać z jednego z dodatków do Visual Studio, które wykonują szablony przed buildem. Polecam jeden z dwóch:

  • AutoT4 – do uruchamiania wszystkich szablonów w solution
  • AutoT4MVC – dedykowany dodatek dla szablonu T4MVC, który uruchamia tylko ten szablon.

Darmowy kurs Visual Studio

Pracując z setkami programistów, zauważyłem, że większość osób nie pracuje efektywnie w Visual Studio. W skrajnych przypadkach korzystali z kopiowania z wykorzystaniem menu Edit. Wiem, że to dziwne, ale naprawdę niektórzy tak pracują. Dlatego postanowiłem stworzyć kurs Visual Studio – aby pomóc koleżankom i kolegom w efektywniejszej pracy.

Przygotowałem 20 lekcji e-mail, w których pokażę Ci, w jaki sposób pracować efektywniej i szybciej w Visual Studio. Poznasz dodatki, bez których nie wyobrażam sobie pracy w tym IDE.

Po więcej informacji zapraszam na dedykowaną stronę kursu: Darmowy Kurs Visual Studio.

Quiz C#

Ostatnio przygotowałem również quiz C#, w którym możesz sprawdzić swoją wiedzę. Podejmiesz wyzwanie?

Napisy dla nazw kontrolerów oraz akcji

W pierwszej kolejności warto wyeliminować napisy dla nazw kontrolerów oraz nazw akcji. Poniżej znajduje się przykład przekierowania w kontrolerze do jakieś innej akcji, w starej wersji oraz nowej, wykorzystującej klasy wygenerowane przez szablon T4MVC.

Jak widać powyżej, zamiast przekazywania nazwy kontrolera oraz nazwy akcji w formie stringów, możemy skorzystać z wygenerowanych klas. W tym przypadku korzystamy z klasy MVC, która ma pola dla wszystkich kontrolerów i później metody dla akcji. Dodatkowo możemy też w ładny sposób przekazywać parametry do nowej akcji.

Podobna sytuacja jest w widokach i generowaniu różnego rodzaju linków:

Mamy bardzo podobną składnię, jak w przypadku kodu w kontrolerze, i możemy zrezygnować ze stringów.

Nową składnię możemy również wykorzystać w definicji routingu:

Nazwy widoków

W aplikacji ASP.NET MVC czasami potrzebujemy w kodzie również nazw widoków, chociażby do wywołania widoków partial czy w sytuacji, gdy współdzielimy ten sam widok między różnymi akcjami – na przykład dla akcji dodania oraz edycji używamy tego samego widoku. W takich sytuacjach T4MVC również pozwoli nam wyeliminować użycie stringów w kodzie:

Jak widać, możemy w prosty sposób wyciągnąć nazwę widoku stworzoną dla danego kontrolera czy nazwy wszystkich akcji.

Linki do plików

Kolejną fajną rzeczą, którą udostępnia T4MVC, to generowanie stałych dla różnego rodzaju plików w aplikacji, na przykład plików css, js, obrazków itp. Dzięki temu możemy wyeliminować kolejne napisy w plikach cshtml:

Podsumowanie

Jak widać powyżej, T4MVC znacznie ułatwia eliminację różnego rodzaju napisów w aplikacji ASP.NET MVC. Osobiście nie wyobrażam sobie projektu bez użycia tego szablonu. Pracując z różnymi zespołami, zauważyłem, że bardzo niewiele osób zna ten szablon (czy w ogóle szablony T4), a szkoda.

Gorąco zachęcam do zapoznania się z T4MVC i używania go w swoich projektach. Tradycyjnie na moim githubie jest projekt z demami.

A Ty używasz napisów w swoich aplikacjach? A może znasz już T4MVC lub używasz innego rozwiązania? Jeśli tak, podziel się tym w komentarzu!

3 thoughts on “T4MVC – sposób na stringi w aplikacji ASP.NET MVC

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *