.net mvc アクション ページの javascript 関数にブール値を渡しています。
問題は、値Trueを出力しており、javascriptは明らかに「true」(小文字)のみを受け入れることです。
アクションで変数をハックして文字列にして小文字に変換したくないのですが、どうしようもないのでしょうか?
.net mvc アクション ページの javascript 関数にブール値を渡しています。
問題は、値Trueを出力しており、javascriptは明らかに「true」(小文字)のみを受け入れることです。
アクションで変数をハックして文字列にして小文字に変換したくないのですが、どうしようもないのでしょうか?
.NETブール値でToString()メソッドを使用して値をJavascriptに送信している場合は、次のようなものに置き換えてみてください
(myBoolean ? "true" : "false")
必要なブール値の適切な文字列表現として Javascript に送信されるようにします。
編集:次の違いに注意してください:
<script type="text/javascript">
var myBoolean = <%= (myBoolean ? "true" : "false") %>;
</script>
と
<script type="text/javascript">
var myBoolean = '<%= (myBoolean ? "true" : "false") %>';
</script>
最初の例では、次のようになります。
var myBoolean = false;
これは文字通りブール値の false です。2 番目に、次のようになります。
var myBoolean = 'false';
JavaScript では、'false' は空でない文字列であるため、ブール値のコンテキストで評価すると true になります。まあ、本当っぽい。:)
モデルのブール値プロパティで使用する拡張メソッドを作成しました。
public static class GeneralExtensions
{
public static string GetValueForJS(this bool argValue)
{
return argValue ? "true" : "false";
}
}
ビューでは、次のように簡単に使用できます。
<script type="text/javascript">
var variable = @Model.IsFoo.GetValueForJS();
</script>
これを頻繁に行う必要がある場合は、これを JavaScript (または js ライブラリ ファイルなど) の先頭に追加するだけです。
var True = true; False = false;
シンプルな 1 回限りのケースでは、次のように使用します。
var x = ('<%= boolValue %>'=='True' );
JavaScriptBoolean()
メソッドを使用できます
if (Boolean(value)) {}
私にとって、このアプローチは機能します(MVC4)
<script type="text/javascript">
if (@{if (Model.IsSubmitted) { @Html.Raw("true"); } else { @Html.Raw("false"); } } == true)
{
// code
}
</script>
これを使用したい:
(.NET 3.5) System.Web.Script.Serialization.JavaScriptSerializer.Serialize