2009-03-18 17 views
51

私の.aspxページで、ブール型を予期しているjavascript関数にブール変数(C#)を渡しています。ブール型C#変数をjavascript変数に渡してtrueに設定しようとしています

C#変数はTrueを返し、JavaScriptは大文字が嫌いです。

myjavascript(<%= MyBooleanVariableInCSharp %>); 

私は文字列にC#の変数を変換する場合は、その後、私のjavascriptの変数は文字列ではなく、JSのブール値になります!

この悪夢の解決策は何ですか?笑

答えて

76

はこれを試してください:あなたは、多くの場合、これを実行する必要がある場合

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

を書くことができます! Thanx – Samuel

+0

ハハは本当にスマートですアンドリュー。 –

+4

+1。私は '.ToLowerInvariant()'を使用しています。 – WynandB

16

は、ちょうどその後のjavascriptの上部(またはあなたのjsライブラリファイルなど)

var True = true, False = false; 

にこれを追加しますあなたはコード

myjavascript(<%= MyBooleanVariableInCSharp %>); 

うまくいくでしょうか。

場合は、変数を使用したくない何らかの理由で別のオプションは、このようなあなたのjavascriptの呼び出しを記述することです:あなたはまた、これを行うことができます

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

これは、myjavascript( 'True' == 'True') 'としてページに表示されますが、変数を使用する必要はありません。 'myjavascript(<%= MyBooleanVariableInCSharp%> == 'True')'を覚えていれば、変数は必須ですが、 'true'に評価されることはありません。あなたに基づいた別のアイデア: 'myjavascript( '<%= MyBooleanVariableInCSharp%>' === '<%= bool.TrueString%>')。 – WynandB

+0

@Wynand私は2つの別々のオプションを提供していたことを明確にするために私の答えを編集しました – mendel

7

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

C#には組み込みの方法があります。少なくとも.NET v4以降。

var myBoolean = <%= myBooleanFromCodeBehind.ToJs()%>;あなたはMVCかみそり を使用している場合は

+2

私はあなたが間違っていると信じています。おそらくあなたのコードベースにあるカスタム拡張です。それ以外の場合は、MSDNリンクを提供してください。 – mark

+0

あなたはもちろん正しいです。これは、すべての構造体がnull許容可能な構造体を含むJS equivelantsを取得するための拡張でした。 – mireigi

0

あなたはそれは我々がブールのような単純型を変換するように機能していない変換を行う必要があることに面白いですが、それは動作します

myjavascript(@MyBooleanVariableInCSharp.ToString().ToLower()); 
関連する問題