English 中文(简体)
将我的 .net MVC 视图中的布尔值传递给 JavaScript,但 JS 不接受 True,需要 true。
原标题:
  • 时间:2009-03-17 11:43:05
  •  标签:

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

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

我不想在我的操作中破解变量并将其转换为字符串并转换为小写,但看起来我没有选择?

最佳回答

如果您使用ToString()方法在.NET布尔值上发送值到Javascript,请尝试将其替换为类似于

(myBoolean ? "true" : "false")

以便将其作为所需布尔值的适当字符串表示发送到Javascript。

编辑:请注意以下差异:

<script type="text/javascript">
var myBoolean = <%= (myBoolean ? "true" : "false") %>;
</script>

This is already in English and it does not require translation. As for "and", it is already the same in Chinese (和).

<script type="text/javascript">
var myBoolean =  <%= (myBoolean ? "true" : "false") %> ;
</script>

在第一个例子中,你最终得到:

var myBoolean = false;

This is already in English and it does not require translation. As for "and", it is already the same in Chinese (和).that s a literal Boolean false. In the second, you end up with:

var myBoolean =  false ;

This is already in English and it does not require translation. As for "and", it is already the same in Chinese (和).in JavaScript, false is a non-empty string This is already in English and it does not require translation. As for "and", it is already the same in Chinese (和).consequently if evaluated in a Boolean context, it ll be true. Well, true-ish. :)

问题回答

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

    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>

你可以使用 JavaScript 的Boolean()方法。

if (Boolean(value)) {}

你想要使用这个:

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

我编写了一个公共的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;
}




相关问题
热门标签