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