如何使用 JSON 将对象 class 从 angular 2 直接映射到 Web api?
How to directly map an object class from angular 2 to to web api using JSON?
我在 angular 2 中创建了一个模型 class 来跟踪字段。同样的 class 也作为模型存在于我的 webapi 项目中。
export class People {
Name: string;
Phone: string;
Date: date;}
export class Address {
street: string,
zip: string,
}
在我的服务中,我将其发送到我的 webapi 控制器
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>();
}
modelPeople 和 modeAddress 不映射。如何让我的模型直接映射。
当 JObject 中有一串数据时,我得到的只是一堆空字段。
编辑:
我创建了一个容器 class 来保存 People 和 Address
的对象
public class Container
{
public People people {get; set;}
public Address addresss {get; set;}
}
然后我将对象传递给 Container,我的结果仍然是 null
public JArray GetPeopleData([FromBody]Container container)
{
var modelPeople = container.people;
var modelAddress = container.address;
}
两者的所有值为 null。
我不明白我觉得我很接近但缺少一些东西
你好它对我有用
//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();
}
);
}
我在 angular 2 中创建了一个模型 class 来跟踪字段。同样的 class 也作为模型存在于我的 webapi 项目中。
export class People {
Name: string;
Phone: string;
Date: date;}
export class Address {
street: string,
zip: string,
}
在我的服务中,我将其发送到我的 webapi 控制器
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>();
}
modelPeople 和 modeAddress 不映射。如何让我的模型直接映射。
当 JObject 中有一串数据时,我得到的只是一堆空字段。
编辑: 我创建了一个容器 class 来保存 People 和 Address
的对象public class Container
{
public People people {get; set;}
public Address addresss {get; set;}
}
然后我将对象传递给 Container,我的结果仍然是 null
public JArray GetPeopleData([FromBody]Container container)
{
var modelPeople = container.people;
var modelAddress = container.address;
}
两者的所有值为 null。
我不明白我觉得我很接近但缺少一些东西
你好它对我有用
//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();
}
);
}