mrb*_*lah 14 javascript asp.net-mvc view
我将一个布尔值传递给我的.net mvc操作页面中的javascript函数.
问题是,它输出值True,javascript显然只接受'true'(小写).
我不想破解变量并将其变为字符串并在我的操作中将其转换为小写,但看起来我没有选择?
Dyl*_*tie 18
如果您在.NET布尔值上使用ToString()方法将值发送到Javascript,请尝试将其替换为类似
(myBoolean ? "true" : "false")
Run Code Online (Sandbox Code Playgroud)
这样它就会被发送到Javascript,作为所需bool值的相应字符串表示.
编辑:注意区别:
<script type="text/javascript">
var myBoolean = <%= (myBoolean ? "true" : "false") %>;
</script>
Run Code Online (Sandbox Code Playgroud)
和
<script type="text/javascript">
var myBoolean = '<%= (myBoolean ? "true" : "false") %>';
</script>
Run Code Online (Sandbox Code Playgroud)
在第一个示例中,您最终得到:
var myBoolean = false;
Run Code Online (Sandbox Code Playgroud)
这是一个文字布尔值false.在第二个,你最终得到:
var myBoolean = 'false';
Run Code Online (Sandbox Code Playgroud)
在JavaScript中,'false'是一个非空字符串,因此如果在布尔上下文中进行求值,它将是真的.嗯,真实的.:)
我创建了一个扩展方法,在模型的任何布尔属性中使用它.
public static class GeneralExtensions
{
public static string GetValueForJS(this bool argValue)
{
return argValue ? "true" : "false";
}
}
Run Code Online (Sandbox Code Playgroud)
现在在视图中我可以简单地使用:
<script type="text/javascript">
var variable = @Model.IsFoo.GetValueForJS();
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19727 次 |
| 最近记录: |