1

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

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

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

请帮助我提供任何更好的解决方案,如果您知道有关它的良好参考,请告诉我。

4

2 回答 2

1

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

在 asp.net 中基于角色启用/禁用控件

于 2012-07-31T12:17:13.837 回答
0

您必须使用 Thread.CurrentPrincipal。

A. 当用户登录到您的应用程序时,您将他的身份附加到线程,例如

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
}
于 2012-07-31T12:06:22.680 回答