ASP.当jquery的toggleClass()函数被执行时,asp.net MVC控制器'的动作被再次执行

本文关键字:执行 MVC 控制器 net toggleClass jquery ASP 函数 asp | 更新日期: 2023-09-27 18:15:16

EDIT 27.10.2016, 12:00 :我可以找出以下奇怪行为的原因:这只是因为在CSS中,用于菜单列表项的背景图像的路径是错误的。这导致控制器的动作再次被触发。(! !)

我有一个具有以下动作的控制器:

public IActionResult Index()
{
    //get records from the database and pass them to the View
}

然后在我的视图中显示以下导航(css类是基于bootstrap的):

<nav class="navigation_primary">
<ul class="nav nav-justified hidden-xs">
    <li>
        <a href="https://www.google.com">Google</a>
    </li>
    <li class="dropdown">
        <a href="https://www.stackoverflow.com" class="dropdown-toggle">StackOverflow</a>
        <ul class="dropdown-menu">
            <li><a href="#">ASP.NET</a></li>
            <li><a href="#">C#</a></li>
            <li><a href="#">jQuery</a></li>
        </ul>
    </li>
</ul>
</nav>

然后,在jQuery中,我有以下代码,它负责在父条目用鼠标悬停时显示子条目(例如show ASP. js)。. NET, c#, jQuery(当StackOverflow悬停时)。

//to open the primary navigation on mouseover
$(".dropdown").hover(
// open the dropdown by hover
function ()
{
    $(this).toggleClass("open");
},
// close if the cursor goes outside the hover
function ()
{
    $(this).toggleClass("open");
}
);

奇怪的是,在我悬停有任何子菜单项(在这种情况下"StackOverflow"有"dropdown"类)后,我上面发布的整个Index()动作再次执行。

有人知道这种奇怪行为的原因吗?在这种情况下,我不明白为什么jQuery和ASP之间的这种干扰。. NET MVC正在发生。

EDIT 27.10.2016, 11:00:我发现冲突必须依赖于其他东西:当我注释掉上面提到的jQuery代码,并用下面的CSS替换它来达到相同的行为时,控制器的动作也会被触发。

ul.nav li.dropdown:hover ul.dropdown-menu{ display: block; }

ASP.当jquery的toggleClass()函数被执行时,asp.net MVC控制器'的动作被再次执行

我可以找出以下奇怪行为的原因:这仅仅是因为在CSS中,用于菜单列表项的背景图像的路径是错误的。这导致控制器的动作再次被触发。(! !)