为什么我会得到一个随机的';事件';是ASP中未定义的错误.NET菜单控件

本文关键字:ASP 事件 未定义 错误 控件 菜单 NET 一个 为什么 随机 | 更新日期: 2023-09-27 18:11:57

这已经困扰我一段时间了。

我的应用程序中有一个页面是内容页面。asp.net主页有一个菜单控件。

此菜单控件是一个用户控件,它包含一个对象,以及基于用户将菜单绑定到各种站点地图文件的所有事件处理。

内容页面有一个包含各种表单的表单和带有更新面板的网格,用于将复杂对象组合在一起。完成后,用户提交表单,并创建新对象。

问题是,当更新其中一个网格视图或提交表单时,我从ScriptResource.axd文件中得到一个"Event"is undefined错误,看起来代码来自ASP菜单控件。以下是发生错误的上下文。它在Menu_ClearInterval((:之后立即中断

function Menu_HideItems(items) {
if (document.body.__oldOnClick) {
    document.body.onclick = document.body.__oldOnClick;
    document.body.__oldOnClick = null;
}
Menu_ClearInterval();

它在以下线路中断:

if (!items || ((typeof(items.tagName) == "undefined") && (items instanceof Event))) {
    items = __rootMenuItem;
}
var table = items;
if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) {
    table = WebForm_GetElementByTagName(table, "TABLE");
}
if ((typeof(table) == "undefined") || (table == null) || !table.tagName || (table.tagName.toLowerCase() != "table")) {
    return;
}
... rest of function
}

函数的上下文有一个items变量,看起来它包含事件数据,例如:

{ type: "click", target: { id: "btnAddItem" }, Methods: stopPropagation() }

不确定这是否重要。此时所有其他本地人都未定义。

以前有人遇到过这样的问题吗?感谢您的帮助。这是一个生产问题,除了重写它以使用纯jquery和ajax(不是一个快速解决方案(之外,我不确定还能做什么

提前感谢您的帮助!

编辑:要明确的是,我不确定这是否是导致错误的菜单控件,只是ScriptResource.axd文件中的周围代码看起来像菜单代码。

第2版(可复制!(:好的,更多细节。如果页面加载后将鼠标悬停在菜单控件上,就会出现此错误。如果我不悬停,它就不会发生,而且一切都很好。如果我将鼠标悬停,它将在下一篇ajax文章中出错。这一页帮我弄明白了很多。想法?

菜单标记:

  <asp:Menu ID="mainMenu" runat="server" Orientation="Horizontal" OnMenuItemDataBound="mainMenu_MenuItemDataBound">
    <StaticMenuStyle CssClass="menu" />
    <StaticMenuItemStyle CssClass="menuItem" />
    <StaticSelectedStyle CssClass="menuSelected" />
    <StaticHoverStyle CssClass="menuHover" />     
    <DynamicMenuItemStyle CssClass="menuItem dMenuItem" />
    <DynamicSelectedStyle CssClass="menuSelected dMenuSelected" />
    <DynamicHoverStyle CssClass="menuHover dMenuHover" />            
    <LevelSubMenuStyles>
        <asp:SubMenuStyle CssClass="menu" />
        <asp:SubMenuStyle CssClass="subMenu" BackColor="#DDDDDD" />
    </LevelSubMenuStyles>
    <LevelMenuItemStyles>
        <asp:MenuItemStyle CssClass="menuItem" />
        <asp:MenuItemStyle CssClass="subMenuItem" />
    </LevelMenuItemStyles>
    <DataBindings> 
        <asp:MenuItemBinding DataMember="siteMapNode" 
             TextField="title" NavigateUrlField="url"  /> 
    </DataBindings> 
</asp:Menu>

为什么我会得到一个随机的';事件';是ASP中未定义的错误.NET菜单控件

将其添加到菜单所在的页面可以消除javascript错误。

var oldMenu_HideItems = Menu_HideItems;   
if(oldMenu_HideItems)
{
    Menu_HideItems = function(items)
    {
        try
          {
            return oldMenu_HideItems(items);
          }
        catch(err)
          {
          }
    }
} 

来源于http://forums.asp.net/t/1059668.aspx

我会尝试将每个控件包含在它自己的UpdatePanel中,其中包含UpdateMode=Conditional,并在需要时显式包含特定于Update的内容。如果您需要重新加载整个页面,请继续进行硬刷新以恢复状态。

我没能想出解决方案,所以我选择了不同的菜单。

Queness下拉菜单是最简单的实现方式,具有类似的功能和风格。

解决方案很简单:ScriptResource.axd文件中的Event对象被javascript文件中的另一个同名对象覆盖。我遇到了同样的问题,并用这个解决方案解决了它。

致以最良好的问候。