2009-03-18 19 views
51

Tengo problemas donde en mi página .aspx paso una variable booleana (C#) a una función javascript que espera un tipo booleano.Intentando pasar una variable booleana C# a una variable javascript y configurarla como verdadera

BUt la variable C# devuelve True y Javascript no le gusta la mayúscula.

myjavascript(<%= MyBooleanVariableInCSharp %>); 

Cuando se modifica la variable de C# de cadena, entonces mi variable de JavaScript se convierte en una cadena y no un valor bool js!

¿Cuál es la solución a esta pesadilla? lol

Respuesta

76

Prueba esto:

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

Es curioso que tenemos que hacer una conversión de modo no funcional para transformar un tipo simple como booleano, pero funciona! Gracias – Samuel

+0

jaja que es realmente inteligente Andrew. –

+4

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

16

si necesita hacer esto a menudo, sólo tiene que añadir esto a la parte superior del Javascript (o sus js archivo de biblioteca, etc.)

var True = true, False = false; 

Entonces código

myjavascript(<%= MyBooleanVariableInCSharp %>); 

Funcionaría muy bien.

Otra opción si por cualquier razón usted no desea utilizar las variables es escribir su llamada javascript así:

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

Buena idea, aunque esto terminará en la página como 'myjavascript ('Verdadero' == 'Verdadero')', que no requiere el uso de variables. Si tiene 'myjavascript (<% = MyBooleanVariableInCSharp%> == 'True')' en mente, las variables son necesarias pero nunca se evaluará como 'verdadero'. Otra idea basada en la tuya: 'myjavascript ('<% = MyBooleanVariableInCSharp%>' === '<% = bool.TrueString%>')'. – WynandB

+0

@Wynand Edité mi respuesta para aclarar que ofrecía dos opciones diferentes, – mendel

7

También puede hacer esto.

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

C# tiene un método incorporado para ello. Al menos en .NET v4 y más nuevo.

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

+2

, creo que estás equivocado. Es probable que sea una extensión personalizada que tiene en su base de código. De lo contrario, proporcione el enlace de MSDN. – mark

+0

Tiene razón, por supuesto. Era una extensión para todas las estructuras para obtener sus equivalentes JS, incluidas las estructuras con nulos. – mireigi

0

En caso de que usted está utilizando MVC Razor se podría escribir

myjavascript(@MyBooleanVariableInCSharp.ToString().ToLower()); 
Cuestiones relacionadas