【发布时间】:2014-10-27 15:03:56
【问题描述】:
我在从 Angular 发布到我的控制器时遇到了一些问题。如果我分别发布变量,一切都很好,但是当我将我的变量组合成一个响应我的视图模型的对象时,它只识别 ID 而不是我的 PlayerViewModel 的列表..
这是我的视图模型:
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;
});
}
这是我在控制器中的响应:
如您所见,我的 TeamViewModel 的 ID 是正确的,但 PlayerViewModel 的列表不会填写。有人知道我做错了什么吗?
谢谢!!
【问题讨论】:
-
我也有同样的问题。你解决了问题?
-
是的,尝试先从后端获取一个空模型,然后操作该模型,而不是创建一个新的 JS 变量。因此,从 HTTP Get 开始,操作模型,然后执行 HTTP Post。这对我有用..
标签: c# asp.net-mvc angularjs http-post model-binding