【问题标题】:How to get bool value from ViewBag on view?如何从 ViewBag 中获取布尔值?
【发布时间】:2015-11-12 11:03:02
【问题描述】:

我正在尝试从 ViewBag 接收布尔值。

但问题是要接收我正在使用的价值:

var test = '@ViewBag.Test'

这样,值将是'True''False'(字符串)。当然我可以使用if (test == 'True') 之类的东西,但是有没有办法直接从 ViewBag 布尔值中获取,或者至少转换它?

编辑:

我需要在 javascript 部分获取 ViewBag 值。

【问题讨论】:

  • 显示,如何设置此变量
  • 使用视图模型而不是视图袋。由于您需要在类中定义所有内容,因此设置的开销会稍多一些,但从长远来看会节省您的理智。你是想在 JS 还是 razor 中使用这个变量?
  • 在 js 中。从角度来看是的,它将被更改为模型,但现在,我需要 ViewBag。
  • 你不能把var test = '@ViewBag.Test';改成var test = @ViewBag.Test;吗?

标签: c# jquery viewbag


【解决方案1】:

在控制器代码是 ViewBag.Test = true;

查看代码是

var test=@(ViewBag.Test.ToString().ToLower());
console.log(test);

现在变量test的数据类型是bool。所以你可以使用:

if(test)
    alert('true');
else 
    alert('false')

【讨论】:

    【解决方案2】:

    您可以使用拆箱:

    var test = @((bool)(ViewBag.Test??false))
    

    压缩成单行,处理缺少的 ViewBag 元素。 Null 合并运算符返回 ViewBag.Test 的值,如果“Test”不存在,则返回 false。最后的值是类型转换。

    【讨论】:

    • 请通过解释它在现有答案中添加的内容来改进您的答案。
    【解决方案3】:

    如果你的值是 bool 在控制器中然后使用 cshtml 页面

    bool test='@ViewBag.Test';
    

    由于viewbag 不需要强制转换,我认为当您在bool 变量中分配值时,它会在您的视图(cshtml)页面中为您提供bool

    【讨论】:

      【解决方案4】:

      您只需删除引号var test = @ViewBag.Test

      【讨论】:

        【解决方案5】:

        只需要:

        <script>
           var test = '@ViewBag.Test';
           if(test)
               {console.log(test);}
           else
               {console.log(test);};
        </script>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-12
          • 2019-12-30
          • 1970-01-01
          • 1970-01-01
          • 2016-07-15
          • 2016-07-08
          • 2012-02-01
          • 1970-01-01
          相关资源
          最近更新 更多