0

私は休日を追跡するツールのプロジェクトに取り組んでおり、このアプリケーション (レポート管理) のいくつかの部分があり、ロール「ユーザー」は表示されません。これまでのところ問題なく動作していますが、どういうわけか、「ユーザー」が見てはいけない部分の表現がひどく見えます。

ここに画像の説明を入力

ページ上の何かを表示する権限は、Web.sitemap で制御されます。

 <siteMapNode title="Vacation" roles="Administrator,Location Business Leader,Business Leader,Department Leader" description="All employees with vacation" url="~/EmployeeView/UserVacationGrid.aspx" />

誰かが同じ問題を抱えていて、これを修正するための良いヒントや解決策を教えていただければ幸いです。

4

1 に答える 1

3

問題は、非表示にしているもの (クライアント側またはサーバー側) が、関連付けられているすべてのコントロールをカプセル化していないことです。たとえば、ASP.NET メニューを使用している場合、次のコードを使用してサーバー側のメニュー オプションを非表示にすることができます。

switch (UserRole) {
    case "Administrator":
        Menu1.Items.Item(0).Enabled = false;
        break;
}

これらのコントロールは、そのオプションに関連付けられているすべての HTML を確実に折りたたむようにします。ただし、独自のコントロールを使用している場合、またはクライアント側のものを隠している場合は<div>、コントロールを含むコンテナー全体 (つまり ) を確実に非表示にする必要があります。これを行う良い方法は、jQuery を使用することです。

$("#divVacationControl").hide();

IE8 のどのコントロールが非表示になっておらず、望ましくない外観のままになっていないかを判断する最善の方法は、IE 開発者ツールバーを使用することです。F12 ボタン、または[ツール] -> [開発者ツール] からアクセスできます。ここからダウンロードすることもできます: http://www.microsoft.com/en-us/download/details.aspx?id=18359

開いたら、「クリックで要素を選択」機能を使用して、非表示の要素を調べ、DOM を調べます。その後、隠れていない犯人を見つけて、ロジックを確認できます。

特定のブラウザでのみ発生する場合の最後の方法は、互換モードを設定することです。これが最善の方法だとは言いませんが、オプションです。これを行う方法は、以下の私のブログ投稿で読むことができます。IE7またはあなたのために働いたものを使用してください。環境を完全に制御できる企業イントラネット アプリでない限り、このアプローチを長期的なソリューションとしてお勧めしません。

IE8 を使用して ASP.NET イントラネット サイトのドキュメント互換性モードを指定する

于 2013-01-31T16:20:16.747 に答える