У меня есть веб-приложение MVC 3, для которого я хотел бы реализовать фреймворк для шаблонов / шаблонов (аналог Wordpress или Joomla, где вы можете включать или отключать различные темы для сайта) и хотел бы выяснить, что является лучшим способ сделать это.
Вот мои ограничения дизайна. Я покупаю HTML-шаблоны в таких местах, как Themeforest или Template Monster, и хочу, чтобы ряд этих шаблонов был доступен для использования в моем веб-приложении. Все шаблоны, которые вы обычно покупаете онлайн, имеют совершенно разные структуры макетов CSS, поэтому невозможно просто добавить новый CSS в вашу папку / Content / Themes /, и тогда ваши представления будут работать с этим, потому что вы также должны внести изменения в HTML в Виды. Поэтому для каждой новой темы в / Content / Themes мне также нужен новый набор папок / Views /, в котором обновляется HTML-код, чтобы использовать соответствующие классы CSS для этой темы.
Я знаю, что в идеальном мире у меня должна быть вся CSS-совместимость с моими HTML-представлениями (т. Е. Переключение тем основано исключительно на загрузке нового CSS-кода), но в этом случае это просто невозможно.
Так что мне интересно, есть ли способ сообщить MVC, где находится текущая папка Views по умолчанию? Возможная структура проекта, о которой я думаю, выглядит примерно так:
/ Themes / Theme1 / Views / (все страницы просмотра cshtml для этой темы находятся здесь)
/ Темы / Theme2 / Views / (и т.д.)
Я знаю, что могу заставить взгляды вот так
return View("~/Themes/Theme1/Views/Controller/Index.cshtml")
, который можно расширить для динамического определения папки темы с помощью чего-то подобного
return View(currentThemeFolder + "/Views/Controller/Index.cshtml")
но мне интересно, есть ли лучший способ сделать это? Возможно ли, что-то в global.asax, чтобы установить папку «Views» по умолчанию, так что вышеописанное не нужно? Должна быть точка входа в представления, потому что как вы можете указать, какой файл _viewstart.cshtml вызывается? И если я пойду на приведенный выше дизайн форсирования / «полужесткого кодирования» представлений, каковы его отрицательные стороны?
Я также хочу сказать, что я не слишком много смотрел на Области в MVC 3, и я не думаю, что это сработало бы здесь, потому что я понимаю, что это повлияет на вашу маршрутизацию, а также дублирует папки вашей модели и контроллеров. который я не хочу. У меня есть центральные папки Model и Controllers, но мне просто нужно несколько папок Views.