Я не думаю, что эта ситуация настолько уникальна, как вы думаете, и это очень старая проблема (помните страницы MySpace?: P), но здесь есть несколько вещей, которые нужно решить.
Первое, какВы собираетесь изменить цвета и графику.Изменить цвета было бы довольно просто, переключив таблицу стилей.Проблема, с которой вы столкнетесь, заключается в том, что вам придется либо дублировать всю таблицу стилей (что будет кошмаром для обслуживания), либо выделить цвета в их собственную таблицу стилей (что будет неудобно для разработки).Я хотел бы объединить два метода, используя препроцессор, такой как SASS или LESS .Это позволит вам определить цвета как переменные и использовать их в других таблицах стилей.Затем вы должны скомпилировать CSS дважды, один раз с каждым набором цветов.Это дает вам лучший компромисс функциональности (вы все еще можете минимизировать), простоту разработки и простоту обслуживания.SASS и LESS очень похожи в наборе функций.Выбор, который следует использовать, обычно сводится к предпочтениям разработчика или сторонней библиотеки.
Для графики, мы надеемся, что вы уже определили их в таблицах стилей, используя теги background
.Если нет, я думаю, что было бы проще перейти на эту стратегию (при условии, что это подходит для изображений с точки зрения доступности и функциональности).Это будет намного проще, чем добавление логики во многих местах для выбора одного изображения над другим.
Наконец, для изменения страницы индекса, когда пользователь входит в систему, при условии, что вы выбираете страницу на основе какого-либо пользователяВ этом случае, я думаю, что лучшим вариантом будет либо изменить перенаправление после входа в систему, либо добавить проверку на домашней странице, чтобы отобразить другое представление.Если у вас есть ссылки на домашнюю страницу в любом месте, проверка действия метода домашней страницы, вероятно, будет лучшим подходом, поскольку она будет гарантировать правильную подачу страницы каждый раз.Если в методе действия есть логика, которая заполняет домашнюю страницу данными, то, вероятно, было бы лучше разделить домашние страницы на отдельные частные методы:
public IActionResult Index()
{
if (User.IsInRole("CustomisedTheme"))
{
return CustomisedIndex();
}
else
{
return DefaultIndex();
}
}
private IActionResult CustomisedIndex()
{
// Complex logic to populate view
// ...
return View("CustomisedIndex");
}
private IActionResult CustomisedIndex()
{
// Complex logic to populate view
// ...
return View("CustomisedIndex");
}
Конечно, все это предполагает, что вы используете тольконесколько разных стилей.Если вы ищете настраиваемые стили (например, настраиваемый интерфейс для самообслуживания), это становится совершенно другой проблемой, на которую я не собираюсь отвечать в Stack Overflow:)