C#如何给角指令传递Razor布尔变量?

发布时间: 2017/2/23 20:06:21
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我在我的 cshtml 文件中有一个布尔变量。当我试着把它传给我角的指令时,它被接受作为"假"而不是"假"。如果我硬编码它为"false"(小写),它也没有用。

我的 cshtml 文件︰

@{
    var myVar = false;
}

<some-directive test="@myVar"></some-directive>

我测试指令是这样的︰

angular.module('someApp')
  .directive('someDirective', function () {
      return {
          restrict: 'E',
          scope: {
              test: '@'
          },
          link: function ($scope, element, attrs) {

              console.log($scope.test) // False
              console.log(!$scope.test) // false
              console.log(!!$scope.test) // true
          }
      }
  });

解决方法 1:

你可以找到你的部分答案在这里

专门为角,使用该指令的变量作为 test: '=' 而不是 test: '@' 。有了这个,您的变量将被解析,作为布尔值"false",而不是文本"false"。

此外,在Razor文件中,可尝试以下方法将从"False"转换为"false":

@{
    var myRazorVar = false;
}

<some-directive test="@myRazorVar.ToString().ToLower()"></some-directive>
@* or *@
<some-directive test="@Json.Encode(myRazorVar)"></some-directive>
官方微信
官方QQ群
31647020