Portable Areas и T4MVC

В комментариях к кросспосту предыдущей статьи на хабрахабре появились вопросы о применимости T4MVC к модулям с «выделенными областями».
Это послужило для меня хорошим поводом попробовать T4MVC и осознать всю его мощь. По ходу ознакомления T4MVC был слегка модифицирован для поддержки «выделенных областей» (portable areas) и данные изменения были успешно включены в проект на codeplex автором T4MVC Дэвидом Эббо.

Ниже — детали интеграции T4MVC и Portable Areas.

Пожалуй, T4MVC выглядит более чем полноценной заменой строго-типизированным generic-ссылкам типа Html.ActionLink(x=>x.Action());, предоставляя полностью аналогичный функционал, при этом значительно выигрывая в производительности.

Однако, как оказалось, T4MVC в рамках portable areas банально не работал, поскольку ожидал найти контроллеры/вьюшки либо в папках Views/Controllers в корне проекта, либо в папках /Areas/AreaName/Controllers. А у portable areas четкое требование к расположению контроллеров в папке /AreaName/Controllers.

Собственно, после внесенных изменений использование T4MVC в проекте с Portable Area выглядит так:

  1. В файле настроек T4MVC.tt.settings.t4 найти строчку readonly string[] PortableAreas = new string[] {}; и вписать в массив имена ваших Portable Areas («Guestbook» для примера из предыдущего топика).
  2. Изменить префикс хелперов в константе const string HelpersPrefix = «MVCAreaName»; Это необходимо для предотвращения конфликтов имен, если вы будете использовать portable area в проектах, которые также используют T4MVC
  3. После Run Custom Tool все хелперы будут сгенерированы.
  4. Если в основном проекте вы тоже используете T4MVC не забудьте отключить генерацию хтмл-экстеншенов в основном проекте (static bool GenerateMvcT4Extensions = true;).
Опубликовать в Facebook
Опубликовать в Google Plus

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *