基于某些角色和设置自定义页面控件的最佳解决方案

时间:2012-07-31 12:02:22

标签: asp.net user-interface customization roles

我在asp.net中有几个页面,每个页面都有很多控件。我在我的应用程序中也有一些角色,每个角色都有一些设置选项。现在我想根据这些设置准备我的页面。也许它不太清楚,所以请看看我的例子。

示例:页面中有一些按钮,一些文本框,一些日期时间选择器和一个图表,现​​在我想要的是当用户看到此页面时,控件会根据用户角色显示和消失。重要的是我不希望只有可见和不可见的控件,在某些情况下我需要显示带有一些自定义的控件。例如,更改图表数据源,限制选择日期时间等。

我能想到的第一个解决方案是保存数据库中的设置,在用户访问页面后,从数据库中获取设置并根据这些设置,我可以使用条件短语(if和else)自定义控件。但我认为这不是一个好方法,我的页面会变得非常混乱。

请帮助我提供更好的解决方案,如果您对此有很好的参考,请告诉我。

2 个答案:

答案 0 :(得分:1)

请参阅此链接...使用ControlAdapters可能会对您有所帮助......

Role-based enabling/disabling of controls in asp.net

答案 1 :(得分:0)

您必须使用Thread.CurrentPrincipal。

一个。当用户登录您的应用程序时,您将其身份附加到线程,例如

string[] rolesArray = .....; //Get roles from dataBase by identity.
Thread.CurrentPrincipal = new YourCustomPrincipal(new YourCustomIdentity("YouName", "..."), rolesArray);

B中。当您浏览应用程序时,您将测试Thread.CurrentPrincipal

IPrincipal threadPrincipal = Thread.CurrentPrincipal;
if(threadPrincipal.Roles.Contains("roleTest"))
{
  //Adjust your control
}