2013-01-31 242 views
0

我正在開發一個項目工具來跟蹤假期,並且此應用程序有一些部分(報告管理),角色「用戶」不應該看到。到目前爲止,沒有問題的作品,但不知何故,一個「用戶」不應該看到的部分的表示看起來可怕:Internet Explorer 8設計問題

enter image description here

誰應該在頁面上看到的東西的權限控制在Web.sitemap中

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

如果有人有同樣的問題,你能給我一些好的提示或解決方案如何解決這個問題,我真的很感激它!

回答

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或任何爲你工作。我不會推薦這種方法作爲長期解決方案,除非這是一個企業內部網應用程序,您可以完全控制環境。

Specifying Document Compatibility Modes for ASP.NET Intranet Sites using IE8

+0

哇謝謝別了! – Mingebag