我在asp.net中有几个页面,每个页面都有很多控件。我在我的应用程序中也有一些角色,每个角色都有一些设置选项。现在我想根据这些设置准备我的页面。也许它不太清楚,所以请看看我的例子。
示例:页面中有一些按钮,一些文本框,一些日期时间选择器和一个图表,现在我想要的是当用户看到此页面时,控件会根据用户角色显示和消失。重要的是我不希望只有可见和不可见的控件,在某些情况下我需要显示带有一些自定义的控件。例如,更改图表数据源,限制选择日期时间等。
我能想到的第一个解决方案是保存数据库中的设置,在用户访问页面后,从数据库中获取设置并根据这些设置,我可以使用条件短语(if和else)自定义控件。但我认为这不是一个好方法,我的页面会变得非常混乱。
请帮助我提供更好的解决方案,如果您对此有很好的参考,请告诉我。
答案 0 :(得分:1)
请参阅此链接...使用ControlAdapters
可能会对您有所帮助......
答案 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
}