我在我的.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。在第二种情况下,你最终得到:
var myBoolean = 'false';
在JavaScript中,'false'是一个非空字符串,因此如果在布尔上下文中计算它,它将为true。好吧,准确来说是“类似于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;
在简单的一次性情况下使用:
var x = ('<%= boolValue %>'=='True' );
对我来说,这种方法很有效(MVC4)
<script type="text/javascript">
if (@{if (Model.IsSubmitted) { @Html.Raw("true"); } else { @Html.Raw("false"); } } == true)
{
// code
}
</script>
if (@Html.Raw(Model.IsSubmitted?"true":"false"))
。 - Andreas WilladsenBoolean()
方法。if (Boolean(value)) {}
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;
}