2009-03-18 5 views
51

J'ai des problèmes où dans ma page .aspx je passe une variable booléenne (C#) à une fonction javascript qui attend un type booléen. BUt la variable C# renvoie True, et javascript n'aime pas les majuscules.Essayer de transmettre une variable C# booléenne à une variable javascript et la définir à

myjavascript(<%= MyBooleanVariableInCSharp %>); 

Si je convertir C# variable chaîne, ma variable javascript devient une chaîne et non une valeur bool js!

quelle est la solution à ce cauchemar? lol

Répondre

76

Essayez ceci:

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

Il est drôle que nous devons faire une conversion afin de ne pas fonctionnelle pour transformer un type simple comme booléen mais ça fonctionne! Thanx – Samuel

+0

haha ​​qui est vraiment intelligent Andrew. –

+4

+1. J'utilise '.ToLowerInvariant()'. – WynandB

16

si vous devez le faire souvent, ajoutez juste en haut du javascript (ou votre fichier de bibliothèque js, etc.)

var True = true, False = false; 

Ensuite, vous code

myjavascript(<%= MyBooleanVariableInCSharp %>); 

Cela fonctionnerait très bien.

Une autre option si pour une raison quelconque, vous ne voulez pas utiliser les variables est d'écrire votre appel javascript comme ceci:

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

Bonne idée, bien que cela finira sur la page comme 'myjavascript ('True' == 'True')', ce qui ne nécessite pas l'utilisation de variables. Si vous aviez 'myjavascript (<% = MyBooleanVariableInCSharp%> == 'True')' à l'esprit, les variables sont obligatoires, mais elles ne seront jamais évaluées à 'true'. Une autre idée basée sur la vôtre: 'myjavascript ('<% = MyBooleanVariableInCSharp%>' === '<% = bool.TrueString%>')'. – WynandB

+0

@Wynand J'ai édité ma réponse pour clarifier que j'offrais deux options séparées – mendel

7

Vous pouvez aussi le faire.

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

C# a une méthode intégrée pour cela. Au moins dans .NET v4 et plus récent.

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

+2

Je crois que vous avez tort. C'est probablement une extension personnalisée que vous avez dans votre base de code. Sinon, veuillez indiquer le lien MSDN. – mark

+0

Vous avez bien sûr raison. C'était une extension pour toutes les structures d'obtenir leurs équivélants JS, y compris les structures valables. – mireigi

0

Si vous utilisez MVC Razor vous pouvez écrire

myjavascript(@MyBooleanVariableInCSharp.ToString().ToLower()); 
Questions connexes