У меня есть код проблемы. как это
Посмотреть
<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";
}
}
В результате всегда появляется сообщение show alert add fail. Кажется, что json не может отправлять сообщения в контроллер MVC. Пожалуйста, помогите поблагодарить вас.
ColorDB
public partial class ColorDB
{
public int Id { get; set; }
public string Color { get; set; }
}
update: Я изменил код контроллера AddColor. Я также tyr, чтобы добавить ColorDB color = new ColorDB(); and color.Color = "testColor";
ColorDB color = new ColorDB(); and color.Color = "testColor";
Значение может вставляться в db, но ColorDB col
также равно null. Проблема в том, что контроллер Mvc не может получать данные 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";
}
}
public string AddColor(ColorDB color)
вы ожидаете объект ColorDB. Если он представляет вашу DB
то это неправильно. Он не мог связываться. Проверьте тип параметров.
UPDATE: Я думаю, проблема связана. Контроллер не может привязать ваш json к объекту ColourDB
.
Можешь попробовать:
Добавьте этот параметр ajax contentType: "application/json; charset=utf-8"
. Может быть, dataType: "json"
недостаточно. И если это не работает, попробуйте использовать angular.TOJSON(newColor)
вместо использования JSON.stringify(newColor)
. Или объедините эти два.