我正在将一个布尔值传递给我的 .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;
这是一个字面的布尔错误。在第二个中,您最终得到:
var myBoolean = 'false';
在 JavaScript 中,'false' 是一个非空字符串,因此如果在布尔上下文中求值,它将为真。嗯,真实的。:)
我创建了一个扩展方法来在模型的任何布尔属性中使用它。
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;
在一个简单的一次性案例中使用:
var x = ('<%= boolValue %>'=='True' );
您可以使用javascriptBoolean()
方法
if (Boolean(value)) {}
你想用这个:
(.NET 3.5) System.Web.Script.Serialization.JavaScriptSerializer.Serialize
对我来说,这种方法有效(MVC4)
<script type="text/javascript">
if (@{if (Model.IsSubmitted) { @Html.Raw("true"); } else { @Html.Raw("false"); } } == true)
{
// code
}
</script>
我写了一个公共 js 方法,当我需要从 javaScript 中的操作中检查传递的布尔变量时,只需将原始值发送到该方法进行解析。
function GetBooleanValue(value) {
if (value == undefined) return false;
var parsedValue = value.toLowerCase();
if (parsedValue === "false") return false;
else if (parsedValue === "true") return true;
else return false;
}