javascript - 如何在 MVC cshtml 页面的 @string.Concat() 中使用 Angular 范围变量

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

我想在 anchor 标记ng-click中使用 Angular 范围变量作为cshtml页面中的参数[该参数应与@string.Concat一起使用],如下所示。

              <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>

最佳答案

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

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

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

关于javascript - 如何在 MVC cshtml 页面的 @string.Concat() 中使用 Angular 范围变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39155543/

相关文章:

javascript - 使用 execCommand() 添加 CSS 类

javascript - 为什么在 JavaScript 中两个不同的数字相等?

javascript - 在 HTML5/WinJS 中为导弹制作动画

c# - 我如何从字符串中删除外部 <p>...</p>

c# - 将 RDLC 数据源设置为对象的问题

c# - 初始化接口(interface)中的值

javascript - 随着对话框内部内容的增加,如何将按钮停靠到 jQueryUI 对话框底部?

javascript - 使用 Angular 添加时间到日期

javascript - 如何从 AngularJS 中的当前时间中减去一些小时数

javascript - Typescript Angular ui 引导模式