7

我想比较Viewbagjavascript 中的布尔值。所以起初我尝试了这个:

if (@Viewbag.MyBoolValue)
    do_sth();

但是后来我在控制台中有错误,例如:(Value False/True is not declared不完全是)。

所以我尝试了这个:

@{
    string myBool = ((bool)Viewbag.MyBoolValue) ? "true" : "false";
}

在javascript中:

if (@myBool == "true")
    do_sth();

但它也不起作用。我怎样才能让它工作?任何帮助,将不胜感激。

4

5 回答 5

25

假设 ViewBag 中的值是 javascript 可以理解的类型,那么您所拥有的应该可以工作。

但是请注意,您的第一个示例很可能不起作用,因为布尔值在 javascript 中是小写,而在 C# 中是大写。考虑到这一点,试试这个:

var myBoolValue = @ViewBag.MyBoolValue.ToString().ToLower();
if (myBoolValue)
    do_sth();
于 2012-08-31T10:47:23.177 回答
1

下面将创建一个带有来自 viewbag 的值的 javascript

<script>
    var myBoolInJs = @Viewbag.MyBoolValue;
    if(myBoolInJs == true)
     do_sth();
</script>
于 2012-08-31T10:47:34.143 回答
1
var myBoolVal = @((ViewBag.MyBoolValue ?? false).ToString().ToLower());

或者

var myBoolVal = '@(ViewBag.MyBoolValue)'==='@true';

或者

 var myBoolVal = @(Json.Encode(ViewBag.MyBoolValue ?? false));
于 2017-04-08T05:50:27.257 回答
0

这将起作用。

@{     
   string myBool = Viewbag.MyBoolValue.ToString().ToLower(); 
}

if (@myBool)
    do_sth(); 
于 2012-08-31T11:27:36.257 回答
0

Insted true and false use 0 and 1 in your controller, on top of razor page

@{ 
    var isSomething= Viewbag.MyBoolValue;
}

后来下来

if (@isSomething== 0)
于 2016-10-13T10:18:57.230 回答