2014-10-27 28 views
1

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

这里是我的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); 
    } 

这是我的角码:

$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是正确的,但PlayerViewModels的名单不会填写有没有人有一个想法是什么我。做错了吗?

谢谢!

+0

我也有同样的问题。你解决了这个问题? – 2016-11-12 07:43:29

+0

是的,首先尝试从后端获取一个空模型,然后操纵该模型,而不是创建一个新的JS变量。所以,从一个HTTP Get开始,操作这个模型,然后做一个HTTP Post。这对我工作.. – brammekuhh 2016-11-14 12:12:49

回答

0

JSON.stringify

var data = JSON.stringify({ 'ID': $scope.ID, 'ListPlayers': $scope.players, 'Team': $scope.team }); 

系列化你的数据在你的原代码,可以设置一个JS对象转换成要发送的数据。通过序列化,您可以将数据作为服务器可以读取的json发送。

+0

感谢您的答案,但这并没有解决我的答案,当测试。我序列化数据,它看起来不错,但它不会正确填写在mij控制器..这是我现在的序列化字符串:“{”ID“:7,”ListPlayers“:[{”ID“:5,”名称 “:” PLAYER1 “},{” ID “:6中,” 名称 “:” Player2 “},{” ID “:8中,” 名称 “:” Player3 “}]}”。我只发送这个var与我的httpPost作为数据,但它不会工作。任何想法? – brammekuhh 2014-10-27 15:26:56