Создание дизайна темы сайта MVC 3 - PullRequest
0 голосов
/ 30 июля 2011

У меня есть веб-приложение 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.

1 Ответ

1 голос
/ 30 июля 2011

Вы можете расширить VirtualPathProviderViewEngine, чтобы создать свой собственный механизм просмотра тем.Вот как: http://www.singingeels.com/Articles/Creating_a_Custom_View_Engine_in_ASPNET_MVC.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...