2017-11-01 3 views
0

フィールドを追跡するために、角度2で作成したモデルクラスIがあります。この同じクラスはwebapiプロジェクトのモデルとしても存在します。私のサービスでJSONを使用してオブジェクトクラスを角度2からWeb APIに直接マップする方法は?

export class People { 
    Name: string; 
    Phone: string; 
    Date: date;} 

export class Address { 
street: string, 
zip: string, 
} 

私は私のWEBAPIコントローラmodelPeopleとmodeAddressがマップされません

getPeopleData(peopleModel: People, addressmodel: Address) 
{ 
let headers = new headers(...) 
data = { 
    "p": peopleModel, 
    "a": addressModel 
} 
let body = JSON.stringify(data); 

return this.http.post(url, body, {headers: headers}) 
.map((response: Response)=> ... 
} 
私のコントローラでようやく

public JArray GetPeopleData([FromBody]JObject models) 
{ 
    var modelPeople = models["p"].ToObject<People>(); 
    var modelAddress = models["a"].ToObject<Address>(); 

} 

にこれを送ります。モデルを直接マップするにはどうすればよいですか。

JObjectにデータの文字列があると、私はヌルフィールドの束になります。

EDIT: 私は人々のオブジェクトを保持するコンテナクラスを作成し、私はその後、コンテナにオブジェクトに渡され、私の結果はまだ

public JArray GetPeopleData([FromBody]Container container) 
    { 
     var modelPeople = container.people; 
     var modelAddress = container.address; 

    } 

両方ともNULLです

public class Container 
{ 
    public People people {get; set;} 
    public Address addresss {get; set;} 
} 

アドレスすべての値がnullである

私はとても近くだが、何かが

+0

を働く感じるそれを得るいけません。別の言葉では、オブジェクトをパラメータとして受け入れるRESTエンドポイントを公開します。オブジェクトはあなたのためにJSONにシリアライズ/デシリアライズされるので、それをマップする方法などを心配する必要はありません – code4life

+0

私は混乱します。公式のJArray GetPeopleData([FromBody] JObjectモデル)で私のパルメータがどのように見えるのですか?それに私は何を渡すべきですか? – CodeMan03

+0

ええ、JArrayが問題です。単純な古いC#オブジェクトをパラメータとして定義するだけです。 – code4life

答えて

1

こんにちはが欠落しているように、それはただのオブジェクトとしてそれを受け入れ、私のためのWeb APIで

//This is a Gobal object 
result = { 
    modelPeople: '', 
    modelAddress: '' 
} 

constructor(private _http: Http) { 

} 
getJsonModel() { 
    promise = await this._http.get(URL).toPromise().then(
       res => { 
        this.result= res.json(); 
       } 
    ); 
} 
+0

私はそれを得ました、私はばかです。私の人と住所モデルの私の財産は公開されていませんでした。そのいつもの単純なもの – CodeMan03

関連する問題