当执行jQuery的toggleClass()函数时,ASP.NET MVC控制器的操作再次执行

时间:2016-10-27 08:38:02

标签: c# jquery asp.net asp.net-mvc twitter-bootstrap-3

编辑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中,我有以下代码,它负责显示父项用鼠标悬停时的子条目(例如,当悬停StackOverflow时显示ASP.NET,C#,jQuery)。

//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");
}
);
奇怪的是,在我悬停了有任何子节点的菜单项后(在这种情况下&#34; StackOverflow有&#34;下拉&#34;类),我发布了整个Index()动作上面再次执行。

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

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

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

1 个答案:

答案 0 :(得分:0)

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