【问题标题】:How to directly map an object class from angular 2 to to web api using JSON?如何使用 JSON 将对象类从 angular 2 直接映射到 web api?
【发布时间】:2018-04-14 09:27:09
【问题描述】:

我有一个在 Angular 2 中创建的模型类来跟踪字段。这个类也作为模型存在于我的 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 中有一串数据时,我得到的只是一堆空字段。

编辑: 我创建了一个包含 People 和 Address 对象的容器类

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

然后我将对象传递给容器,我的结果仍然为空

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

    }

两者的所有值都为 null。

我不明白,我觉得我很接近但缺少一些东西

【问题讨论】:

  • 在 Web API 中,只接受它作为一个对象。换句话说,公开一个接受对象作为参数的 REST 端点。该对象将为您序列化/反序列化为 JSON,因此无需担心如何映射它等等。
  • 我很困惑。我的参数在公共 JArray GetPeopleData([FromBody]JObject 模型) 中应该是什么样子,我应该传递给它什么?
  • 是的,JArray 是问题所在。只需将普通的旧 C# 对象定义为参数即可。
  • 我更新了上面的代码,直接接受一个包含两个类的容器对象。所有的值仍然返回为 null

标签: c# json angular asp.net-web-api angular2-routing


【解决方案1】:

你好,它对我有用

//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();
                }
    );
}

【讨论】:

  • 我明白了。我是个白痴。我在人员和地址模型中的属性不公开。它总是简单的事情
猜你喜欢
  • 2016-11-07
  • 2013-06-16
  • 2017-12-24
  • 2022-01-05
  • 2018-02-23
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
相关资源
最近更新 更多