0

您好我有agularjs资源下面,工作正常。Angularjs资源将空对象发送到api控制器

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 } 
     ); 
是recieving是

MVC阿比

// 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

在浏览器工具中,我看到,POST http:// localhost:60482/api/projDis发布的数据是{“pro_id”:“221”,“message”:“sdsfsd”pDis_id:“”}数据正在提交控制器到它的时间它是只是空的 –

回答

0

基于您的评论:

我可以看到正确的数据是{ “pro_id”: “221”, “消息”: “sdsfsd” pDis_id: “”}

我最好的猜测是模型联编程序无法转换为pDis类型。

我注意到的一件事是您的财产pDis_id是一个int(不可为空),并且您通过它pDis_id:""。我认为模型联编程序在这种情况下不知道该怎么做。

尝试为pDis_id提供一个整数值,或根本不提供它。

+0

我做了这仍然是同样的问题。我沿着同一条线进一步查看。现在做了一些改变,我得到的记录,但只是空的列表。我认为真正的问题在于实体,为此开始一个新的问题。谢谢 –

相关问题