5

と を使用Wcf ServiceJSます。

によってサービスに情報を送信しますAJAX

次のオブジェクトを受け入れるサービスに関数があります。

  [DataContract]
    public class Business
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Desc { get; set; }        
        [DataMember]
        public List<BusinessService> Services { get; set; }
    }

BusinessService.cs:

   [DataContract]
    public class BusinessService
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Desc { get; set; }
        [DataMember]
        public int LongTime { get; set; }
    }

JS 内のオブジェクトを解析JSONしてサービスに送信します。

wcf 関数に送信する json は次のとおりです。

"{"ManageBusiness":{"Name":"aaaaaa","Desc":"aaaaaaaaaaaa","Services":[{"Name":"aaaaaa","Desc":"aaaaaa","LongTime":30},{"Name":"aaaaaa1","Desc":"aaaaaa","LongTime":30}]}}"

リストを除いて、すべてが正常に機能しServicesます。

リストは null として wcf 関数に渡されます。

なぜこれが起こっているのかわかりません。助けていただければ幸いです。

4

4 に答える 4

4

List<T>JSON データから をインスタンス化することはできません。あなたができることは、置き換えることです:

[DataContract]
    public class Business
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Desc { get; set; }        
        [DataMember]
        public List<BusinessService> Services { get; set; }
    }

[DataContract]
    public class Business
    {
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Desc { get; set; }        
        [DataMember]
        public BusinessService[] Services { get; set; }
    }

つまりList<T>Array of T

于 2013-10-06T07:42:40.637 に答える
0

これを試して、

var data = "{"ManageBusiness":{"Name":"aaaaaa","Desc":"aaaaaaaaaaaa","Services":[{"Name":"aaaaaa","Desc":"aaaaaa","LongTime":30},{"Name":"aaaaaa1","Desc":"aaaaaa","LongTime":30}]}}";

以下を ajax 呼び出しに追加します

contentType: "application/json",
data: JSON.stringify({ business: data }),

データを受け取るための以下のコード

public ActionResult BusinessCall(Business business){}
于 2015-08-12T07:32:25.010 に答える