В комментариях к кросспосту предыдущей статьи на хабрахабре появились вопросы о применимости T4MVC к модулям с «выделенными областями».
Это послужило для меня хорошим поводом попробовать T4MVC и осознать всю его мощь. По ходу ознакомления T4MVC был слегка модифицирован для поддержки «выделенных областей» (portable areas) и данные изменения были успешно включены в проект на codeplex автором T4MVC Дэвидом Эббо.
Ниже — детали интеграции T4MVC и Portable Areas.
Пожалуй, T4MVC выглядит более чем полноценной заменой строго-типизированным generic-ссылкам типа Html.ActionLink
Однако, как оказалось, T4MVC в рамках portable areas банально не работал, поскольку ожидал найти контроллеры/вьюшки либо в папках Views/Controllers в корне проекта, либо в папках /Areas/AreaName/Controllers. А у portable areas четкое требование к расположению контроллеров в папке /AreaName/Controllers.
Собственно, после внесенных изменений использование T4MVC в проекте с Portable Area выглядит так:
- В файле настроек T4MVC.tt.settings.t4 найти строчку readonly string[] PortableAreas = new string[] {}; и вписать в массив имена ваших Portable Areas («Guestbook» для примера из предыдущего топика).
- Изменить префикс хелперов в константе const string HelpersPrefix = «MVCAreaName»; Это необходимо для предотвращения конфликтов имен, если вы будете использовать portable area в проектах, которые также используют T4MVC
- После Run Custom Tool все хелперы будут сгенерированы.
- Если в основном проекте вы тоже используете T4MVC не забудьте отключить генерацию хтмл-экстеншенов в основном проекте (static bool GenerateMvcT4Extensions = true;).