2017-01-31 3 views
0

javascriptブロックで次のRazorステートメントを使用していますが、「True is undefined」ランタイムエラーが発生します。 @ Request.IsLocalはTrueのブール値としてレンダリングされます。ありがとうございました。javascriptスクリプトブロックでRazor @ Request.IsLocalを評価します。

<script type="text/javascript"> 
 

 
var test; 
 
if (@Request.IsLocal || @Request.IsLocal == 'True') 
 
{ 
 
    test = 'local'; 
 
} 
 
else 
 
{ 
 
    test = 'not loccal' 
 
} 
 
alert(test); 
 
</script>

答えて

1

True JavaScriptのブール値ではありません。それはかみそりは、あなたの現在のコードを実行すると、それは

Request.IsLocal戻り trueを想定し
var test; 
if (True || True == 'True') 
{ 
    test = 'local'; 
} 
else { 
    test = 'not loccal'; 
} 

以下のような出力を生成し

<script type="text/javascript"> 

var test; 
if ("@(Request.IsLocal)" == 'True') 
{ 
    test = 'local'; 
} 
else 
{ 
    test = 'not loccal' 
} 
alert(test); 
</script> 

OR

<script type="text/javascript"> 

var test; 
if (@Request.IsLocal.ToString().ToLowerInvarient()) 
{ 
    test = 'local'; 
} 
else 
{ 
    test = 'not loccal' 
} 
alert(test); 
</script> 
0

を以下true

試みです​​。

ブラウザはこれを実行しようとします。今、javascriptフレームワークはTrueがjs変数だと考えていますが、どこにも定義されていません。ブール値trueJavaScriptは大文字と小文字が区別されます)です。だから、ブラウザは真

あなたは、単にサーバー上で実行し、テスト変数に値を返します三項演算式に切り替えることで、あなたのコードを簡素化することができます定義されていないと文句を言うだろう。

これは、ページのソースの表示をチェックすると、あなたが条件ならば、それらがサーバー上で実行されますので、何があることを見ることができない

<script type="text/javascript"> 

    var test= '@(Request.IsLocal?Html.Raw("local"):Html.Raw("not local"))'; 
    alert(test); 

</script> 

を動作するはずです。

関連する問題