При работе с шаблонами отображения и редактирования достаточно быстро возникает необходимость повторного использования однажды написанных шаблонов.
Однако, по аналогии с portable areas, при попытке выноса шаблонов в отдельную сборку возникают проблемы, связанные с тем, что MVC ищет данные шаблоны в строго отведенных местах (папка ~/Views/Shared/DisplayTemplates или ~/Views/ControllerName/EditorTemplates).
Решает эту проблему очередной open-source продукт от Дэвида Эббо — Razor Generator.
Razor Generator позволяет компилировать MVC-шные вьюшки при компиляции проекта (а не в рантайме, как обычно), что дает возможность оптимизировать время «первого открытия странички» у клиента (во время которого обычно и производится компиляция). Также в проекте реализован кастомный VirtualPathProvider, что позволяет использовать эти скомпилированные вьюшки, как будто они лежат в аналогичных папках в вашем веб-проекте.
Этим мы и воспользуемся для распространения наших Display/EditorTemplates.
Установка Razor Generator достаточно подробно расписана на странице плагина: в Visual Studio необходимо установить расширение Razor Generator (через меню Tools->Extension Manager), а в сборку с шаблонами необходимо подключить NuGer пакет RazorGenerator.Mvc (его необходимо будет подключить и к проекту, который будет использовать сборку с шаблонами).
Перенесем пару шаблонов из предыдущей статьи в отдельную сборку (поместим их по привычному пути ~/Views/Shared/EditorTemplates):
При этом каждому из шаблонов необходимо выставить свойству Custom Tool значение RazorGenerator.
После сохранения и компиляции проекта мы должны получить для каждого шаблона по еще одной «скомпилированной» копии:
В основном проекте теперь необходимо лишь добавить референс на сборку с шаблонами, установить NuGet пакет RazorGenerator.Mvc, и с удовольствием и лёгкостью повторно использовать шаблоны редактирования/представления: