Widoki w Ilaro.Admin

Ilaro.Admin oprócz logiki oczywiście też posiada widoki, a żeby je przechować to trzeba je skompilować. Niestety ASP MVC nie ma takiej możliwości out of the box, więc wspomogłem się świetnym narzędziem RazorGenerator.

W skrócie, żeby go użyć wystarczy zainstalować paczkę nuget i ustawić dla widoku, który ma być skompilowany Custom Tool na RazorGenerator.

Mając już skompilowany widok musimy go jeszcze użyć. Ilaro.Admin rejestrujemy view engine, który potrafi korzystać z takich widoków.
W przypadku gdy natrafia w tej samej lokalizacji i na skompilowany i normalny widok, priorytet ma ten normalny.
Co oznacza, że jeśli w swoim projekcie dodamy area o nazwie IlaroAdmin i dodamy widok o takiej samej nazwie co już się znajduje w Ilaro, będzie on użyty zamiast oryginalnego widoku.
Dzięki temu można na przykład zmienić layout panelu administracyjnego tak by odpowiadał on bardziej naszym potrzebą.

Editor templates

Każdy typ danych ma przypisany swój domyślny template, który określa w jaki sposób będzie on edytowany (osobny template jest do wyświetlania). Domyślnie oczywiście stringi otrzymują pole tekstowe, liczby kontrolke spinnera, enumy selecta itd.
Dla niektórych typów danych istnieje kilka gotowych już templatów, np. dla stringa można wybrać prosty edytor html.

Jako parametr przekazujemy stringa, który jest nazwą templata. Templates.Editor.Html to zwykły util dla istniejących templatów.

Możemy także przekazać nazwę widoku istniejącego tylko w naszym projekcie.

Nadpisywanie widoków

Żeby nadpisać widok, trzeba stworzyć area o nazwie IlaroAdmin, następnie tworzymy widok o takiej samej nazwie i w tym samy katalogu.
Żeby widok działał poprawnie trzeba też dodać pare przestrzeni nazw w web configu w area IlaroAdmin.

Ostatnią rzeczą, o której trzeba pamiętać, to nadpisujący widok musi przyjmować taki sam model jak oryginalny.

PS
Pisząc ten post zauważyłem, że można rozszerzyć trochę view engine tak by korzystał z widoków zlokalizowanych w różnych assemblies. Dzięki temu w osobnym projekcie będzie można stworzyć nowy layout dla Ilaro.Admin i współdzielić go między projektami.

PS 2
Druga rzecz, która mi przyszła do głowy to, ze można zautomatyzować tworzenie klasy Templates używając T4 templates.

Dodaj komentarz

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