MVC - 布局加载的部分视图,但不会触发javascript

时间:2016-07-29 17:41:36

标签: javascript jquery ajax asp.net-mvc-4

我的共享页面布局_CustomerLayout.cshtml包含:

 <div class="navbar-collapse collapse">
      @Html.Partial("_LoginPartial")
 </div>

_LoginPartial.cshtml有:

<ul class="nav navbar-nav navbar-right">
        <li>@Html.ActionLink("Hello, " + User.Identity.Name + "!", "UserProfile", "Home")</li>
        <li>
            <a href="~/ShoppingCart/Index" id="ShoppingCartSpace"><i class="fa fa-shopping-cart" aria-hidden="true" id="ShoppingCartIcon"></i></a>
            <span class="badge" id="BadgeIcon"></span>
        </li>
        <li>
            <a href="javascript:document.getElementById('logoutForm').submit()">Log off</a>
        </li>
    </ul>

BadgeIcon是我想要在每个View中显示的内容,因此我创建了一个脚本,该脚本将从数据库中获取当前用户的购物车,计算动态的总购物车数量,然后在{{ajax中返回... 1}} div

位于#BadgeIcon末尾的脚本是:

_LoginPartial.cshtml

还从ShoppingCartController发布此片段:

@section scripts
{
<script>     //never gets triggered

    $(document).ready(function () {
        $.ajax({
            type: "POST",
            url: '@Url.Action("getCartCount", "ShoppingCart")',
            success: function (data) {
                $('#BadgeIcon').html(data);
            }
        })
    });

</script>
}

正如您所说,我远非MVC的专家,所以对此的任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

部分视图没有布局,因此部分不起作用。 所以,尝试在局部视图中直接删除section元素并编写javascript代码。

@section scripts //remove this
{
}

答案 1 :(得分:2)

发布Pravin Tukadiya和Jasen发现的答案:

<script src="~/Scripts/jquery-1.10.2.min.js" type="text/javascript"></script> <script src="~/Scripts/jquery.unobtrusive-ajax.min.js" type="text/javascript"></script>

_LoginPartial.cshtml并删除了

@section scripts{
}