У меня есть требование для поддержки тематики страниц моего сайта. Я делаю это путем динамического выбора главной страницы на основе текущей темы.
Я настроил структуру каталогов так
/ Shared / MasterPages / theme1 / Master1.master
/shared/masterpages/theme1/Master2.master
/shared/masterpages/theme1/Master3.master
/ Shared / MasterPages / theme2 / Master1.master
/shared/masterpages/theme2/Master2.master
/shared/masterpages/theme2/Master3.master
И я все еще использую директиву страницы в представлении
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/shared/masterpages/theme1/Master1.Master"%>
Я все еще хотел бы использовать свойство MasterPageFile представления и просто изменить каталог темы.
Я могу думать только о трех способах сделать это, ни один из них не звучит замечательно.
- Создайте собственный класс BaseView, который использует OnPreInit для изменения темы, например this
- Создайте некоторый файл XML или таблицу базы данных, которая связывает каждое представление с файлом главной страницы, а затем установите его в контроллере.
- Создайте какой-нибудь инструмент, который считывает все представления и анализирует их для их файла главной страницы (аналогично 2, но может быть выполнено потенциально во время выполнения).
Вариант 1 пока кажется мне лучшим вариантом. У кого-нибудь еще есть мысли о том, как это сделать?