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 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. Ciężko znaleźć później użycia danego napisu, przez co, gdy zmieniamy na przykład nazwę akcji, to wtedy bardzo łatwo o pominięcie jakiegoś linku w aplikacji, co 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 z 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 z stałymi dla nazwa 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 wykorzystuje już istniejący szablon, który generuje wszystko sam. Szablon można pobrać z Nugeta i nazywa się T4MVC (strona projektu).

Na github projektu znajduje się bogata dokumentacja pokazująca wszystkie dostępne opcje z szablonu. Ja natomiast w tym wpisie skupie się, że na 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. dodanie nowego kontrolera, dodanie 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.

Napisy dla nazwa kontrolerów oraz akcji

W pierwszej kolejności warto wyeliminować napisy dla nazwa kontrolerów oraz nazw akcji. Poniżej przykład przekierowania w kontrolerze do jakieś innej akcji, w starej wersji oraz nowej wykorzystującą 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 na 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 rodzaj linków:

Mamy bardzo podobną składnie jak w przypadku kodu w kontrolerze i możemy zrezygnować z stringów.

Nową składnie 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. Na przykład 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 ten sam widok. 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 stworzonych dla danego kontrolera, czy nazwy wszystkich akcji.

Linki do plików

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

Podsumowanie

Jak widać powyżej, T4MVC bardzo 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 w swoich projektach. Tradycyjnie na moim github jest projekt z demami.

A Ty używasz napisy w swoich aplikacjach, a może znasz już T4MVC lub używasz innego rozwiązania (jak tak to podziel się 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 *