繁体   English   中英

如何将包含另一个对象列表的对象列表传递给wcf

[英]how to pass list of objects that contains another list of object to wcf

我有一个类包含另一个类的对象列表。但是当我将对象列表发送给wcf方法时,它将变为null。 这是我的完整代码

这是我的课:-

public class BOTHCCharges_DETAILS
{
    public String THCTerm { get; set; }
    public String FromNumberOfContainer { get; set; }
    public String ToNumberOfContainer { get; set; }
    public String _20_GP { get; set; }
    public String _20_HC { get; set; }
    public String _40_GP { get; set; }
    public String _40_HC { get; set; }
    public String Size { get; set; }
    public String Weight { get; set; }
}

[DataContract]
[KnownType(typeof(List<BOTHCCharges_DETAILS>))]
public class List_BOTHCCharges_DETAILS
{
    [DataMember]
    public List<BOTHCCharges_DETAILS> THC_Details { get; set; }
}


//****    ICharges.cs 
 [OperationContract]
 [WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Wrapped, UriTemplate = "AddTHCCharges")]
 String AddTHCCharges(BOTHCCharges_Master OBJBOTHCCharges_Master, List<List_BOTHCCharges_DETAILS> List_BOTHCCharges_DETAILS);

//***    Charges.svc.cs
 public string AddTHCCharges(BOTHCCharges_Master OBJBOTHCCharges_Master, List<List_BOTHCCharges_DETAILS> List_BOTHCCharges_DETAILS)
    {
      //code goes here.
    }

这是我通过jquery ajax发送的json对象

  { "OBJBOTHCCharges_Master": { "OriginLocationList":"[{\\"CountryCode\\":\\"CHINA,\\",\\"LocationCode\\":\\"CNSHA,\\",\\"Currency\\":\\"AED,\\"}]", "DesinationLocationList":"[{\\"CountryCode\\":\\"SIN,\\",\\"LocationCode\\":\\"SGSIN,\\",\\"Currency\\":\\"AED,\\"}]", "CargoWeight":"20,","CargoType":"Consol,General,","Taxable":true,"TradeType":"E"}, "List_BOTHCCharges_DETAILS": [ ["THC_Details", { "THCTerm":"","FromNumberOfContainer":"","ToNumberOfContainer":"","_20_GP":"","_20_HC":"","_40_GP":"","_40_HC":"","Size":"20","Weight":"Consol" }, { "THCTerm":"","FromNumberOfContainer":"","ToNumberOfContainer":"","_20_GP":"","_20_HC":"","_40_GP":"","_40_HC":"","Size":"20","Weight":"Consol" } ], ["THC_Details", { "THCTerm":"","FromNumberOfContainer":"","ToNumberOfContainer":"","_20_GP":"","_20_HC":"","_40_GP":"","_40_HC":"","Size":"26","Weight":"Consol" } ] ] } 

jQuery调用

 var wcfServiceUrl = THC.urlAddTHCCharges; $.ajax({ cache: false, url: wcfServiceUrl, data: data, type: 'POST', contentType: 'application/json', dataType: 'json', beforeSend: function () { //fnBlockUI('operation in progress..', 'false', 'true', 'null', false); }, success: function (data) { if (data.AddTHCChargesResult == 'SUCCESS') { //$.showMessageBox({ content: "data has been saved successfully", title: 'My information' }); $.showMessageBox({ content: "Data has been saved successfully!", title: 'Save', OkButtonDoneFunction: function () { location.href = 'Index' }, type: 'question' }); } else { $.showMessageBox({ content: data.AddDetentionChargesResult, title: 'Error', type: 'stop' }); } }, error: function (error) { $.showMessageBox({ content: error.responseText, title: 'Stop', type: 'stop' }); }, complete: function () { //$.unblockUI(); } }); */ 

该类的另一个容器(类成员)的容器列表出来为空:- 单击以供您参考。 我需要序列化班级成员还是什么?我是wcf的新手。

您的JSON与您的课程不符。

这个

public class List_BOTHCCharges_DETAILS
{
    [DataMember]
    public List<BOTHCCharges_DETAILS> THC_Details { get; set; }
}

就是这个

{ "THC_Details": [ { "THCTerm":"", … }, … ] }

不是这个

{ [ "THC_Details", { "THCTerm":"", … } ], … }

如果JSON与类定义不匹配,则由于绑定程序无法反序列化有效负载,您将获得null

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM