2016-05-24 2 views
0

Je travaille sur un projet MVC et j'essayais d'envoyer des paramètres à mon contrôleur en JQuery en utilisant @Url.Action.Erreur lors de l'envoi des paramètres au contrôleur via @ Url.Action dans JQuery

code HTML:

<button class="btn btn-white btn-sm demo1" data-id='@item.TeamID'>Delete</button> 

code JQuery:

$(document).ready(function() { 
     $('.demo1').click(function (event) { 
      swal({ 
       title: "Are you sure?", 
       text: "You will not be able to recover this team!", 
       type: "warning", 
       showCancelButton: true, 
       confirmButtonColor: "#DD6B55", 
       confirmButtonText: "Yes, delete it!", 
       closeOnConfirm: false 
      }, function() { 
       var data = event.data; 
       var id = data.id; 
       var url = '@Url.Action("Delete", "Teams", new { id = "__param__" })'; 
       window.location.href = url.replace('__param__', encodeURIComponent(id)); 

       swal("Deleted!", "Your team has been deleted.", "success"); 
      }); 
     }); 
    }); 

Cependant, la méthode Delete dans le contrôleur n'est pas équipes déclenchée. Est-ce que je manque quelque chose?

MISE À JOUR: Le bouton HTML est placé dans une boucle foreach:

@foreach (var item in Model) 
{ 
    <tr> 
      <td> 
       @Html.DisplayFor(modelItem => item.TeamName) 
      </td> 
      <td> 
       @Html.DisplayFor(modelItem => item.TeamInits) 
      </td> 
      <td> 
       @Html.ActionLink("Edit", "Edit", new { id = item.TeamID }, new { @class = "btn btn-white btn-sm" }) 
       <button class="btn btn-white btn-sm demo1" data-id='@item.TeamID'>Delete</button> 
      </td> 
     </tr> 
} 
+0

Vous êtes un gestionnaire d'événement obligatoire avec la classe 'demo3' – Satpal

+0

Désolé, j'ai fait une erreur lors de la copie du code. En fait, je construis un gestionnaire d'événements avec la classe demo1. Je vais mettre à jour la question – Hanady

Répondre

1

utilisation HTMLElement.dataset propriété ou .data() pour lire la coutume data-* valeur d'attribut préfixé.

$(document).ready(function() { 
    $('.demo1').click(function (event) {    
     var id = this.dataset.id; 
     //OR 
     var id = $(this).data('id'); 

     //Rest of the code 
     swal(); 
    }); 
}); 
+0

'var id = $ (this) .data ('id');' travaillé pour moi, mais l'id est renvoyé comme nul au contrôleur. Veuillez noter que le bouton html est placé à l'intérieur d'une boucle foreach. Vérifiez la question mise à jour. – Hanady

+0

Oubliez mon commentaire. Ça fonctionne bien. Merci. – Hanady

0

J'ai l'habitude d'essayer l'astuce de code ci-dessous. Quand quelque chose ne va pas comme ça.

Ajoutez le code ci-dessous dans votre fichier Global.asax.cs et placez le débogueur dans la méthode afin qu'il soit déclenché lorsqu'une exception se produit. Le message d'exception ou la trace de la pile fournira les informations suffisantes pour corriger les erreurs.

Même si sa requête d'erreurs de page Jquery/Razor Html, vous aurez assez d'informations.

Espérons que cela aide !!!