从AngularJS到ASP.NET MVC5的模型

时间:2014-10-27 15:03:56

标签: c# asp.net-mvc angularjs http-post model-binding

我从Angular发布到我的控制器时遇到了一些问题。如果我单独发布变量,一切都很好,但是当我将我的变量合并到一个响应我的视图模型的对象时,它只识别ID但不识别我的PlayerViewModel的列表..

以下是我的viewModels:

public class PlayerViewModel
{
    public int ID { get; set; }
    public string Name { get; set; }
}

public class TeamViewModel
{
    public int ID { get; set; }
    public List<PlayerViewModel> Players;
}

这是我的MVC控制器:

[HttpPost]
    public JsonResult IndexPost(int ID, List<PlayerViewModel> ListPlayers, TeamViewModel Team)
    {
        return Json(true, JsonRequestBehavior.AllowGet);
    }

这是我的Angular代码:

$scope.players = [];
            $scope.playerA = { ID: 5, Name: "Player1" };
            $scope.playerB = { ID: 6, Name: "Player2" };
            $scope.playerC = { ID: 8, Name: "Player3" };
            $scope.players.push($scope.playerA);
            $scope.players.push($scope.playerB);
            $scope.players.push($scope.playerC);

            $scope.ID = 7;

            $scope.team = { ID: $scope.ID, Players: $scope.players };

            $scope.btnClick = function () {
                $http({
                    traditional: true,
                    url: "IndexPost",
                    method: "POST",
                    data: { 'ID': $scope.ID, 'ListPlayers': $scope.players, 'Team': $scope.team },
                    dataType: FormData
                }).success(function (data) {
                    $scope.finish = data;
                }).error(function (data) {
                    $scope.status = status;
                });
            }

这是我在控制器中的回应:

(It's an image in dropbox)

正如您所看到的,我的TeamViewModel的ID是正确的,但是PlayerViewModel的列表不会填写。有没有人知道我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用JSON.stringify

序列化您的数据
var data = JSON.stringify({ 'ID': $scope.ID, 'ListPlayers': $scope.players, 'Team': $scope.team });

在原始代码中,将js对象设置为要发送的数据。通过序列化,您可以将数据作为服务器可以读取的json发送。