Я ищу несколько советов по работе с пользовательским интерфейсом, в частности, веб-интерфейсом, где множество различных настроек и переключателей изменяют то, что отображается для пользователя.Настройки привязаны к пользователю, поэтому каждый пользователь имеет уникальный опыт (в зависимости от множества факторов).Существующий подход использования множества условных утверждений;очевидно, не масштабируется и создает кошмар обслуживания.
Я буду реализовывать шаблон MVC для разделения задач, но я должен представить, что есть шаблон проектирования или лучшие практики для настройки высокодинамичных представлений.
На основе учетных данных пользователя у меня есть:
- Функции, которые можно включать и выключать
- Функции могут быть расширенными или улучшенными
- Подумайте о списке флажков, где один флажок не виден для одной группы, а весь список может быть недоступен для других групп.(Как список опций, и пользователь не имеет доступа ко всем из них; может быть, некоторые отключены, а некоторые невидимы.)
Вопрос в следующем:Как сохранить вид как можно более чистым, сохраняя при этом контекст и намерение представления?Создаю ли я отдельные «обработчики», которые выводят определенный HTML (если они связаны друг с другом через какой-либо поставщик авторизации)?Если да, то как мне работать с функциями, которые совместно используются несколькими группами, но могут изменить немного от одной к другой?
Я не знаю, имеет ли значение, какую платформу я использую 'я развиваюсь, так что примеры или предложения на любом конкретном языке или структуре хороши.
РЕДАКТИРОВАТЬ
Например, скажем, у меня есть ProductViewModel
(в C #):
public class ProductViewModel {
public bool DisplayPrice { get; set; }
}
На мой взгляд, тогда я могу проверить, если Model.DisplayPrice == true
, и если да, отобразить цену продукта.На этом уровне меня не волнует , почему отображается.Таким образом, это заменило бы что-то вроде if ( UserInRole("Vendor") || UserInRole("Distributor") )
.
Очевидно, мне нужен какой-то способ изменить этот параметр в зависимости от контекста.В идеале я бы хотел избежать условного выражения if ( UserInRole("Vendor") || UserInRole("Distributor") )
, потому что список условий может быстро расти.Например, я хочу показать цену продавцам, но только если у них есть VIP-доступ, и пользователь уже более 30 дней, а также совершил предыдущие покупки, и ..
Любые лучшие практикиили предложения, для изменения / укладки настроек во время выполнения, для пользователя?Кто-нибудь с опытом реализации «предпочтений» с огромным количеством перестановок?