如何将 Razor 布尔变量传递给 Angular 指令?

raj*_*esh 3 javascript c# boolean razor angularjs

我的 cshtml 文件中有一个布尔变量。当我尝试将它传递给我的 Angular 指令时,它被接收为“False”而不是“false”。如果我将其硬编码为“false”(小写),它也不起作用。

我的 cshtml 文件:

@{
    var myVar = false;
}

<some-directive test="@myVar"></some-directive>
Run Code Online (Sandbox Code Playgroud)

我的测试指令是这样的:

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
          }
      }
  });
Run Code Online (Sandbox Code Playgroud)

Zan*_*non 5

您可以在这里找到部分答案。

特别是对于 Angular,请使用指令变量 as 而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>
Run Code Online (Sandbox Code Playgroud)