我有一个问题代码。 像这样
查看
<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控制器代码。我还要添加ColorDB color = new ColorDB();
and color.Color = "testColor";
该值可以插入到db但ColorDB col
也为null。问题似乎是Mvc Controller无法接收ajax数据。
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 :(得分:0)
public string AddColor(ColorDB color)
您期待ColorDB对象。如果它代表您的DB
则表示错误。它无法绑定。检查参数类型。
更新:我认为问题是绑定。控制器无法将您的json绑定到ColourDB
对象。
您可以尝试:
添加您的ajax选项contentType: "application/json; charset=utf-8"
。也许dataType: "json"
还不够。如果它不起作用,请尝试使用angular.TOJSON(newColor)
而不是JSON.stringify(newColor)
。或者结合这两个。