Задача. Есть повторяющиеся блоки в связке Contoller+View, которые одинаковы для нескольких сайтов и хочется добавить их для этих сайтов как ссылку на библиотеку, так сказать 'расшарить'. А редактировать уже в одном проекте.
Решение.
Для решения этой задачи будем использовать библиотеку Razor Generator. Razor Generator позволяет делать прекомпиляцию наших View. Мы можем вынести файлы в отдельную библиотеку, скомпилировать их и они станут доступными в других проектах.
Посмотрим на примере. Создадим пустой проект. Назовем его Shared Views. В проекте повторим структуру MVC приложения: создадим папки Controllers, Models и Views и перенесем в папки файлы, которые мы хотим расшарить. Добавим необходимые ссылки на библиотеки MVC. Через NuGet добавим библиотеку RazorGenerator.
В свойствах каждого Представления(View) укажем:
Теперь можно проверить прекомпиляцию с помощью команды RunCustomTool. Для этого необходимо выбрать файл представления и вызвать контекстное меню.
После запуска команды должен появиться файл Представления с расширением *.cs
После того как мы сделаем Build проекта, файлы *.cs должны добавиться к каждому нашему Представлению. Теперь мы можем дать ссылку на наш проект в нескольких MVC сайтах.
Хочу также отметить следующую полезную вещь. Если для одного из сайтов вам нужно кастомизировать Представление(View), то достаточно разместить его по тому же пути, что и в проекте Shared Views, но уже в папках самого сайта. По приоритету сначала будет выполняться поиск представления в папках сайта, а уже потом в папках проекта Shared Views. Если вдруг такой приоритет не отработал, то его можно задать вручную в файле App_Start/RazorGeneratorMvcStart.cs указав для PrecompiledMvcEngine UsePhysicalViewsIfNewer = true.
Лирическое отступление. В прошлом сообщении про индексацию блога в Яндексе пообещал писать чаще, а в итог получается пишу еще реже... Так всегда бывает, поэтому впредь обещать ничего не буду. Буду писать как пишется.
Решение.
Для решения этой задачи будем использовать библиотеку Razor Generator. Razor Generator позволяет делать прекомпиляцию наших View. Мы можем вынести файлы в отдельную библиотеку, скомпилировать их и они станут доступными в других проектах.
Посмотрим на примере. Создадим пустой проект. Назовем его Shared Views. В проекте повторим структуру MVC приложения: создадим папки Controllers, Models и Views и перенесем в папки файлы, которые мы хотим расшарить. Добавим необходимые ссылки на библиотеки MVC. Через NuGet добавим библиотеку RazorGenerator.
В свойствах каждого Представления(View) укажем:
Теперь можно проверить прекомпиляцию с помощью команды RunCustomTool. Для этого необходимо выбрать файл представления и вызвать контекстное меню.
После запуска команды должен появиться файл Представления с расширением *.cs
После того как мы сделаем Build проекта, файлы *.cs должны добавиться к каждому нашему Представлению. Теперь мы можем дать ссылку на наш проект в нескольких MVC сайтах.
Хочу также отметить следующую полезную вещь. Если для одного из сайтов вам нужно кастомизировать Представление(View), то достаточно разместить его по тому же пути, что и в проекте Shared Views, но уже в папках самого сайта. По приоритету сначала будет выполняться поиск представления в папках сайта, а уже потом в папках проекта Shared Views. Если вдруг такой приоритет не отработал, то его можно задать вручную в файле App_Start/RazorGeneratorMvcStart.cs указав для PrecompiledMvcEngine UsePhysicalViewsIfNewer = true.
Лирическое отступление. В прошлом сообщении про индексацию блога в Яндексе пообещал писать чаще, а в итог получается пишу еще реже... Так всегда бывает, поэтому впредь обещать ничего не буду. Буду писать как пишется.
Комментарии
Отправить комментарий