0

ユーザーの役割に基づいて、さまざまなリンクページのメニューを作成しようとしています。1つのリンクだけで作成されたasp:menu NavigationMenuでマスターページを使用すると、ユーザーのロールモードに基づいてリンクが追加されます。

Menu menu = masterPage.FindControl("NavigationMenu") as Menu;

MenuItemCollection menuItems = menu.Items;

MenuItem menuItem;

switch (role)
{
    case "Level 1":          
         break;
    case "Level 2":
         menuItem = new MenuItem("Auditing", "", "", "~/Auditing.aspx");
         menuItems.Add(menuItem);
         menuItem = new MenuItem("Team Manager", "", "", "~/TeamManager.aspx");
         menuItems.Add(menuItem);
         break;
}

これは現在のページでのみ機能します。メニューでリンクをクリックすると、その新しいページには、マスターページが実行時にアドバタイズするリンクが1つだけ表示されます。「navigationMenu」のasp:menu値を実際に更新して、サイト全体で永続化する方法はありますか?

4

2 に答える 2

1

sitemapasp.netメニューでの使用を検討する必要があると思います。設定securityTrimmingEnabled="true"すると、役割に基づいてメニュー項目を自動的に表示/非表示にできるはずです。

このリンクはアイデアを与えるでしょう

于 2012-05-16T11:52:07.233 に答える
1

SecurityTrimmingEnabled="true"でサイトマップを使用することは良い解決策です。

考慮すべき他の2つの選択肢は次のとおりです。

  • コードを移動して、メニューをマスターページに組み込みます。

  • 基本クラス(public class BasePage : System.Web.UI.Page)を作成し、その基本クラスからすべてのページを継承します。メニューを基本クラスに組み込むためのコードを配置します。

于 2012-05-16T11:59:40.543 に答える