【问题标题】:Model from AngularJS to ASP.NET MVC5从 AngularJS 到 ASP.NET MVC5 的模型
【发布时间】: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;
                });
            }

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

(It's an image in dropbox)

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

谢谢!!

【问题讨论】:

  • 我也有同样的问题。你解决了问题?
  • 是的,尝试先从后端获取一个空模型,然后操作该模型,而不是创建一个新的 JS 变量。因此,从 HTTP Get 开始,操作模型,然后执行 HTTP Post。这对我有用..

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


【解决方案1】:

使用JSON.stringify序列化您的数据

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

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

【讨论】:

  • 感谢您的回答,但这并没有解决我在测试时的答案。我序列化了数据,它看起来不错,但它不会在 mij 控制器中正确填写。这是我现在的序列化字符串:“{“ID”:7,“ListPlayers”:[{“ID”:5,名称":"Player1"},{"ID":6,"Name":"Player2"},{"ID‌​":8,"Name":"Player3"}]}"。我只用我的 httpPost 作为数据发送这个 var,但它不起作用。有什么想法吗?
猜你喜欢
  • 2021-09-07
  • 2014-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多