2017-12-29 6 views
1

vm.Name은 뷰에서 컨트롤러로 전달 될 때 null을 반환하지만 뷰의 데이터를 호출하면 정상적으로 표시됩니다. IngredientsController뷰에서 컨트롤러로 전달할 때 null을 반환하는 JSON 게시물

[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); 
    } 

$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'); }); 
      } 
     } 

나는 다음하지만 VM이 여전히

  • 는 "성분을"변경 "ActionResult"을 "JsonResult"
  • 변경 null을 반환에 "문자열을 시도 [] "
  • Wrappi JSON.stringify의 데이터()
  • 내가 내가 다른 일을 시도했지만 결국 여전히 null를 돌려

성분 모델의 이름에서 필요한 제거를 ... 겨

+1

컨트롤러 메서드는 개체가 아닌 컬렉션을 필요로합니다. '$ scope.newIngs'가 아닌'$ http data'에'ing' 객체를 전달해야합니다. – Sajal

+0

그것은 일했다! 감사합니다 @ Sajal – klent

답변

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'); }); 
      } 
     } 
관련 문제