这些是函数中使用的数据协定。
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。在我的帖子中,我看到了我希望在控制台中看到的数据,但在调试控制器时, item .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”:[{ “名称”: “C ++”, “ID”:NULL, “IsAssigned”:NULL, “SkillCategoryId”:3 “SkillCategoryMappingId”:154},{ “名称”:“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},{”名称“:”Python“,”Id“:null,”IsAssigned“:null,”SkillCategoryId“:3,”SkillCategoryMappingId“:199},{”Name“:”Visual Basic“,”Id“:null,”IsAssigned “:NULL,” SkillCategoryId “:3”,SkillCategoryMappingId “:223}],” BadSkillsList “:[],” NewSkillsList “:[{” 名称 “:” 算法”, “标识”:NULL, “IsAssigned”:空“SkillCategoryId”:3,“SkillCategoryMappingI d “:空}],” PERSONID“:1203}
答案 0 :(得分: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; }
}