在 AngularJS Html 中渲染 Razor 变量

Jef*_*tes 3 html asp.net-mvc razor angularjs

我在一些 Html 中嵌入了一个 Html 变量,我从数据库中检索到一个 AngularJS $scope 对象。然后我使用 ng-bind-html 指令在 MVC/razor 视图中呈现它。一个简单的例子如下:

myView.cshtml

<html>
  <body>
    <div ng-app="myApp" ng-controller="myCtrl">
      <p ng-bind-html="pageSizeHtml"></p>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的Ctrl.js

var myApp = angular.module('myApp', []);

myApp.controller('myCtrl', function($scope) {
    $scope.pageSizeHtml = '<div>Your page size is: @OurSystem.Configuration.PageSize</div>'
});
Run Code Online (Sandbox Code Playgroud)

当我运行它时,呈现的页面如下所示:

    Your page size is: @OurSystem.Configuration.PageSize
Run Code Online (Sandbox Code Playgroud)

但我希望它解释 Razor 变量的值,如下所示:

    Your default page size is: A4
Run Code Online (Sandbox Code Playgroud)

真的坚持这一点,所以任何帮助将不胜感激!

Bre*_*een 5

您当前的代码将不起作用,因为您试图在 .js 文件中使用 razor 语法,该文件不会被 razor 引擎转换。因此,您将获得文字字符串。

一个选项是ng-init在实际的剃刀视图中使用以将值传递给角度控制器。

在您看来:

<html>
  <body>
    <div ng-app="myApp" ng-controller="myCtrl" ng-init="myInit(@OurSystem.Configuration.PageSize)">
      <p ng-bind-html="pageSizeHtml"></p>
    </div>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在 JS 控制器中:

var myApp = angular.module('myApp', []);

myApp.controller('myCtrl', function($scope) {
    $scope.myInit = function(val) {
        $scope.pageSizeHtml = '<div>Your page size is: ' + val + '</div>';
    }
});
Run Code Online (Sandbox Code Playgroud)

注意:在测试上述代码时遇到本地问题,但它应该非常接近您想要的。