2011-04-29 2 views
0

Je suis coincé avec un scénario tel que le suivant:Building HTML et en utilisant jQuery annexant

$(document).ready(function() { 
     var param1 = "A"; 
     var param2 = "B"; 
     var param3 = "C"; 
     $("ul#SomeUL").append('<li><%: Ajax.ActionLink("Click Me", "SomeAction", new { param1 = "' + param1 + '", param2 = "' + param2 + '", param3 = "' + param3 + '" }, new AjaxOptions() { OnSuccess = "onSuccess" }, new { Class = "ABC" }) %></li>'); 

Maintenant, le problème est que, au lieu de la valeur de chacun des paramètres # les variables étant « inséré » .. Le nom de variable lui-même (par exemple param1) obtient "inséré" ... en d'autres termes les routeValues ​​envoyés à l'action du contrôleur sont param1, param2, et param3 au lieu de A, B et C ... quelqu'un sait-il pourquoi est en train de se produire et comment y remédier? sont inutiles dans ce cas car ils sont le code côté serveur

Merci D

Répondre

1

ActionLinks. Vous ne pouvez pas les mélanger avec les variables javascript côté client. Voici comment je le ferais (embrassant toute la puissance de jQuery):

$(function() { 
    var param1 = 'A'; 
    var param2 = 'B'; 
    var param3 = 'C'; 
    $('ul#SomeUL').append(
     $('<li/>', { 
      html: $('<a/>', { 
       href: '<%= Url.Action("SomeAction") %>', 
       text: 'Click Me', 
       class: 'abc', 
       click: function() { 
        var params = { 
         param1: param1, 
         param2: param2, 
         param3: param3 
        }; 
        $.get(this.href, params, function(result) { 
         onSuccess(); 
        }); 
        return false; 
       } 
      }) 
     }) 
    ); 
}); 
+0

Ok ... mais le code ci-dessus fonctionnera-t-il aussi si le lien est une image qui doit être cliquée? (J'ai écrit une méthode d'extension appelée ImageActionLink, mais juste utilisé ActionLink dans mon scénario ci-dessus pour des raisons de simplicité.) – Dieter

+0

@Dieter, vous pouvez utiliser une classe CSS pour appliquer une image d'arrière-plan à la balise d'ancrage. 'tag Vous pouvez utiliser un attribut HTML5' data- * 'sur cette balise image afin de stocker l'URL avec l'assistant' Url.Action' –

+0

Ok, merci :) Je vais essayer ça ... – Dieter