2010-12-02 5 views
9

J'ai une méthode qui ressemble à ceciintégration javascript variable dans la syntaxe de rasoir

function endcall_click(leadid) { 
    document.location = '@Url.Action("index","dispo",new{id=leadid})/'; 
} 

Bien sûr, il ne fonctionne pas parce qu'il traite comme une variable côté serveur « leadid » mais je veux injecter la variable javascript passé dans la méthode.

J'ai essayé d'inclure l'identificateur de fil mais cela n'a pas fonctionné.

function endcall_click(leadid) { 
    document.location = '@Url.Action("index","dispo",new{id="<text>leadid</text>"})/'; 
} 

Des idées?

Répondre

19

Vous ne pouvez pas injecter une variable javascript dans un script qui est évalué sur le serveur simplement parce qu'au moment où ce script s'exécute et génère la sortie, cette variable n'a pas encore vu le jour. La seule façon d'y parvenir est de manipuler la chaîne résultante:

function endcall_click(leadid) { 
    document.location = '@Url.Action("index", "dispo")/' + leadid; 
} 

L'inconvénient est que cela suppose de manipuler les routes en javascript et si vous décidez de les changer sur le serveur le code pourrait casser.

+3

Vous avez raison. Maintenant que j'y pense. C'était une question assez stupide:) ... Le plus drôle est que je calcule leadid à partir d'une variable de serveur, donc je peux simplement l'utiliser. Il était 3 heures du matin quand j'ai posté;). Merci de votre aide. – Emad

1

J'ai finalement trouvé la solution (* .vbhtml):

<script type="text/javascript"> 
function razorsyntax() { 
    /* Double */ 
    @(MvcHtmlString.Create("var szam =" & mydoublevariable & ";")) 
    alert(szam); 

    /* String */ 
    var str = '@stringvariable'; 
    alert(str); 
} 
</script>