我正在寻找处理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天的用户,以及之前的购买,以及...
每个用户在运行时修改/堆叠设置的最佳做法或建议?任何有经验实施“偏好”并具有大量排列的人?
答案 0 :(得分:1)
这里可能会有一些不同的事情......
当您谈到有条件地为用户显示的复选框列表时,它会让我想到ACL。您可以在他们访问视图之前过滤要显示的复选框列表。视图将循环显示复选框列表以显示和显示它们。
对于可以打开和关闭的功能,我认为这实际上取决于功能如何呈现给用户。例如,如果它是一个按钮,我将创建一个获取所需角色或权利的方法,并根据用户是否具有该角色或权限来显示自己。因此,您仍然具有相同数量的条件,但它们封装在可以跨视图重用的方法中。它肯定会更清洁,但我认为这是一个有点毛茸茸的,不管这是否是推荐的做法...