您好我在下面的agularjs资源工作正常。
return {
formDis: $resource('/api/pDisc/:id', { id: '@id' }, { update: { method: 'POST' } })
};
使用资源的angularjs cotroller是
$scope.submit = function (form) {
console.log(form.dis.length);
console.log(form.dis);
for (var i = 0; i < form.dis.length; i++) {
pRepository.formDis.update(form.dis[i], function () {
{
alert("Saved");
}
});
};
};
WebConfig
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
接收它的MVC Api是
// POST api/projDisc
public HttpResponseMessage Postproject_discussion(pDis pDis)
{
db.project_discussion.Add(pDis);
db.SaveChanges();
}
班级是
[DataContract(IsReference = false)]
[Serializable]
public partial class pDis
{
public int pDis_id { get; set; }
public int pro_id { get; set; }
public string message {get; set;}
public virtual pro pro { get; set; }
public virtual people people { get; set; }
}
}
当我运行它时,我的api中出现错误
db.project_discussion.Add(pDis);
错误是
An exception of type 'System.Data.Entity.Validation.DbEntityValidationException' occurred in EntityFramework.dll but was not handled in user code
我收到此错误,因为api正在接收空对象。 在角度控制器中,我可以看到控制台中的对象从表单中正确传递。 一旦将对象提交给资源并从该对象提交到api,就会出现错误,最终会将其作为空对象。请让我知道如何解决它。
答案 0 :(得分:0)
根据您的评论:
我可以看到正确的数据是{“pro_id”:“221”,“message”:“sdsfsd” pDis_id: “”}
我最好的猜测是模型绑定器无法转换为pDis类型。
我注意到的一件事是你的属性pDis_id是一个int(不可为空),你传递它pDis_id:""
。我认为模型绑定器在这种情况下不知道该怎么做。
尝试为pDis_id提供一个整数值,或者根本不提供它。