2013-01-31 241 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