什么是修剪ASP.NET网站GUI的好方法?

时间:2008-09-18 01:49:05

标签: asp.net security user-interface

通过在该控件的onload事件中执行以下操作,我一直在修剪我们网站的UI:

btnDelete.isVisible = user.IsInRole("can delete");

这已经变得非常乏味,因为有很多控件要反复检查。一旦我完成所有工作,设计师就会要求更改用户界面,然后从头开始。

有什么建议吗?

4 个答案:

答案 0 :(得分:3)

一个简单的建议是根据访问权限将控件分组到面板中

答案 1 :(得分:2)

我之前做过的一件事就是创建一个自定义页面类(实际上,我在每个项目中都做这个部分),每个ASP.NET页面继承。

此页面类包含IsAdmin属性。

然后,我将模式之间可能或不可见的常用控件子类化为自定义控件,并添加代码以检查Pages IsAdmin属性。

所有这些可能只需要一个小时的工作,但如果您使用这些控件构建页面,他们会自动管理他们的模式。

另一个有趣的节省时间的提示是,如果您需要将页面翻转进出只读模式。我在主基类中添加了一个属性,然后添加了一个自定义控件,该控件在一种模式下呈现文本框,在另一种模式下呈现标签。

再一次,在组件上花了一点时间,但是你可以用两行代码创建一个只读版本的页面......非常值得。

答案 2 :(得分:2)

你可能会以错误的方式思考这种情况。而不是考虑个人控制,而是从业务角色和他们有能力做的事情来考虑它。这与将控件分组到访问权限的面板相关。例如,也许只有经理才能删除和执行其他操作,并且您可以为您检查的经理提供角色。这样,如果有更改,您可以将用户移动到不同的角色。业务规则不应该大幅改变。随着新职位获得更多责任,总会有调整,但以这种方式思考应尽量减少更改的数量。

答案 3 :(得分:1)

快速而脏的选项是使用asp:loginview控件,可以连接到用户角色。

不如Jonathan建议的自定义页面类选项那么优雅,如果它们遍布页面,可能会有点性能。