16

我正在将一个布尔值传递给我的 .net mvc 操作页面中的一个 javascript 函数。

问题是,它输出的是 True 值,而 javascript 显然只接受 'true' (小写)。

我不想破解变量并将其设为字符串并将其转换为小写,但看起来我别无选择?

4

7 回答 7

18

如果您在 .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' 是一个非空字符串,因此如果在布尔上下文中求值,它将为真。嗯,真实的。:)

于 2009-03-17T11:46:23.843 回答
5

我创建了一个扩展方法来在模型的任何布尔属性中使用它。

    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>
于 2012-05-14T22:00:29.680 回答
3

如果您需要经常这样做,只需将其添加到 javascript(或您的 js 库文件等)的顶部即可

var True = true; False = false;

在一个简单的一次性案例中使用:

var x = ('<%= boolValue %>'=='True' );
于 2013-05-28T21:42:42.580 回答
1

您可以使用javascriptBoolean()方法

if (Boolean(value)) {}
于 2010-10-29T14:04:30.460 回答
0

你想用这个:

(.NET 3.5) System.Web.Script.Serialization.JavaScriptSerializer.Serialize

于 2009-03-17T11:59:45.793 回答
0

对我来说,这种方法有效(MVC4)

<script type="text/javascript">

if (@{if (Model.IsSubmitted) { @Html.Raw("true"); } else { @Html.Raw("false"); } } == true)
{
// code
}

</script>
于 2016-09-07T13:28:27.893 回答
0

我写了一个公共 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;
}
于 2019-10-05T06:40:38.923 回答