IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Mise à jour du nombre d'articles dans un panier - Index ? Layout ? comment structurer ?


Sujet :

ASP.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 212
    Par défaut Mise à jour du nombre d'articles dans un panier - Index ? Layout ? comment structurer ?
    Bonjour,

    J'ai construit un panier (commerce, Asp Net MVC)
    Dans la navbar, j'ai une icône avec un badge pour afficher le nombre d'articles dans le panier.

    Nom : panier_icone_01.png
Affichages : 64
Taille : 1,2 Ko
    Je ne rencontre pas de problème pour actualiser le nombre d'articles dans le badge depuis les pages qui modifient ce nombre.
    C'est à dire la page du produit (ajout dans le panier) et le panier lui-même (retrait du panier).

    Maintenant, il faut que le nombre d'articles soit conservé et affiché sur toutes les pages.

    Je me suis donc dit que je devais coder cela dans ma vue 'layout'.
    C'est effectivement ce que j'ai vu faire.

    Suivant les conseils lus, j'ai créé une vue partielle '_NbPanierPartial' spécialement pour l'icône du panier et son badge.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <ul class="navbar-nav navbar-right">
        <li class="nav-item">
            <a asp-area="" asp-controller="Panier" asp-action="Panier" class="fa-solid fa-cart-shopping" title="Voir le panier"></a>
            <span class='badge badge-warning' id='lblCartCount' ></span>
        </li>
    </ul>
    Cette vue partielle est appelée par la vue partielle '_LoginPartial', elle-même appelée par la vue partielle '_Layout'.
    Mais, actuellement, la récupération des informations du panier se fait dans la vue Index :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    @section Scripts{
        <script>
            $(function () {
                $.ajax({
                    url: '@Url.Action("GetNbPanier","Panier")',
                    data: {},
                    success: function (result) {
                        if (result != 0) document.getElementById('lblCartCount').innerHTML = result;
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert(xhr.responseText);
                    }
                });
            })
     
        </script>
     }
    Car rien de fonctionne quand je mets ce code dans la vue partielle '_NbPanierPartial'.
    C'est ça le problème.

    Quand je place le script dans la vue partielle '_NbPanierPartial', soit j'ai une erreur "$ is not defined", JQuery n'est pas encore chargé, soit, si je nomme la fonction 'CheckPanier' (que je la place dans une '@section Scripts') et que je l'appelle ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    @section Scripts{
        <script>
            function CheckPanier() {
                $.ajax({
                    url: '@Url.Action("GetNbPanier","Panier")',
                    data: {},
                    success: function (result) {
                        if (result != 0) document.getElementById('lblCartCount').innerHTML = result;
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert(xhr.responseText);
                    }
                });
            }
       </script>
    }
    
    <ul class="navbar-nav navbar-right">
        <li class="nav-item">
            <a asp-area="" asp-controller="Panier" asp-action="Panier" class="fa-solid fa-cart-shopping" title="Voir le panier"></a>
            <span class='badge badge-warning' id='lblCartCount' ></span>
            <script>CheckPanier()</script>
        </li>
    </ul>
    j'ai une erreur "CheckPanier is not defined".

    La fonction doit être placée dans une '@section Scripts' de la vue partielle '_NbPanierPartial' pour que JQuery soit auparavant chargé (d'après ce que j'ai lu), mais si j'ouvre une section dans la vue partielle '_NbPanierPartial', la fonction (si je la nomme) 'CheckPanier' n'est pas reconnue dans la vue partielle '_NbPanierPartial'.

    Ma question est : où et comment placer la fonction de récupération du nombre d'articles du panier ?
    Ce code doit être exécuté par la vue partielle '_NbPanierPartial' au moment de son chargement.


    Merci pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Janvier 2015
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Janvier 2015
    Messages : 212
    Par défaut
    Est-ce que c'est grave si :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        <script src="~/lib/jquery/dist/jquery.min.js"></script>
    est placé dans le Layout dans le '<head>' (avec les <link>) au lieu d'être placé après la balise '</footer>' comme tous les autres ?

    Parce que sinon, le script de ma vue partielle placée dans le Layout fonctionne sur toutes les pages, et mon problème est résolu.

    Vu sur https://developer.mozilla.org/fr/doc...L/Element/head
    Nom : head_compatibles.png
Affichages : 44
Taille : 9,7 Ko

    J'attends un peu vos remarques ou conseils éventuels avant de clore ce sujet.
    Merci

  3. #3
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 921
    Par défaut
    Non, ce n'est pas grave.
    Je dirais même que c'est mieux.

    L'explication est simple, on charge les scripts avant de les utiliser.
    Si tu places un script dans le <FOOTER> qui, par définition, est en bas de page, il sera pris en après les élément placés au dessus.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Ajout d'article dans le panier
    Par nacash55 dans le forum Langage
    Réponses: 2
    Dernier message: 16/05/2010, 23h45
  2. Réponses: 12
    Dernier message: 17/06/2008, 10h49
  3. Ajout d'un article dans un panier
    Par spawns dans le forum Langage
    Réponses: 5
    Dernier message: 03/02/2008, 23h58
  4. nombre d'article dans mon panier
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 26/07/2006, 19h50
  5. [Sécurité] suppression d'article dans un panier
    Par oceane751 dans le forum Langage
    Réponses: 3
    Dernier message: 03/12/2005, 15h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo