【问题标题】:ASP.NET Webforms and AngularJSASP.NET 网络表单和 AngularJS
【发布时间】:2016-04-27 19:15:44
【问题描述】:

我仍在努力让我的第一个 ASP.NET WebApi / AngularJS 应用程序启动并运行...

我正在尝试从 Angular 查询 WebAPI 服务(我已经使用 Fiddler 编写并验证了它可以正常工作),并且我正在尝试显示在我的 ASP.NET Webforms 页面上返回的数据。我学习了很多教程和 Pluralsight 课程,并且真的认为我知道该怎么做——但是 Angular 不同意我的观点:-(

我有我的 Angular 应用程序/控制器:

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" 指令添加到 &lt;body&gt; 标记会将 ASPX 页面链接到 Angular 应用程序,然后将 ng-controller="MyCtrl" 添加到 &lt;div&gt; 将实例化 Angular 控制器(从而使WebAPI 调用 - 确实如此,我在 F12 开发人员工具中看到了)。

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

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

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

【问题讨论】:

  • 你的成功函数是否被调用过?如果你退出MyList,你会得到什么?
  • 只尝试 ng-repeat 作为
  • @rob: 是的,实际上调用了“成功”函数——检查MyList 显示我的错误——这不是一个平面数据列表,而是一个结构——它包含一些字段和Items 集合。当我使用MyList.Items 时,我得到了要显示的数据行列表 - 谢谢!

标签: angularjs asp.net-web-api webforms asp.net-4.5


【解决方案1】:

启动调试器并在 $scope.model = MyList 行上放置一个断点。很有可能您在此处获得了一个 http 响应对象,您需要将其更改为类似 $scope.model = MyList.data 的内容。检查调试器中的对象将确定是否是这种情况。

【讨论】:

    猜你喜欢
    相关资源
    最近更新 更多
    热门标签