代码之家  ›  专栏  ›  技术社区  ›  Ryan Emerle

在UI中处理大量排列的好方法是什么?

  •  3
  • Ryan Emerle  · 技术社区  · 15 年前

    我正在寻找一些处理用户界面的建议,特别是web用户界面,在这里,许多不同的设置和切换会更改显示给用户的内容。这些设置与用户相关,因此每个用户都有独特的体验(取决于各种因素)。使用过多条件语句的现有方法;显然不可扩展,而且会造成维护的噩梦。

    我将实现MVC模式来分离关注点,但我必须设想有一种设计模式或最佳实践来配置高度动态的视图。

    基于用户凭据,我有:

    • 可以开关的功能
    • 功能可以是 扩展的 增强
      • 考虑一个复选框列表,其中一个复选框对于一个组不可见,而整个列表对于其他组可能不可用。(就像一个选项列表,用户不能访问所有选项;可能有些选项被禁用,有些选项不可见。)

    问题是:在维护视图的上下文和意图的同时,如何保持视图尽可能干净?我是否创建输出特定HTML的单独“处理程序”(如果它们通过某个授权提供程序链接在一起)?如果是,我如何处理在多个组之间共享但可能更改的功能 轻微地 从一个到另一个?

    我不知道我是在哪个平台上开发的,所以用任何特定的语言或框架来举例或提出建议都很好。

    编辑
    ProductViewModel (用C#)表示:

    public class ProductViewModel {
       public bool DisplayPrice { get; set; }
    }
    

    在我看来,我可以检查 Model.DisplayPrice == true ,如果是,则显示产品的价格。在这个层次上,我不在乎 为什么? 正在展示。所以,这将取代 if ( UserInRole("Vendor") || UserInRole("Distributor") ) .

    显然,我需要一些方法来根据上下文更改此设置。理想情况下,我想避免使用条件语句 如果(UserInRole(“供应商”)| | UserInRole(“分销商”)) 因为条件列表可以快速增长。例如,假设我想向供应商显示价格,但前提是他们有VIP访问权限,并且已经使用了30天以上,并且以前购买过,并且。。

    对于每个用户在运行时修改/堆叠设置,有什么最佳实践或建议吗?有没有人有经验实施“偏好”与大量的排列?

    1 回复  |  直到 15 年前
        1
  •  1
  •   Andorbal    15 年前

    这里可能会发生一些不同的事情。。。

    对于可以打开或关闭的特性,我认为这实际上取决于特性是如何呈现给用户的。例如,如果它是一个按钮,我将创建一个方法,该方法接受所需的角色或权限,并根据用户是否具有该角色或权限来显示自身。所以仍然有相同数量的条件语句,但是它们被封装在一个可以跨视图重用的方法中。它当然会更干净,但我觉得它有点毛茸茸的,无论这是不是一个建议的做法。。。