2015-02-10 63 views
0

這些是在函數中使用的數據協定。服務器未收到傳入的JSON對象內的列表

public class ResumeSkillsListDataContract : IResumeSkillsListDataContract 
{ 
    public IList<ISkillDataContract> KnownSkillsList { get; set; } 
    public IList<ISkillDataContract> BadSkillsList { get; set; } 
    public IList<ISkillDataContract> NewSkillsList { get; set; } 
    public Int32 PersonId { get; set; } 
} 

public class SkillDataContract : ISkillDataContract 
{ 
    public String Name { get; set; } 
    public Nullable<Int32> Id { get; set; } 
    public Nullable<Boolean> IsAssigned { get; set; } 
    public Nullable<Int32> SkillCategoryId { get; set; } 
    public Nullable<Int32> SkillCategoryMappingId { get; set; } 
} 

這是控制器中的功能。我期待三個填充列表和一個PersonId被傳入。但是,我只接收PersonId。在我的文章中,我看到了我期望在控制檯中看到的數據,但是在調試控制器時,項目 .List每次都是空的。

public IList<ISkillDataContract>  PostResumePersonSkills(ResumeSkillsListDataContract item) 
     { 
      var newList = item.KnownSkillsList; 
      var ignoreList = item.BadSkillsList; 
      var existingList = item.NewSkillsList; 
      var personId = item.PersonId; 


      return resumePersonSkillsBusinessLibrary.PostSkills(newList,  ignoreList, existingList, personId); 
     } 

以下是發送到服務器的快照。任何想法可能是錯的?謝謝。

$scope.doneWithSkills = function() { 
     var resumeCollection = { 
      KnownSkillsList: $scope.KnownSkillsList, BadSkillsList: $scope.IgnoredSkillsList, 
      NewSkillsList: $scope.SaveAsSkillsList, PersonId:$scope.ParsedPerson.Person.PersonId 

     }; 
     resumeParserService.PostResumeSkills(resumeCollection); 
    }; 

功能在resumeParserService

self.PostResumeSkills = function (skills) { 
    var url = 'ResumeSkill/PostResumePersonSkills'; 
    console.log(skills); 
    webApiService.Post(url, skills); 
}; 

樣品JSON傳遞。 {「KnownSkillsList」:[{「Name」:「C++」,「Id」:null,「IsAssigned」:null,「SkillCategoryId」:3,「SkillCategoryMappingId」:154},{「Name」:「 Unix的 「 」ID「:空, 」IsAssigned「:空, 」SkillCategoryId「:3, 」SkillCategoryMappingId「:219},{ 」名稱「:」 網絡」, 「ID」:空, 「IsAssigned」:空, 「SkillCategoryId」:3, 「SkillCategoryMappingId」:139},{ 「名稱」: 「ClearCase的」, 「ID」:空, 「IsAssigned」:空, 「SkillCategoryId」:3, 「SkillCategoryMappingId」:155},{「名稱「:」 UML」, 「標識」:NULL, 「IsAssigned」:NULL, 「SkillCategoryId」:3 「SkillCategoryMappingId」:218},{ 「名稱」: 「XML」, 「ID」:NULL, 「IsAssigned」:空, 「SkillCategoryId」:3, 「SkillCategoryMappingId」:239},{ 「名稱」: 「Java」 的, 「ID」:空, 「IsAssigned」:空, 「SkillCategoryId」:3, 「SkillCategoryMappingId」:173},{ 「Name」:「Python」,「Id」:null,「IsAssigned」:null,「SkillCategoryId」:3,「SkillCategoryMappingId」:199},{「Name」:「Visual Basic」,「Id」:null, IsAssigned 「:空,」 SkillCategoryId 「:3,」 SkillCategoryMappingId 「:223}],」 BadSkil lsList 「:[],」 NewSkillsList 「:[{」 名稱 「:」 算法」, 「標識」:NULL, 「IsAssigned」:NULL, 「SkillCategoryId」:3 「SkillCategoryMappingId」:空}], 「PERSONID」: 1203}

+0

你看的JSON通過線路的問題?這將是首先要檢查的 - 然後你可以看到它是客戶端問題還是服務器問題。 – 2015-02-10 07:19:51

+0

是的,我有。從我可以告訴它的乾淨。我會在我的文章中添加一個剪輯。 – Michael 2015-02-10 07:21:16

回答

0

我認爲這是由於您的列表ResumeSkillsListDataContract是接口列表引起的。問題在於,當JSON被反序列化時,反序列化器不知道要實例化的具體類型。

嘗試改變這個,看看它是否解決

public class ResumeSkillsListDataContract : IResumeSkillsListDataContract 
{ 
    public IList<SkillDataContract> KnownSkillsList { get; set; } 
    public IList<SkillDataContract> BadSkillsList { get; set; } 
    public IList<SkillDataContract> NewSkillsList { get; set; } 
    public Int32 PersonId { get; set; } 
}