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

我做了這仍然是同樣的問題。我沿着同一條線進一步查看。現在做了一些改變,我得到的記錄,但只是空的列表。我認爲真正的問題在於實體,爲此開始一個新的問題。謝謝 –

相關問題