Как отобразить другой пользовательский интерфейс в веб-приложении (разные цвета, логотипы и некоторые виды) - PullRequest
0 голосов
/ 01 октября 2018

Я думаю, что у меня немного уникальная ситуация, с которой мне нужен совет.В настоящее время у меня есть веб-приложение C # MVC, которое мы проводим ребрендинг для другой демографии.Большинство функций останутся прежними, но будут отличаться цвета, графика и начальная страница указателя, отображаемые при входе пользователя. Я исследовал использование Area в веб-приложении, но я не уверен, что это так.лучшее решениеЦель состоит в том, чтобы не дублировать веб-приложение на этом этапе, загружать различные таблицы стилей в зависимости от используемой версии веб-приложения, а также совместно использовать некоторые из базовых таблиц стилей, также необходимо будет предоставить доступ к большинству представлений.Я хотел бы уменьшить количество дублирования кода, насколько это возможно.

1 Ответ

0 голосов
/ 01 октября 2018

Я не думаю, что эта ситуация настолько уникальна, как вы думаете, и это очень старая проблема (помните страницы 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:)

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