2011-01-13 5 views
4

Ich versuche, eine JavaScript-Funktion beim Klicken auf eine MVC2-Ansichtsseite aufzurufen.JavaScript Fehler: bedingte Kompilierung ist in MVC2 deaktiviert Ansicht

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

JavaScript-Funktion

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

Hier ba_Object_Id und-Code sind die Werte aus dem Ansichtsmodell. Wenn ich SelectBenefit(<%=o.ba_Object_id %>) auf diese Weise benutze, funktioniert es gut. Aber wenn ich zwei Paramater seine nicht.Ich bin diesen Fehler:

conditional compilation is turned off. 
+0

Können Sie uns zeigen die gerenderten HTML? I.e. Was siehst du, wenn du die Quelle ansiehst? – Skilldrick

Antwort

7

Ich denke, dass Sie Anführungszeichen um den zweiten Parameter setzen müssen, wenn es sich um eine Zeichenfolge ist:

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

Vor diesem Hintergrund sei Ihre Parameter müssen richtig codiert sein und ich würde sie nicht gleich übergeben. Ich würde sie als JSON-Objekt serialisieren, um sicherzustellen, dass alles in Ordnung ist. Wie folgt aus:

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

und dann die SelectBenefit Funktion könnte wie folgt aussehen:

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

Vielen Dank, es funktioniert – Rajesh

+0

+1 für die erste Zeile .... seine Erklärung alles ... –

+2

@ Patel.Milanb, es ist die zweite Code-Schnipsel (mit einem 'JavaScriptSerializer'), die ich eigentlich empfehlen würde, also nicht Machen Sie den Fehler, das zu verwenden, was ich im ersten Codeausschnitt gezeigt habe. –

2

Ich o.ba_Object_Code erraten ist nicht eine Zahl? Versuchen Sie Anführungszeichen um es setzen:

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

Sie diese Funktion auch so schreiben könnte:

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

Oder verwenden JQuery (beste Ansatz, imo):

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

Danke, es funktioniert. – Rajesh