标签: aspmenu-control

如何摆脱丑陋的asp:菜单闪烁?

我正在使用asp:Menu具有无表格渲染模式的ASP.NET 4.0 Webforms页面上的控件:

<asp:Menu ID="MenuBase" runat="server" DataSourceID="SiteMapDataSourceMenu"
    Orientation="Horizontal" CssClass="contentmenu" RenderingMode="List" 
    IncludeStyleBlock="false">
</asp:Menu>
Run Code Online (Sandbox Code Playgroud)

菜单有一个水平主行,有5或6个菜单项,当用户将鼠标悬停在菜单项上时,其中一些菜单项打开垂直弹出菜单.

通常当发生任何回发并且页面再次呈现时,菜单"闪烁"一会儿(例如,半秒),这意味着:所有菜单项 - 包括弹出菜单中的项目 - 以一行或多行显示在他们恢复到正常预期状态之前彼此相互对立.

在所有菜单项"展开"显示的这个短暂时刻,菜单看起来如果在浏览器中禁用了Javascript.(似乎构建弹出菜单是通过在asp:menu控件中使用一些Javascript来实现的.)

这种行为非常难看,特别是对于一个大菜单(渲染短时间超过2或3行),整个页面内容在跳回到正常显示之前向下移动.

你知道这个问题的解决方案吗?

先感谢您!

(备注:我应该提一下,在升级到ASP.NET 4.0之前,我使用了CodePlex中着名的CSS友好菜单控件.我认为我不再需要CSS友好控件,因为asp:菜单版本4现在提供了一个内置的List渲染模式.据我所知,我没有使用CSS友好控件的闪烁,我认为这个控件没有使用Javascript.也许这是一个糟糕的一步.我是现在寻找一个解决方案,如果可能的话,不要回到CSS友好的菜单控件.)

编辑:

这种闪烁与浏览器无关,虽然在IE 8和7中最为明显.在IE 7(或IE 8中的兼容模式)中,它非常难看,因为菜单项以疯狂的对角线模式显示,甚至超过5或6行.

asp.net menu asp.net-4.0 aspmenu-control

17
推荐指数
3
解决办法
2万
查看次数

杂志网站的数据库设计,灵活的水平菜单

我需要设计一个基于CMS的网站,使用asp.net网页表格(c#)和MS SQL Server作为杂志网站的后端数据库,该网站每周都有问题.

样本数据

MagazinePages Table
PageID  PageName    LangID  PagePositionNo  PageURL     PageInheritance //PageID 
1           Home        1         10        Default.aspx    0
2           About Us    1         20        Page.aspx       0
3           PageOne     1         10        Page.aspx       2
4           PageTwo     1         20        Page.aspx       2
5           Media           1         30        Page.aspx       0
6           Video       1         10        Videos.aspx     5
8           News        1         40        News.aspx        0
9           Archive     1         50        #               0
10          Publication 1         60        Page.aspx       0
11          SpanishHome 2         10        Default.aspx        0
12          SpanisAboutUs 2       20        Page.aspx   0 …
Run Code Online (Sandbox Code Playgroud)

c# sql-server asp.net database-design aspmenu-control

8
推荐指数
1
解决办法
2092
查看次数

如何在javascript中禁用Menu控件的样式?

我正在使用Visual Studio 2010和ASP.NET 4.0将Menu控件呈现为HTML列表,因此我可以使用CSS来设置它.这是我在下面使用的代码

<asp:Menu ID="navlist" runat="server" Orientation="Horizontal"
SkipLinkText="" ClientIDMode="Static" DataSourceID="MenuSource" 
MaximumDynamicDisplayLevels="0" IncludeStyleBlock="False" 
StaticDisplayLevels="2">
</asp:Menu>
Run Code Online (Sandbox Code Playgroud)

这将生成以下HTML

<!-- URL shortened -->
<script src="/WebResource.axd?...t=634066906994188146"type="text/javascript"></script>

<div id="navlist">
    <ul>
        <li><a href="link1.html">Link 1</a></li>
        <li><a href="link2.html">Link 2</a></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

乍一看,这看起来就像我想要的那样.但是,如果我打开WebResource.axd,则会有一大堆与菜单相关的JavaScript代码.此代码的一部分是将自己的内联样式应用于列表.使用FireBug我可以在javascript执行后查看HTML标记,它看起来像这样:

<div id="navlist" style="float: left;">
    <ul class="level1 static" tabindex="0" style="position: relative; width: auto; float: left;" role="menubar">
        <li role="menuitem" class="static" style="position: relative; float: left;">
            <a href="link1.html" class="level2 static" tabindex="-1">Link 1</a>
        </li><li role="menuitem" class="static" style="position: relative; float: left;">
            <a href="link2.html" class="level2 static" tabindex="-1">Link 2</a></li>
    </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

这些内联样式最终会影响我的页面布局.我不需要WebResource.axd中的任何脚本.如何防止此脚本在页面的最终标记中呈现?

asp.net webresource.axd .net-4.0 aspmenu-control

3
推荐指数
2
解决办法
8638
查看次数

为什么asp.net 4菜单控件将CSS CDATA添加到页面呈现的HTML上?

我正在通过http://analyze.websiteoptimization.com运行我的公司网站,试图加快速度,减少不必要的重量.我正在浏览渲染页面的HTML源代码,并注意到ASP.net Menu控件添加了CSS样式表CDATA.

我添加了.elfabMenu img.icon {border-style:none; vertical-align:middle; 在样式表中查看它是否添加了未定义的CSS,尽管它仍然存在.

是什么原因在那里,我怎么摆脱它?

谢谢,洛基

/* <![CDATA[ */

#ctl00_ElfabMenu img.icon { border-style:none;vertical-align:middle; }

#ctl00_ElfabMenu img.separator { border-style:none;display:block; }

#ctl00_ElfabMenu img.horizontal-separator { border-style:none;vertical-align:middle; }

#ctl00_ElfabMenu ul { list-style:none;margin:0;padding:0;width:auto; }

#ctl00_ElfabMenu ul.dynamic { z-index:1; }

#ctl00_ElfabMenu a { text-decoration:none;white-space:nowrap;display:block; }

#ctl00_ElfabMenu a.static { padding-left:0.15em;padding-right:0.15em; }

#ctl00_ElfabMenu a.popout { background-image:url("/WebResource.axd?d=Vs-xm3V4xXyes-Nkxpn4TcXoSMRRIWln2M_xmx8FHGw0xawO9dtWkvxPKOuCep8TMQfm6ipPg_hERtowJQpR_GaQaYnKwCcyHxEw5R6i3rfaWcpT0&t=634509612784300257");background-repeat:no-repeat;background-position:right center;padding-right:14px; }

/* ]]> */
Run Code Online (Sandbox Code Playgroud)

html css asp.net aspmenu-control

0
推荐指数
1
解决办法
983
查看次数