我正在尝试使用在javascript if语句中的控制器中设置的布尔MVC ViewBag属性。但是,由于属性值转换为Pascal大小写,因此引入了一个问题。例如,“true”变为“True”,“false”变为“False”。
<script type="text/javascript">
var error = @ViewBag.Dropped;
if ( error ) {
$( '#alert-message' ).addClass('alert-success alert-dismissable');
}
</script>
如何确保将属性转换为小写。我试过使用javascript函数.toLowerCase()并且不成功。
答案 0 :(得分:5)
一种方法是:
<script type="text/javascript">
var error = @(ViewBag.Dropped ? "true" : "false");
if ( error ) {
$( '#alert-message' ).addClass('alert-success alert-dismissable');
}
</script>
答案 1 :(得分:3)
var error = @ViewBag.Dropped.ToString().ToLower();
答案 2 :(得分:1)
我不认为上面的答案会有效,因为Javascript中的所有字符串都是真的,你可能想要
<script type="text/javascript">
var error = @(ViewBag.Dropped ? true : false);
if ( error ) {
$( '#alert-message' ).addClass('alert-success alert-dismissable');
}
</script>
请注意,如果引用true和false,它们将成为字符串,而true与&#34; true&#34;不相同。
答案 3 :(得分:0)
我一直使用这种方法,因为较长的版本(value.ToString().ToLowerInvariant()
)过于繁琐而无法一直输入:
将类添加到项目或库中:
public static class ExtensionMethods
{
public static string ToJS(this bool value)
{
return value.ToString().ToLowerInvariant();
}
}
然后在你的js:
<script type="text/javascript">
var error = @ViewBag.Dropped.ToJS();
if ( error ) {
$( '#alert-message' ).addClass('alert-success alert-dismissable');
}
</script>