【问题标题】:Convert MVC ViewBag property to lowercase [duplicate]将 MVC ViewBag 属性转换为小写 [重复]
【发布时间】:2015-12-14 22:44:55
【问题描述】:

我正在尝试使用在 javascript if 语句内的控制器中设置的布尔 MVC ViewBag 属性。但是,由于属性值被转换为 Pascal 大小写,因此引入了一个问题。例如,“真”变成“真”,“假”变成“假”。

<script type="text/javascript">
    var error = @ViewBag.Dropped;
    if ( error ) {
        $( '#alert-message' ).addClass('alert-success alert-dismissable');
    }
</script>

如何确保该属性转换为小写。我尝试使用 javascript 函数 .toLowerCase() 并没有成功。

【问题讨论】:

  • 需要考虑属性是字符串还是布尔值。 True 值可能实际上是一个布尔值(因此是这种情况),当您在 Javascript 中分配它时,它会转换为字符串。
  • 与大小写无关。 var error = @ViewBag.Dropped; 返回一个文本值,因此 if ( error ) { 将始终被评估为 true - 您需要 if (error === 'True') {
  • 使用@Json.Encode(ViewBag.Dropped),它对我有用。我在 JS 中使用 CS 文件中的 bool 属性。

标签: javascript c# asp.net-mvc


【解决方案1】:

一种方法是:

<script type="text/javascript">
    var error = @(ViewBag.Dropped ? "true" : "false");
    if ( error ) {
        $( '#alert-message' ).addClass('alert-success alert-dismissable');
    }
</script>

【讨论】:

    【解决方案2】:
    var error = @ViewBag.Dropped.ToString().ToLower();
    

    【讨论】:

      【解决方案3】:

      我不认为上面的答案会起作用,因为所有字符串在 Javascript 中都是正确的,.. 你可能想要

      <script type="text/javascript">
          var error = @(ViewBag.Dropped ? true : false);
          if ( error ) {
              $( '#alert-message' ).addClass('alert-success alert-dismissable');
          }
      </script>
      

      请注意,如果您引用 true 和 false,它们将成为字符串,并且 true 与 "true" 不同。

      【讨论】:

      • 您可能不理解我的回答(您所指的)。该字符串是服务器端(asp,razor ...),它被评估并写入客户端,不带引号。
      • mea culpa - 我应该仔细看看 :-)
      【解决方案4】:

      我一直使用这种方法,因为较长的版本 (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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-24
        • 2019-02-26
        • 1970-01-01
        • 2014-11-11
        • 2022-01-19
        • 2011-12-13
        • 2020-05-29
        相关资源
        最近更新 更多