修剪ASP.NET网站的GUI的好方法是什么?
时间:2020-03-06 14:19:41 来源:igfitidea点击:
我一直在通过该控件的onload事件执行以下操作来调整网站的用户界面:
btnDelete.isVisible = user.IsInRole("can delete");
这变得非常乏味,因为有太多控件要检查一次又一次。一旦一切正常,设计师便要求更改UI,然后重新开始。
有什么建议?
解决方案
一个简单的建议是根据访问权限将控件分组为面板
我之前做过的工作是创建每个ASP.NET页继承的自定义页类(实际上,我在每个项目中都做这部分)。
此类包含一个IsAdmin属性。
然后,我将在模式之间可能可见或者不可见的常用控件细分为自定义控件,并添加代码以检查Pages IsAdmin属性。
所有这些工作可能需要一个小时的时间,但是如果我们使用这些控件来构建页面,则它们会自动管理其模式。
另一个有趣的省时技巧是,如果我们需要将页面切换为只读模式或者从中退出。我在主基类中添加了一个属性,然后添加了一个自定义控件,该控件在一种模式下呈现文本框,在另一种模式下呈现标签。
同样,在组件上花了一点时间,但是我们可以用两行代码创建页面的只读版本……非常值得。
我们可能以错误的方式想到了这种情况。与其考虑单个控件,不如从业务角色和他们有能力做什么方面考虑它。这与将控件分组到用于访问权限的面板中是一致的。例如,也许只有管理人员才具有删除和执行其他操作的能力,而我们具有所检查的管理人员的角色。这样,如果有更改,我们可以将用户转移到不同的角色。业务规则不应发生重大变化。随着新职位获得更多的责任,总会有一些调整,但是以这种方式考虑应该将要做的更改的数量减到最少。
一个快速而肮脏的选择是使用asp:loginview控件,该控件可以连接到用户角色。
不像乔纳森(Jonathan)建议的自定义页面类选项那么优雅,并且如果它们遍布页面,可能会对性能产生一定的影响。