1

このようなオブジェクトを投稿するとします

{"Dto" : {
            "DtoId" : 1, 
            "DtoThing" : "Some value", 
            "DtoChildStuff" : [{"CsId" : 1, "ChildProperty" : "SomeThing"}]
           }}

このような WebApi アクションに

[HttpPost]
public Response<MyDto> Post(DtoWrapper<MyDto> input)...

ここで、パラメーターは MyDto 型のプロパティ MyDto を持つオブジェクトであり、MyDto は次のようになります

[DataContract]
public class MyDto
{
    [DataMember]
    public int DtoId {get;set;}
    [DataMember]
    public string DtoThing {get;set;}
    [DataMember]
    public List<ChildStuffDto> DtoChildStuff {get;set;}
}

[DataContract]
public class ChildStuffDto
{   
    [DataMember]
    public int CsId {get;set;}
    [DataMember]
    public string ChildProperty {get;set;}
}

そして(ちなみに)DtoWrapperはただ

public class DtoWrapper<T>
{
   public T Dto {get;set;}
   // So that I can add some other info that I need //
}

アクションが子オブジェクトを表示できないのはなぜですか。パラメータの型をオブジェクトに変更すると、子オブジェクトがポストされていることがわかりますが、逆シリアル化されません。何か案は?

4

1 に答える 1

0

これが私の答えですが、このコード行をアクションに追加せずにそれを実現する方法があるかどうか知りたいです。

    public Response<MyDto> Post(object input)
    {

        dynamic myWrapperObj = JsonConvert.DeserializeObject<SomeWrapperForMyDto>
                             (input.ToString());
        ...

そうでなければならないのであればフェアプレイですが、それは残念です。投稿ありがとうございます:)

于 2013-02-15T11:31:41.577 に答える