0

サーバーからデータにアクセスするための Web Api コントローラーがあります。

public class ServicesController : ApiController
{
    [AcceptVerbs("POST")]
    public IList<TreeMenuItem> LoadMetadata()
    {
        List<TreeMenuItem> itemsMenu = new List<TreeMenuItem>();
        TreeMenuItem dataSource = new TreeMenuItem("1", "DataSources", null);
        itemsMenu.Add(dataSource);
        return itemsMenu;
    }
}

これは angularJS コントローラーによって呼び出されます。

angular.module('App').
controller('TreeMenuController', ["$scope", "$http", treeMenuController]);

function treeMenuController($scope, $http) {
var baseUrl = "api/Services/LoadMetadata";
$http.post(baseUrl)
    .then(function (result) {
        $scope.roleList = result.data;
    });

};

ブラウザネットワークには次のものがあります:

Request Method:POST
Status Code:200 OK
Request Headersview source
Accept:application/json, text/plain, */*
Accept-Encoding:gzip,deflate
Content-Length:2
Content-Type:application/json;charset=UTF-8

リクエスト ペイロード {}

応答ヘッダー:

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Content-Length: 4

[レスポンス] タブ: [{}]。

なにが問題ですか?

4

1 に答える 1

1

私はそれを機能させます:APIサービスにアクセスするためのアドレス(api/Services/LoadMetadata)をブラウザーに入力したときの応答メッセージが大きな助けでした:エラーの答えは、オブジェクトのシリアル化に問題があることがわかったxmlファイルにありましたTreeMenuItem。アドバイスは、WCF のように、クラスを DataContract で装飾し、クラス プロパティを DataMember で装飾することでした。私がそれをした後(プロジェクトで System.Runtime.Serialization への参照を追加する必要がありました)、すべてが完璧でした。

于 2014-10-21T06:01:49.320 に答える