【问题标题】:How can I compare a value from C# Viewbag in Javascript?如何在 Javascript 中比较来自 C# Viewbag 的值?
【发布时间】:2012-08-31 10:42:52
【问题描述】:

我想比较 javascript 中 Viewbag 的布尔值。所以一开始我尝试了这个:

if (@Viewbag.MyBoolValue)
    do_sth();

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

所以我尝试了这个:

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

在javascript中:

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

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

【问题讨论】:

  • 旁注:如果你真的想在 JavaScript 中使用 C# 字符串,你会使用 '@myString'"@myString"。该值被直接扔到那里而无需输入(显然)。

标签: c# javascript asp.net-mvc-3


【解决方案1】:

假设 ViewBag 中的值是 javascript 可以理解的类型,您应该可以使用。

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

var myBoolValue = @ViewBag.MyBoolValue.ToString().ToLower();
if (myBoolValue)
    do_sth();

【讨论】:

  • Viewbag 可能区分大小写:ViewBag
【解决方案2】:

下面将创建一个带有 viewbag 值的 javascript 可用

<script>
    var myBoolInJs = @Viewbag.MyBoolValue;
    if(myBoolInJs == true)
     do_sth();
</script>

【讨论】:

  • @MateuszRogulski 对不起,你不需要 HtmlRaw,我只是输入得太快了
【解决方案3】:
var myBoolVal = @((ViewBag.MyBoolValue ?? false).ToString().ToLower());

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

 var myBoolVal = @(Json.Encode(ViewBag.MyBoolValue ?? false));

【讨论】:

    【解决方案4】:

    这会起作用。

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

    【讨论】:

      【解决方案5】:

      在你的控制器中设置真假使用 0 和 1,在剃须刀页面的顶部

      @{ 
          var isSomething= Viewbag.MyBoolValue;
      }
      

      稍后下来

      if (@isSomething== 0)
      

      【讨论】:

        猜你喜欢
        • 2020-12-17
        • 2023-03-16
        • 1970-01-01
        • 2021-10-24
        • 1970-01-01
        • 1970-01-01
        • 2014-05-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多