2016-07-22 63 views
0

我有一個問題代碼。 這樣asp.net mvc使用angularjs發佈json類型到控制器插入數據庫

查看

<div ng-app="MyPct4" ng-controller="ajaxCtrl"> 
    <div> 
     <table> 
      <tr> 
       <td><b>pls input Color</b></td> 
       <td><input type="text" ng-model="InputColor" /></td> 
      </tr> 
     </table> 
     <input type="button" value="save" ng-click="AddUpdateColor()" /> 
    </div> 
</div> 

Angularjs控制器

var ptc4 = angular.module("MyPct4", []); 
ptc4.controller('ajaxCtrl', function ($scope, myService) { 
    $scope.AddUpdateColor = function() { 
       var newColor = { Color: $scope.InputColor }; 
       var getData = myService.AddColor(newColor); 
       getData.then(function (msg) { 
        alert(msg.data); 
       }, function() { 
        alert("error") 
       }); 
      } 
} 

Angularjs服務

ptc4.service("myService", function ($http) { 
this.AddColor = function (newColor) { 
       var response = $http({ 
        method: "post", 
        url: "/Practice/AddColor", 
        data: JSON.stringify(newColor), 
        dataType: "json" 
       }); 
       return response; 
      } 
} 

MVC控制器

private TestDBEntities2 db = new TestDBEntities2(); 
    public string AddColor(ColorDB color) 
     { 
      if (color != null) 
      { 
        db.ColorDB.Add(color); 
        db.SaveChanges(); 
        return "add success"; 
      } 
      else 
      { 
       return "add fail"; 
      } 
     } 

結果總是顯示警告加載失敗。 似乎是json無法發佈到MVC控制器。 請幫助非常感謝。

ColorDB

public partial class ColorDB 
{ 
    public int Id { get; set; } 
    public string Color { get; set; } 
} 

更新: 我改變AddColor控制器code.I也TYR添加ColorDB color = new ColorDB(); and color.Color = "testColor";值可以插入到數據庫,但ColorDB col也null.The問題似乎MVC的控制器不能接收數據阿賈克斯。

public string AddColor(ColorDB col) 
     { 
      ColorDB color = new ColorDB(); 
      color.Color = "testColor"; 
      if (color != null) 
       { 
        db.ColorDB.Add(color); 
        db.SaveChanges(); 
        return "add success"; 
       } 
       else 
       { 
        return "add fail"; 
       } 
      } 
+0

你有甚至嘗試調試代碼?你的顏色參數可能是空的,因爲你要發送一個字符串,並期待一個複雜的對象。 – jpgrassi

回答

0

public string AddColor(ColorDB color)您期待着ColorDB對象。如果它代表你的DB那就錯了。它無法綁定。檢查參數類型。

更新:我認爲這個問題是binding.The控制器的JSON不能綁定到ColourDB對象。

你可以試試:

添加這個你的Ajax選項contentType: "application/json; charset=utf-8"。也許dataType: "json"是不夠的。如果它不會工作嘗試使用angular.TOJSON(newColor)而不是使用JSON.stringify(newColor)。或者結合這兩個。

+0

喜kyur 我ColorDB像that.As在前面 – zhan

+0

我試過,但我不能 謝謝你的建議 – zhan

相關問題