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

时间:2010-08-24 16:02:49

标签: user-interface customization

我正在寻找处理UI的一些建议,特别是Web UI,其中大量不同的设置和切换会更改显示给用户的内容。设置与用户相关联,因此每个用户都具有独特的体验(取决于多种因素)。现有的使用过多条件陈述的方法;显然不会扩大规模并造成维护噩梦。

我将实现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天的用户,以及之前的购买,以及...

每个用户在运行时修改/堆叠设置的最佳做法或建议?任何有经验实施“偏好”并具有大量排列的人?

1 个答案:

答案 0 :(得分:1)

这里可能会有一些不同的事情......

当您谈到有条件地为用户显示的复选框列表时,它会让我想到ACL。您可以在他们访问视图之前过滤要显示的复选框列表。视图将循环显示复选框列表以显示和显示它们。

对于可以打开和关闭的功能,我认为这实际上取决于功能如何呈现给用户。例如,如果它是一个按钮,我将创建一个获取所需角色或权利的方法,并根据用户是否具有该角色或权限来显示自己。因此,您仍然具有相同数量的条件,但它们封装在可以跨视图重用的方法中。它肯定会更清洁,但我认为这是一个有点毛茸茸的,不管这是否是推荐的做法...