Az ASP.NET MVC egyik kellemetlensége, hogy alapértelmezés szerint sok helyen stringekkel hivatkozunk a controllerekre, actionökre és view-kra. Aki valaha készített már ilyen projektet, az biztosan írt már az alábbihoz hasonló sort egy actionbe:
return View( "Index" );
vagy épp egy view-ba:
@Html.ActionLink( "Bejelentkezés", "Login" )
A szépséghibát a stringek jelentik, ugyanis ha ott hibázunk, az csak futási időben derül ki.
Ezen segít a T4MVC projekt, amit legegyszerűbben NuGet csomagként illeszthetünk be az alkalmazásunkba:
Ha már vannak a projektünkben controllerek, akkor ne lepődjünk meg, hogy a NuGet telepítő egy kicsit átírja őket:
Sőt kapunk néhány extra fájlt is a projektünkhöz:
Cserébe ezek után már típusosan hivatkozhatunk a nézetekre:
return View( Views.Index );
az actionökre:
@Html.ActionLink( "Bejelentkezés", MVC.Home.Login() )
és még sok minden másra, amiről bővebben a dokumentációból tájékozódhatunk.
Mivel a háttérben T4 template-ek alapján történik kódgenerálás, felmerülhet a kérdés, hogy mi történik, ha például felveszünk egy új actiont? Azt fogjuk tapasztalni, hogy simán hivatkozhatunk rá view-ból, még az IntelliSense is fel fogja kínálni, csak éppen futási időben fog elszállni ezzel a hibával (itt azért egy pillanatra elgondolkozhatunk, hogy vajon nem épp ezt akartuk-e elkerülni):
T4MVC was called incorrectly. You may need to force it to regenerate by right clicking on T4MVC.tt and choosing Run Custom Tool
Szerencsére nagyon beszédes hibaüzenet, és ha követjük, valóban meg is oldódik a probléma. Ha még ezzel sem szeretnénk foglalkozni, akkor használhatjuk az AutoT4MVC bővítményt, amely figyeli, hogy módosulnak-e a fájljaink, és szükség esetén automatikusan újrafuttatja a kód generátort.