1

我的 ASP.Net 菜单和关联的 MenuItem 在 Chrome 中未正确呈现。也就是说,它们都是同时呈现的,按页面顺序向下呈现,而不是作为下拉菜单。

当我从解决方案(包括在 Chrome 中)运行页面时,它们可以正常工作,但是当我将其部署到测试服务器时,菜单的嵌套性质就会丢失。在我的示例中,“管理员维护”、“网格维护”、“今日屏幕”和“设置”都应该是“管理员”菜单下的项目,最后 3 个应该是“设置”下的项目。它们设置正确,并且,如前所述,它们在 VS 中运行时工作正常。

截图: 有问题的菜单

我的代码:

<asp:Menu ID="Menu1" runat="server" CssClass="menu"
            EnableViewState="False" IncludeStyleBlock="False" Orientation="Horizontal" StaticDisplayLevels="1">
    <Items>
        <asp:MenuItem Text="PTS Home" Value="PTS Main" NavigateUrl="Default.aspx">
        </asp:MenuItem>
        <asp:MenuItem Text="Admin" Value="Admin">
            <asp:MenuItem Text="Admin Maintenance" Value="Admin_Admin Maintenance" NavigateUrl="~/Secure/Admin/AdminMaintenance.aspx">
            </asp:MenuItem>
            <asp:MenuItem Text="Grid Maintenance" Value="Admin_Grid Maintenance" NavigateUrl="~/Secure/Admin/GridMaintenance.aspx">
            </asp:MenuItem>
            <asp:MenuItem Text="Today Screen" Value="Admin_Today Screen" NavigateUrl="~/Secure/Admin/TodayScreen.aspx">
            </asp:MenuItem>
            <asp:MenuItem Text="Setup" Value="Admin_Setup">
                <asp:MenuItem Text="Reserve Owner Codes" Value="Admin_Setup_Reserve Owner Codes"
                    NavigateUrl="~/Secure/Admin/MaintainOwnerCodes.aspx"></asp:MenuItem>
                <asp:MenuItem Text="Reserve Product Codes" Value="Admin_Setup_Reserve Product Codes"
                    NavigateUrl="~/Secure/Admin/MaintainProductCodes.aspx"></asp:MenuItem>
                <asp:MenuItem Text="Enter New Grade" Value="Admin_Setup_Enter New Grade" NavigateUrl="~/Secure/Admin/MaintainGrades.aspx">
                </asp:MenuItem>
            </asp:MenuItem>
        </asp:MenuItem>
    ... //Other items
    </Items>
</Menu>

最奇怪/最烦人的事情是,在生产服务器上,当我第一次加载页面时,它会这样做,但我离开并回来,它会自行修复。在测试服务器上,它只是保持损坏。

此外,这种行为也发生在 IE 8 中,尽管我怀疑这是一个红鲱鱼,无论如何我的用户都没有使用 IE 8。

我已经包含了 IIS 关键字,因为我觉得这更像是服务器问题而不是代码问题,但我不确定。我不确定我们运行的是哪个版本的 Windows Server/IIS,并且我们的服务器管理员目前不在。当我有这些信息时,我会在稍后更新这个问题,但我希望无论如何可能会有答案。

更新 Windows Server 2008 R2 SP1、IIS7。

4

1 回答 1

1

弄清楚发生了什么。偶然发现它。

该页面使用混合内容(菜单本身是不安全的内容)。Chrome 会自动阻止混合页面上的不安全内容,并在地址栏中显示一个盾牌。单击盾牌,告诉它加载不安全的内容,然后砰——不再有奇怪的行为。

http://knowledgebase.pearsonschool.com/kmp/article/AA-05523/0/GPOINT%3A-How-do-I-display-mixed-content-with-Google-Chrome.html

当然,我可能应该只是修复菜单以确保安全,但这至少可以告诉我发生了什么,并且可以帮助其他有类似问题的人。

于 2013-07-29T21:03:27.853 回答