2009-03-18 5 views
51

Sie haben ein Problem, wo in meiner aspx Seite, die ich in einer Booleschen Variable (C#) passieren zu einer Javascript-Funktion, die einen Typen boolean erwartet.in einem boolean C# Variable auf ein JavaScript-Variable zu übergeben Den Versuch, und legen Sie es wahr

aber die C# Variable gibt True zurück, und Javascript nicht die Groß mögen.

myjavascript(<%= MyBooleanVariableInCSharp %>); 

Wenn ich die C# Variable Zeichenfolge konvertieren, dann wird mein Javascript Variable ein String und kein js bool value!

was ist die Lösung für diesen Alptraum? lol

Antwort

76

Try this:

myjavascript(<%= MyBooleanVariableInCSharp.ToString().ToLower() %>); 
+1

Es ist lustig, schreiben, dass wir eine so nicht funktionale Umwandlung tun muss eine einfache Art, wie boolean zu verwandeln, aber es funktioniert! Danke – Samuel

+0

haha ​​das ist wirklich schlau Andrew. –

+4

+1. Ich benutze '.ToLowerInvariant()'. – WynandB

16

, wenn Sie diese brauchen oft zu tun, das nur von der Javascript oben hinzufügen (oder Ihre js Bibliotheksdatei, usw.)

var True = true, False = false; 

Dann Sie codieren

myjavascript(<%= MyBooleanVariableInCSharp %>); 

Würde gut funktionieren.

Eine weitere Option, wenn aus irgendeinem Grund Sie nicht wollen, um die Variablen verwenden, ist Ihr Javascript Aufruf wie folgt zu schreiben:

myjavascript('<%= MyBooleanVariableInCSharp %>'=='True'); 
+0

Gute Idee, auch wenn dies auf der Seite am Ende wird als 'myjavascript (‚True‘==‚True‘)', die nicht die Verwendung von Variablen erfordert. Wenn Sie 'myjavascript (<% = MyBooleanVariableInCSharp%> == 'True')' im Hinterkopf haben, werden die Variablen benötigt, aber es wird niemals zu 'true' ausgewertet. Eine weitere Idee basiert auf Ihnen: 'myjavascript ('<% = MyBooleanVariableInCSharp%>' === '<% = bool.TrueString%>')'. – WynandB

+0

@Wynand I edited meine Antwort klarstellen, dass ich bieten zwei separate Optionen – mendel

7

Sie könnten auch dies tun.

myjavascript(<%=myBooleanVariableInCSharp ? "true" : "false" %>); 
0

C# hat eine integrierte Methode dafür. Zumindest in .NET v4 und neuer.

var myBoolean = <% = meinBooleanFromCodeBehind.ToJs()%>;

+2

Ich glaube, Sie sind falsch. Es ist wahrscheinlich eine benutzerdefinierte Erweiterung, die Sie in Ihrer Codebasis haben. Andernfalls geben Sie bitte den MSDN-Link an. – mark

+0

Sie haben natürlich Recht. Es war eine Erweiterung für alle Strukturen, um ihre JS-Equivelanten zu erhalten, einschließlich Nullable-Strukturen. – mireigi

0

Falls Sie MVC Razor verwenden könnten Sie

myjavascript(@MyBooleanVariableInCSharp.ToString().ToLower()); 
Verwandte Themen