从视图传递到控制器时,JSON post返回null

问题描述 投票:1回答:1

当vm.Name从视图传递到控制器时返回null,但是当我在视图中调用数据时,它显示正常。

$scope.afterSelectedIngredient = function (selected) {
            if (selected) {
                $scope.selectedIngredient = selected.originalObject;
                $scope.newIngs = [];
                var ing = {};
                ing.Name = $scope.selectedIngredient;
                $scope.newIngs.push(ing);
                console.log($scope.newIngs)
                $http({
                    method: 'POST',
                    url: '/Ingredients/createIngredient',
                    data: $scope.newIngs
                }).then(function (response) {
                    console.log("ingredient exist: "+response.data)
                }, function () { alert('Error'); });
            }
        }

成分控制器

[HttpPost]
    public ActionResult createIngredient(Ingredient vm)
    {
        Ingredient ingredient = new Ingredient();
        ingredient.Name = vm.Name;
        bool IngredientExists = db.Ingredients.Any(ing => ing.Name==vm.Name);
        if (IngredientExists)
        {
            return Json(IngredientExists);
        }
        else
        {
            db.Ingredients.Add(ingredient);
            db.SaveChanges();
        }
        return Json(IngredientExists);
    }

我尝试了以下但vm仍然返回null

  • 将“ActionResult”更改为“JsonResult”
  • 将“Ingredient”更改为“string []”
  • 在JSON.stringify()中包装数据
  • 我在Ingredient模型中删除了Name中的required

我也尝试了其他的东西,但最后它仍然返回null ...

arrays angularjs json http-post
1个回答
0
投票

我按照@Sajal的说法,删除了“$ scope.newIngs.push(ing);”然后将数据“$ scope.newIngs”更改为“ing”,现在它可以工作了!

$scope.afterSelectedIngredient = function (selected) {
            if (selected) {
                $scope.selectedIngredient = selected.originalObject;
                $scope.newIngs = [];
                var ing = {};
                ing.Name = $scope.selectedIngredient;
                console.log($scope.newIngs)
                $http({
                    method: 'POST',
                    url: '/Ingredients/createIngredient',
                    data: ing
                }).then(function (response) {
                    console.log("ingredient exist: "+response.data)
                }, function () { alert('Error'); });
            }
        }
© www.soinside.com 2019 - 2024. All rights reserved.