2016-07-29 8 views
0

Meine freigegebenen Seitenlayout nicht auslöst, _CustomerLayout.cshtml hat:MVC - Teilansicht für Layout-Lasten, aber Javascript

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

Die _LoginPartial.cshtml hat:

<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> 

Die BadgeIcon ist, was ich angezeigt werden soll In jeder Ansicht habe ich also ein Skript erstellt, das den Warenkorb des aktuellen Benutzers aus der Datenbank nimmt, die Gesamtmenge des Einkaufswagens im laufenden Betrieb berechnet und dann die Rückgabe im #BadgeIcon div

.jaxt

Das Skript am Ende _LoginPartial.cshtml gelegen ist:

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

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

</script> 
} 

Auch diese Schnipsel aus dem ShoppingCartController Posting:

[HttpPost] 
    public ActionResult getCartCount() 
    { 
      var user = db.Users.FirstOrDefault(x => x.UserName == HttpContext.User.Identity.Name); 
      var cartCount = user.ShoppingCarts.FirstOrDefault().ShoppingCartProducts.Sum(x => x.Quantity); 

      return Json(cartCount); 
    } 

Wie Sie sehen können, habe ich weit von einem Experten auf MVC bin, so dass jeder Hilfe dabei wäre sehr willkommen.

+0

Gibt es irgendwelche Skriptfehler in der Debug-Konsole? – Jasen

Antwort

0

Posting die Antwort, die von Pravin Tukadiya und Jasen gefunden:

Added

<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>

zu _LoginPartial.cshtml und entfernt

@section scripts{ 
} 
1

Teilansicht hat kein Layout, so dass Abschnitt nicht funktioniert. Versuchen Sie also, Abschnittselement zu entfernen und JavaScript-Code direkt in Teilansicht zu schreiben.

@section scripts //remove this 
{ 
} 
+0

Erwähnte dies nicht, wenn ich die Frage gestellt habe, aber ich habe das schon vergebens versucht – bankey

+1

hast du die Konsole des Browsers überprüft? –

+0

Was wird zurückgegeben, wenn der Einkaufswagen leer ist? Ich denke, dass Ihr Fehler in Ihrem Code ist .. –

Verwandte Themen