【问题标题】:How to use angular scope variable into @string.Concat() of MVC cshtml page如何在 MVC cshtml 页面的 @string.Concat() 中使用角度范围变量
【发布时间】:2016-08-25 22:13:52
【问题描述】:

我想在锚标记 ng-click 中使用角度范围变量作为参数 [该参数应与 @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>

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      • 1970-01-01
      • 2012-04-09
      相关资源
      最近更新 更多