2009-03-18 12 views
51

Avendo problemi in cui nella mia pagina .aspx passo una variabile booleana (C#) a una funzione javascript che si aspetta un tipo booleano.Tentativo di passare una variabile C# booleana a una variabile javascript e impostarla su true

BUt la variabile C# restituisce True e javascript non è come il maiuscolo.

myjavascript(<%= MyBooleanVariableInCSharp %>); 

Se converto la # variabile di c a stringa, quindi la mia variabile javascript diventa una stringa e non un valore bool js!

qual è la soluzione a questo incubo? lol

risposta

76

Prova questa:

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

E 'divertente che dobbiamo fare una conversione in modo non funzionale per trasformare un tipo semplice come booleano ma funziona! Thanx – Samuel

+0

haha ​​che è davvero intelligente Andrew. –

+4

+1. Sto usando '.ToLowerInvariant()'. – WynandB

16

se avete bisogno di fare questo, spesso, basta aggiungere questo alla parte superiore del javascript (o il vostro js file di libreria, ecc)

var True = true, False = false; 

Poi codice

myjavascript(<%= MyBooleanVariableInCSharp %>); 

Funzionerebbe bene.

Un'altra opzione, se per qualsiasi motivo non si desidera utilizzare le variabili è quello di scrivere la vostra chiamata javascript in questo modo:

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

Buona idea, anche se questo finirà sulla pagina come 'myjavascript ('True' == 'True')', che non richiede l'uso di variabili. Se hai in mente 'myjavascript (<% = MyBooleanVariableInCSharp%> == 'True') 'in mente, le variabili sono obbligatorie ma non valuteranno mai' true'. Un'altra idea basata sul tuo: 'myjavascript ('<% = MyBooleanVariableInCSharp%>' === '<% = bool.TrueString%>')'. – WynandB

+0

@Wynand Ho modificato la mia risposta per chiarire che stavo offrendo due opzioni separate – mendel

7

Si potrebbe anche fare questo.

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

C# ha un metodo incorporato per questo. Almeno in .NET v4 e successivi.

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

+2

Credo che tu abbia torto. Probabilmente è un'estensione personalizzata che hai nella tua base di codice. Altrimenti, si prega di fornire il link MSDN. – mark

+0

Ovviamente hai ragione. Era un'estensione per tutte le strutture per ottenere i loro equivalenti JS, comprese le strutture nullable. – mireigi

0

Nel caso in cui si utilizza MVC Razor si potrebbe scrivere

myjavascript(@MyBooleanVariableInCSharp.ToString().ToLower()); 
Problemi correlati