如何将角度范围变量用于MVC cshtml页面的@ string.Concat()

时间:2016-08-25 22:13:52

标签: javascript angularjs asp.net-mvc asp.net-mvc-4 razor

我想在锚标记 ng-click 中使用角度范围变量作为param [param应该与@ string.Concat一起使用]在cshtml页面中如下所示。

              <a href="#" 
  ng-click="GetName('@string.Concat("Selected name:",name)')"> {{name}} </a>

var personApp = angular.module('personApp', []);
personApp.controller('personController', ['$scope', function ($scope) {
    $scope.GetName = function(name){
      alert(name);
    }
}]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<html>
<body ng-app="personApp">
    <h1>Scope</h1>
    <div  ng-controller="personController" ng-init="names=['John Doe', 'Mary Jane', 'Bob Parker']">
        <ul>
            <li ng-repeat="name in names">
              <a href="#" 
  ng-click="GetName('@string.Concat("Selected name:",name)')"> {{name}} </a>
            </li>
        </ul>
    </div>

</body>
</html>

1 个答案:

答案 0 :(得分:1)

@string.Concat是C#代码,当razor尝试渲染页面时,它会在服务器上执行。那时你的角度代码/变量甚至都不可用! Razor会将其执行的输出(视图中的C#代码)发送到浏览器,这是普通的HTML标记。然后只执行你的角度代码。因此,您不能将客户端js varibale与c#代码混合在一起。

您可以做的最好的事情就是简单地传递name变量,这是您的客户端js变量。

<li ng-repeat="name in names">
    <a href="#" ng-click="GetName(name)"> {{name}} </a>
</li>