2011-01-13 1 views
4

J'essaie d'appeler une fonction JavaScript lors d'un clic sur une page d'affichage MVC2.Erreur JavaScript: la compilation conditionnelle est désactivée dans MVC2 View

<a onclick=" SelectBenefit(<%=o.ba_Object_id %>,<%=o.ba_Object_Code %>)" href="#">Select</a> 

fonction JavaScript

function SelectBenefit(id,code) { 
    alert(id); 
    alert(code); 
} 

Ici ba_Object_Id et le code sont les valeurs de la ViewModel. Si j'utilise SelectBenefit(<%=o.ba_Object_id %>) de cette façon, cela fonctionne très bien. Mais quand j'ai deux paramaters son not.I reçois cette erreur:

conditional compilation is turned off. 
+0

Pouvez-vous nous montrer la rendu HTML? C'est à dire. Que voyez-vous quand vous regardez la source? – Skilldrick

Répondre

7

Je pense que vous avez besoin de mettre des guillemets autour du second paramètre si elle est une chaîne:

<a onclick=" SelectBenefit(<%=o.ba_Object_id %>, '<%=o.ba_Object_Code %>')" href="#">Select</a> 

Cela dit vos paramètres doivent être correctement encodés et je ne les passerais pas comme ça. Je les sérialiserais en tant qu'objet JSON pour m'assurer que tout est OK. Comme ceci:

<a onclick="SelectBenefit(<%= new JavaScriptSerializer().Serialize(new { id = o.ba_Object_id, code = o.ba_Object_Code }) %>)" href="#">Select</a> 

puis la fonction SelectBenefit pourrait ressembler à ceci:

function SelectBenefit(benefit) { 
    alert(benefit.id); 
    alert(benefit.code); 
} 
+0

Merci cela fonctionne – Rajesh

+0

+1 pour la première ligne .... son explication tout ... –

+2

@ patel.milanb, c'est le deuxième extrait de code (en utilisant un 'JavaScriptSerializer') que je recommanderais vraiment, donc ne pas faites l'erreur d'utiliser ce que j'ai montré sur le premier extrait de code. –

2

Je devine o.ba_Object_Code est pas un nombre? Essayez de mettre des citations autour:

<a onclick="SelectBenefit(<%=o.ba_Object_id %>,'<%=o.ba_Object_Code %>')" href="#">Select</a> 

Vous pouvez aussi écrire cette fonction comme ceci:

<a href="javascript:SelectBenefit(<%=o.ba_Object_id %>,'<%=o.ba_Object_Code %>');">Select</a> 

Ou utiliser Jquery (meilleure approche, imo):

$('#yourlinkid').click(function(){ 
    SelectBenefit(<%=o.ba_Object_id %>,'<%=o.ba_Object_Code %>'); 
    return false; 
}); 
+0

Merci cela fonctionne. – Rajesh

Questions connexes