C# 带asp.net菜单控件的iPad iOS 5
我正在开发一个使用asp.net菜单标记的intranet站点,当鼠标悬停在特定链接上时,子菜单会弹出 我们必须包括对iPhone和iPad的支持。iPhone的网站将完全不同,因此这不会是一个问题。然而,在iPad上,该网站本身与台式机/笔记本电脑用户相比没有重大变化 我遇到的问题是,升级到iOS 5后,asp菜单中内置的onMouseOver事件没有触发(这意味着当我点击菜单项一次时,它会表现为我点击了两次)。在iOS 4+中,该控件可以正常工作(点击一次以获取菜单项列表,然后再次点击以跟踪链接) 我已经实现了所建议的解决方法,实现了一个调用空javascript函数的mouseover事件 一个小标记来说明问题:C# 带asp.net菜单控件的iPad iOS 5,c#,asp.net,ipad,menu,ios5,C#,Asp.net,Ipad,Menu,Ios5,我正在开发一个使用asp.net菜单标记的intranet站点,当鼠标悬停在特定链接上时,子菜单会弹出 我们必须包括对iPhone和iPad的支持。iPhone的网站将完全不同,因此这不会是一个问题。然而,在iPad上,该网站本身与台式机/笔记本电脑用户相比没有重大变化 我遇到的问题是,升级到iOS 5后,asp菜单中内置的onMouseOver事件没有触发(这意味着当我点击菜单项一次时,它会表现为我点击了两次)。在iOS 4+中,该控件可以正常工作(点击一次以获取菜单项列表,然后再次点击以跟踪
<asp:Menu runat="server" ID="Menu1" /* Any other control additions here */>
<Items>
<asp:MenuItem Text="MenuItem1" Value="MenuItem1" />
<asp:MenuItem Text="MenuItem2" Value="MenuItem2" />
</Items>
</asp:Menu>
另外:很抱歉,如果有类似的问题,我找不到
编辑
在对它进行了一些测试之后,我发现只有当原来的菜单项实际上不打算去任何地方时,它才会起作用。然而,情况并非总是如此。所以这实际上是一个比我想象的更大的问题
通过使用MenuItemClick事件、ViewState和检查UserAgent(可能不是最优雅的解决方案,但它符合我的需要),我改变了(现在不是那么简单)解决方法来解决这种情况
这甚至比以前的解决方案更不“优雅”(虽然更全面,但公平地说,我没有像我希望的那样对其进行测试)
所以我这里有几个问题。即:
MenuItem mnu_itm = new MenuItem();
mnu_itm.Text = "ADMIN";
mnu_itm.Value = "";
mnu_itm.NavigateUrl = "javascript:(function(){})();";
string ItemNavUrl = Menu1.SelectedItem.NavigateUrl;
string ItemName = Menu1.SelectedItem.Text;
//Check the ViewState first, just in case another menu item was clicked.
if (ViewState["MenuItemNav"] != null && Menu1.SelectedItem.NavigateUrl == "" && ViewState["MenuItemName"] != null && (string)ViewState["MenuItemName"] == Menu1.SelectedItem.Text)
{
Menu1.SelectedItem.NavigateUrl = (string)ViewState["MenuItemNav"];
}
//Check to see if: 1. The item has a submenu
//2. The Item also has a valid URL to send to, and
//3. If the device is an iPad
else if(Menu1.SelectedItem.ChildItems.Count > 0 && Menu1.SelectedItem.NavigateUrl != "" && Request.UserAgent.IndexOf("iPad") > -1)
{
//Set the URL to nothing and save the values for later.
Menu1.SelectedItem.NavigateUrl = "";
ViewState.Add("MenuItemNav", ItemNavUrl);
ViewState.Add("MenuItemName", ItemName);
}