2010-11-10 4 views
1

Je suis nouveau à Jquery et Asp.Net MVC. J'essaie de passer un paramètre IDQuelle est la meilleure façon d'obtenir l'ID d'Url avec asp.net mvc

à partir d'un lien ActionLink sur une page à la fonction jQuery. Cet ID est ensuite transmis à un contrôleur qui renvoie un jeu de résultats rendu dans une boîte de dialogue modale.

Quelle est la meilleure façon de capturer le paramètre Id à partir de l'ActionLink dans la fonction Jquery? Notez qu'il existe plusieurs liens d'action avec différents ID qui leur sont affectés.

ceci est mon lien d'action ci-dessous:

<%=Html.ActionLink("View", "GetDetailsById", new { id = x.ProductId }, new { @class = "view",@productId= x.ProductId })%>

ce ci-dessous est ma fonction jquery.

 $(function() { 
      var _id; 


      $(".view").click(function() { 
       // Get the ID value of this button. 

       _id = $(this).attr('productId');      

       // Initialize the dialog and call the next function 
       // to get the data.     
       $("#dialog-message").dialog('open'); 

       return false; 
      }); 

Remarque J'ai obtenu que ceci fonctionne en ajoutant un attribut personnalisé à actionlink - @ productId. Je prends alors la valeur en utilisant jquery comme ceci:

$(".view").click(function() { // Get the ID value of this button.

    _id = $(this).attr('productId');    

Cet identifiant est passé à une fonction jquery qui appelle une méthode dans le contrôleur.

Est-ce une bonne façon d'obtenir l'Id, ou y a-t-il une façon plus propre de le faire?

concernant

Kojo

+0

Curieux mais il semble que vous créiez un lien d'action mais n'utilisiez pas réellement le lien lui-même. Mais au lieu de cliquer sur retourner false et faire quelque chose d'autre. Ai-je raison? –

+0

Je décore le lien d'action avec la classe CSS et un ID. Je n'ai pas montré tout le code, mais j'ouvre une boîte de dialogue modale. – Kojof

Répondre

0

Vous pouvez attribuer le productId à l'identification de l'élément HTML généré, en spécifiant une id dans le code HTML des attributs paramètre:

new { @class = "view", id = x.ProductId } 

Ensuite, au lieu d'utiliser un attribut productId, vous pouvez saisir le id de la balise <a> générée de la même manière, c'est-à-dire utiliser $(this).attr("id").

Je recommanderais cela en utilisant productId depuis id est un code HTML valide.

Ainsi, votre code finirait par ressembler à ceci:

<%=Html.ActionLink("View", "GetDetailsById", new { id = x.ProductId }, new { @class = "view", id = x.ProductId })%> 

qui générerait un <a> avec id de productId. Ensuite, votre jQuery ressemblerait à ceci:

 $(function() { 
     var _id; 


     $(".view").click(function() { 
      // Get the ID value of this button. 

      _id = $(this).attr('id');      

      // Initialize the dialog and call the next function 
      // to get the data.     
      $("#dialog-message").dialog('open'); 

      return false; 
     }); 
+0

..J'ai utilisé $ (this).attr ('id') mais ça revient indéfini, une idée plz? Je veux juste obtenir la valeur d'identification au dessus de l'actionlink sur l'événement Click de jquery – Dragon

0

je passerais l'id du modèle de vue puis insérez la valeur dans une variable javascript manuellement

<script type="text/javascript"> 
    var id = '<% ViewData["theid"] %>'; 
</script> 

C'est la même stackoverflow technique utilise dans leur code . Allez-y et regardez leur code HTML et vous verrez.

+0

ceci est une technique utile et fonctionnerait. La seule raison pour laquelle je n'ai pas accepté c'est parce que j'ai une collection de données List qui est affichée dans un tableau sur la page. Je ne peux donc pas attribuer les identifiants individuels à <% ViewData ["theid"]%> avant de les afficher sur la page. – Kojof

Questions connexes