ASP.NET 网络表单和 AngularJS

ASP.NET Webforms and AngularJS

我仍在努力获得我的第一个 ASP.NET WebApi / AngularJS 应用程序和 运行...

我正在尝试从 Angular 查询 WebAPI 服务(我已经使用 Fiddler 编写并验证它工作正常),并且我正在尝试显示返回到我的 ASP.NET 网络表单页面。我学习了很多教程和 Pluralsight 课程,并且真的认为我知道该怎么做 - 但 Angular 不同意我的看法:-(

我的 Angular app/controller 在这里:

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

app.controller('MyCtrl', function ($scope, $http) {
    $scope.model = [];

    //Call to web API
    var Url = 'http://localhost:13811/api/v1/mydata';

    $http({
            method: 'GET',
            url: Url
    }).success(function (MyList) {
            $scope.model = MyList;
    }).error(function () {

    });
});

我(非常有限)JS/Angular 的理解是,这定义了一个 Angular 应用程序和一个控制器,如果我将这个控制器添加到我的 ASPX 页面上的 DOM 元素,控制器将被调用,将调用我的 WebAPI 服务(我确实看到这 发生),然后存储结果(一些数据对象的列表来自数据库)放入 $scope.model 变量。

所以我假设我可以将它集成到一个空白的 ASPX 中,如下所示:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DemoAngular.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">   
<head runat="server">
    <title>Angular Demo</title>
    <script src="Scripts/angular.min.js"></script>
    <script src="Scripts/app/plz-controller.js"></script>
</head>
<body  ng-app="MyApp">
    <form id="form1" runat="server">
    <div ng-controller="MyCtrl">
        <span>Angular says: {{1+2}} </span>

        <div class="list-group" data-ng-repeat="x in model">
            <div class="list-group-item">
                <span>{{x.Field1}}</span><br/>
                <span>{{x.Field2}}</span><br/>
            </div>     
        </div>    
    </div>
    </form>
</body>
</html>

我假设将 ng-app="MyApp" 指令添加到 <body> 标记会将 ASPX 页面 link 添加到 Angular 应用程序,并添加 ng-controller="MyCtrl" 然后 <div> 将实例化 Angular 控制器(从而进行 WebAPI 调用 - 它确实如此,我在 F12 开发人员工具中看到了)。

我还期望通过使用 data-ng-repeat="x in model" 指令,我将能够遍历从 WebAPI 调用返回的数据元素列表,并使用 {{....}} 语法,我是希望能够访问那些对象的各个字段并显示它们。

唉:我确实在我的页面顶部看到了 Angular says: 3,所以 Angular 似乎是 "there" 并且处于活动状态,而且我确实在 F12 开发人员中看到了 WebAPI 调用工具(并且我可以验证是否返回了预期数量的数据元素) - 但无论我尝试什么,我都找不到任何方法来实际 SHOW 从 WebAPI 检索到的数据在我的 ASPX 页面上......

有什么想法吗?我错过了什么?一定是一些非常愚蠢的东西 - 我敢肯定 - 但我只是不再只见树木不见森林了.......

启动调试器并在 $scope.model = MyList 行上放置一个断点。很可能你在这里得到了一个 http 响应对象,你需要将它更改为 $scope.model = MyList.data 之类的东西。检查调试器中的对象将明确告诉您是否属于这种情况。