1

asp.net に複数のページがあり、それぞれに多くのコントロールがあります。また、アプリケーションにはいくつかの役割があり、それぞれにいくつかの設定オプションがあります。これらの設定に基づいてページを準備したいと思います。あまり明確ではないかもしれないので、私の例を見てください。

例: ページにはいくつかのボタン、いくつかのテキスト ボックス、いくつかの日時ピッカー、グラフがあり、ユーザーがこのページを表示すると、ユーザーの役割に基づいてコントロールが表示されたり消えたりします。重要なことは、目に見えるコントロールと見えないコントロールだけを持ちたくないということです。いくつかのシナリオでは、いくつかのカスタマイズでコントロールを表示する必要があります。たとえば、グラフのデータ ソースを変更したり、日時の選択を制限したりします。

私が考えることができる最初の解決策は、データベースに設定を保存し、ユーザーがページにアクセスした後、データベースから設定を取得し、それらに基づいて、条件付きフレーズ (if および else) を使用してコントロールをカスタマイズすることです。しかし、それは良いアプローチではなく、ページが非常に乱雑になると思います。

より良い解決策を教えてください。それについての良い参考文献を知っている場合は、お知らせください。

4

2 に答える 2

1

このリンクを参照してください... を使用するとControlAdapters役立つ場合があります...

asp.net でのロールベースのコントロールの有効化/無効化

于 2012-07-31T12:17:13.837 に答える
0

Thread.CurrentPrincipal を使用する必要があります。

A. ユーザーがアプリケーションにログインするとき、たとえば、ユーザーの ID をスレッドに添付します。

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 に答える