我有一个asp:菜单,它包含一个指向http://www.example.com/one.aspx的顶级菜单项.当您将鼠标悬停在顶级菜单项上时,它会显示一个下拉列表,其中一个选项是One,它指向http://www.example.com/one.aspx.显然,我不能这样做,所以我一直在做?在第二个网址的末尾绕过这个.我很好奇是否有两个url指向asp:Menu中的相同位置?
有没有其他人遇到过Mac和iOS8上最新版本的Safari 7.1在SharePoint 2010中打破ASPMenu控件的问题?ASPMenu工作正常,但现在更新后它决定不正确地呈现内容.我已经尝试设置Page.ClientTarget ="uplevel",并修改compat.browser文件以包含Safari的适配器"System.Web.UI.WebControls.Menu",但这两个选项都没有帮助解决问题.
有人可以帮忙吗?在Safari更新之前,菜单完全正常.谢谢!
我正在使用的网站是使用Databound asp:Menu控件.当发送1个菜单项时,它会在Firefox(和IE)中呈现完全正确的HTML,但实际上在Safari和Chrome中搞砸了代码.下面是发送到每个浏览器的代码.我已经测试了几个浏览器,它们都是非常类似的渲染,所以我只在渲染源上发布了两个变体.
我的问题是:如何让ASP.NET向Chrome和Safari发送与Firefox和IE相同的html和javascript?
<!-- This is how the menu control is defined -->
<asp:Menu ID="menu" runat="server" BackColor="#cccccc"
DynamicHorizontalOffset="2" Font-Names="Verdana" StaticSubMenuIndent="10px" StaticDisplayLevels="1"
CssClass="left_menuTxt1" Font-Bold="true" ForeColor="#0066CC">
<DataBindings>
<asp:MenuItemBinding DataMember="MenuItem" NavigateUrlField="NavigateUrl" TextField="Text"
ToolTipField="ToolTip" />
</DataBindings>
<StaticSelectedStyle BackColor="#0066CC" HorizontalPadding="5px" VerticalPadding="2px"
Font-Names="Verdama" CssClass="left_menuTxt1" Font-Bold="true" />
<StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="8px" />
<DynamicMenuStyle BackColor="#fbfbfb" BorderColor="#989595" BorderStyle="Inset" BorderWidth="1"
Width="80px" VerticalPadding="1" />
<DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" Font-Name="Verdama"
ForeColor="#c6c4c4" CssClass="left_menuTxt1" Font-Bold="true" />
<DynamicSelectedStyle BackColor="#cccccc" HorizontalPadding="5px" VerticalPadding="2px"
Font-Names="Verdama" CssClass="left_menuTxt1" Font-Bold="true" />
</asp:Menu>
<!-- From Safari View Page Source (Chrome source very similar) --> …Run Code Online (Sandbox Code Playgroud) 我发现了如何将asp:Menu绑定到XML.我已经找到了如何将asp:Menu绑定到站点地图(这实际上是将它绑定到XML).如何将asp:Menu绑定到数据库?
.NET Framework提供了多个数据源:
我想使用一个表示SQL Server表中的数据.数据以每个人使用的标准分层格式存储:
NodeID ParentNodeID Caption Url
======== ============== ========= =================
{3234... {3632... stackoverflow http://stackov...
{3632... (null) Questions ~/questions.aspx
{3233... (null) Tags ~/tags.aspx
{3235... {3632... google http://www.goo...
Run Code Online (Sandbox Code Playgroud)
返回所有行的查询将是:
SELECT * FROM Nodes
Run Code Online (Sandbox Code Playgroud)
微软打算用什么方法将这些数据混合到asp:Menu中?
更新: aspalliance.com上有一篇很好的文章:使用ASP.NET 2.0构建数据库驱动的分层菜单.不幸的是,它描述了如何执行XML数据绑定; 而我对数据库绑定感兴趣.
PathSeparator不在asp菜单控件中渲染,下面是我的代码
<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal" PathSeparator=">" StaticDisplayLevels="10">
<Items>
<asp:MenuItem Text="Home" NavigateUrl="~/Default.aspx">
<asp:MenuItem Text="About Us"></asp:MenuItem>
</asp:MenuItem>
</Items>
</asp:Menu>
我在这里错过了什么吗?任何帮助将不胜感激
http://i44.tinypic.com/5ureav.png
当我的页面偶尔渲染时,水平菜单就会显示出来.为什么?
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu"
EnableViewState="false" IncludeStyleBlock="false"
Orientation="Horizontal" ClientIDMode="AutoID">
<Items></Items>
</asp:Menu>
Run Code Online (Sandbox Code Playgroud)
它通常在页面加载大量数据时执行此操作,但是当数据完成加载时,它永远不会回到水平状态.
使用IE 7,8和9以及Chrome进行测试.
我环顾网络,发现有些人说这是z-index,但调整没有帮助.
我在IE8中使用"开发人员工具"进一步排除故障,发现一些没有成功的javascript调用.我不知道他们的意思.
<script type="text/javascript">
//<![CDATA[
Sys.WebForms.PageRequestManager._initialize('ctl00$MainContent$tsmgrEmployees', 'aspnetForm', ['tctl00$MainContent$uPanelEmployees',''], ['ctl00$MainContent$btnClear','','ctl00$MainContent$txtEUID','','ctl00$MainContent$txtFirstName','','ctl00$MainContent$txtLastName',''], [], 90, 'ctl00');
//]]>
</script>
Run Code Online (Sandbox Code Playgroud)
产生错误
'Sys.WebForms.PageRequestManager'为null或不是对象
<script type='text/javascript'>new Sys.WebForms.Menu({ element: 'ctl00_NavigationMenu', disappearAfter: 500, orientation: 'horizontal', tabIndex: 0, disabled: false });</script>
Run Code Online (Sandbox Code Playgroud)
产生错误
'Sys.Webforms.Menu'为null或不是对象
我相信其余的错误都来自这两个错误.你认为我应该用更新的库替换jscript库吗?它可能是浏览器相关的,因为我使用的是IE8(不兼容模式).
可能有用的信息的另一个奇数位,当我建立我的开发环境,在WinXP专业版Visual Studio 2010中的解决方案,它工作正常,但是当我把它发布到服务器(IIS 7.5,Server 2008 R2中),它打破.起初我以为它可能是数据滞后,但服务器上的连接字符串应该比我的开发环境中的连接字符串更快.服务器使用Localhost作为目标,我的开发工作站使用服务器路径...所以我不认为它的数据滞后.
我知道ASP上有很多帖子:菜单与WebKit问题一般,但我找不到能回答我问题的帖子.
我经常看到人们推荐两种不同的方法来解决ASP:MenuApple WebKit浏览器中的问题(即Chrome,Safari).但哪个更好?除了目标用户代理之外,这两个操作之间有什么区别?我找到的唯一区别是第二个也将对Page_Load事件起作用.我假设一个客观上优于另一个,但我不知道它们之间的区别.他们每个人如何运作?
两者都进入Page_PreInit()基页的方法.
1.清除浏览器适配器.
if (Request.UserAgent.Contains("AppleWebKit"))
{
Request.Browser.Adapters.Clear();
}
Run Code Online (Sandbox Code Playgroud)
2.更改客户端目标.
if (Request.UserAgent.Contains("Safari"))
{
Page.ClientTarget = "uplevel";
}
Run Code Online (Sandbox Code Playgroud)
Google Chrome的默认用户代理如下.它包含Safari和WebKit,所以我怀疑目标用户代理是一个显着的差异.
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.X.Y.Z Safari/525.13.
Run Code Online (Sandbox Code Playgroud) 我正在使用Menu控件为我的asp.net应用程序构建一个菜单,而Menu控件又是由一个表通过Hierarchical数据对象提供的.它工作得很好,除了我无法弄清楚如何配置Menu控件以禁止单击没有指定URL的菜单项.
例如,我有一个静态顶级菜单项.我将鼠标悬停在它上面,出现了一个动态菜单列表供我选择.每个动态菜单项都包含指向我单击鼠标时调用的页面的链接.静态顶级菜单无处可去.如何才能使点击该顶级静态菜单不会像链接一样?
谢谢你
aspmenu ×8
asp.net ×7
menu ×2
c# ×1
database ×1
html ×1
safari ×1
sharepoint ×1
web-controls ×1
webkit ×1