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 :

envoi d'une valeur d'un textbox et l'id du modèle au controller


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 21
    Par défaut envoi d'une valeur d'un textbox et l'id du modèle au controller
    Salut tout le monde,
    je suis en cours de réalisation d'un panier asp.net mvc c#
    J'essaie d'envoyer une valeur "quantité" d'un textbox qui n'appartient à mon modèle "produit" au controller

    j'ai essayé avec ajax mais rien ne se passe . au faite mon script ne s'exécute pas et mon panier se rempli avec le produit sans la quantité qui reste nulle.

    voila mon view
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    <script>
        $('.Sendparams').click(function (e) {
            e.preventDefault();
            debugger;
            var produitId = $(this).val();
            var quant = $("#quant").val();
            $.ajax({
                type: 'GET',
                url: '/ShoppingCart/AddToCart',
                data:{ "Id": produitId , "quant": quant },
            success: function (response) {
                    $("#mainContainerCenter").html(response); } });});
    </script>
    @model testingtemplate.Models.Categorie
    @{
        ViewBag.Title = "Browse Produits";
        Layout = "~/Views/Shared/_Layout2.cshtml";
    }
    <div class="content-wrapper">
        <!-- Content Header (Page header) -->
        <section class="content-header">
            <h3>@Model.Nom_categorie </h3>
        </section>
        <!-- Main content -->
        <section class="content">
          <!-- Small boxes (Stat box) -->
            <div class="row">    
          <ul>     @foreach (var album in Model.Produits)
          {
     
                                <div class="col-lg-3 col-xs-6">
     
                                    <li>@album.Nom_Produit</li>
                                    <li>@album.Categorie.Nom_categorie</li>
                                    <li>@String.Format("{0:F}", album.Prix)</li>
                                    <li>@Html.TextBox("quant")</li>
                                    <li>@Html.Hidden("produitId", album)</li>
                                    <li>
                                    <p class="button">
              @Html.ActionLink("voila","AddToCart","ShoppingCart", new { id = album.ProduitId }, new { @class = "Sendparams"})
                                        </p>
                                    </li>
                                      </div> }
     
    </ul>
             </div>
    </section>
      </div>


    ainsi que mon controller

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
           public ActionResult AddToCart(int id , string quant)
            {
                // Retrieve the album from the database
                var addedAlbum = storeDB.Produits
                    .Single(album => album.ProduitId == id);
     
                // Add it to the shopping cart
                var cart = ShoppingCart.GetCart(this.HttpContext);
     
                cart.AddToCart(addedAlbum,quant);
     
                // Go back to the main store page for more shopping
                return RedirectToAction("Index");
            }

    Je sais que je looupe quelque chose mais je ne sais pas quoi vraiment

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    777
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 777
    Par défaut
    As tu une route valide avec les paramètres id & quant ?
    Montre nous ton routeconfig.cs...

  3. #3
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Bonjour,

    Dans l'immédiat, je ne vois pas d'erreur flagrante.

    Il y a par contre la possibilité qu'au moment où le script javascript s'exécute, le DOM ne soit pas chargée. Du coup, l'ajout d'un gestionnaire sur l'événement click n'est pas posé !

    Essai ainsi, afin d'exécuter ton code une fois que le DOM est complètement chargé.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script>
        $(document).ready(function() {
         $('.Sendparams').click(function (e) {
            e.preventDefault();
            debugger;
            var produitId = $(this).val();
            var quant = $("#quant").val();
            $.ajax({
                type: 'GET',
                url: '/ShoppingCart/AddToCart',
                data:{ "Id": produitId , "quant": quant },
            success: function (response) {
                    $("#mainContainerCenter").html(response); } });});
    });
    </script>

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 21
    Par défaut Salut François j'ai essayé le script que vous m'avez envoyé mais j'ai reçu l 'essreur suivante
    Citation Envoyé par François DORIN Voir le message
    Bonjour,

    Dans l'immédiat, je ne vois pas d'erreur flagrante.

    Il y a par contre la possibilité qu'au moment où le script javascript s'exécute, le DOM ne soit pas chargée. Du coup, l'ajout d'un gestionnaire sur l'événement click n'est pas posé !

    Essai ainsi, afin d'exécuter ton code une fois que le DOM est complètement chargé.
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <script>
        $(document).ready(function() {
         $('.Sendparams').click(function (e) {
            e.preventDefault();
            debugger;
            var produitId = $(this).val();
            var quant = $("#quant").val();
            $.ajax({
                type: 'GET',
                url: '/ShoppingCart/AddToCart',
                data:{ "Id": produitId , "quant": quant },
            success: function (response) {
                    $("#mainContainerCenter").html(response); } });});
    });
    </script>
    voila l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult AddToCart(Int32, System.String)' in 'testingtemplate.Controllers.ShoppingCartController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
    Nom du paramètre : parameters

  5. #5
    Expert confirmé

    Avatar de François DORIN
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    2 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2 761
    Billets dans le blog
    21
    Par défaut
    Citation Envoyé par Swifa Voir le message
    voila l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult AddToCart(Int32, System.String)' in 'testingtemplate.Controllers.ShoppingCartController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
    Nom du paramètre : parameters
    On progresse ! L'erreur vient du fait que tu accès à ta textbox "quant" par son id dans le code javascript. Mais il n'en a pas ! Il n'a qu'un nom. Soit tu lui rajoutes un id, soit tu le récupères via son nom.

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 21
    Par défaut
    Citation Envoyé par François DORIN Voir le message
    On progresse ! L'erreur vient du fait que tu accès à ta textbox "quant" par son id dans le code javascript. Mais il n'en a pas ! Il n'a qu'un nom. Soit tu lui rajoutes un id, soit tu le récupères via son nom.
    j'ai essayé de changer mon textbox en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
       <li>@Html.TextBox("quant", null,new { id = "quant" })</li>
    mais j'ai recu l'erreur suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.Web.Mvc.ActionResult AddToCart(Int32, System.String)' in 'testingtemplate.Controllers.ShoppingCartController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
    Nom du paramètre : parameter
    j'essaie d'envoyer deux valeurs l'id du produit que j'ai cliqué dessus et la valeur de la quantité saisie dans la textbox. je pense que l'id dont ils parlent est celui du produit nnn ?

  7. #7
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2016
    Messages : 21
    Par défaut Salut Dokho1000
    Citation Envoyé par Dokho1000 Voir le message
    As tu une route valide avec les paramètres id & quant ?
    Montre nous ton routeconfig.cs...
    je ne sais pas vraiment ou je peux trouver le routeconfig.cs

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

Discussions similaires

  1. Envoi d'une valeur par socket
    Par bibom dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/06/2007, 14h04
  2. Envoi d'une valeur d'une requete sql dans une variable ?
    Par olivierc25 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 03/04/2007, 13h11
  3. Envoi d une valeur a une formulaire fils
    Par Treuze dans le forum Access
    Réponses: 1
    Dernier message: 13/08/2006, 12h54
  4. Placer une valeur dans un textbox
    Par ThunderBib dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/05/2006, 22h34
  5. Placer une valeur dans un textbox
    Par ThunderBib dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 04/05/2006, 20h59

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