Angular 2英雄チュートリアルを再プログラミングして、ASP.NET Webアプリケーション内でWeb APIで実行し、メモリ内Web APIではなくそのWeb APIと通信するようにしました。 すべてうまくいきます。 1つの質問のみが残ります:C#ASPNET WebApiオブジェクトのAngular 2へのマッピングプロパティ
ASP.NETのサービス環境とAngular環境では、私はオブジェクトHeroで作業します。 C#オブジェクトのプロパティの命名規則は、大文字でpropertynameを開始することです。 JSの命名規則は、小文字でpropertynameを開始することです。私はコーディングでこの規則に従うことを好む。 これを行うと、オブジェクトは受信側でもはや正しくデシリアライズされません。 これは通常どのように処理されますか?
GET ASP.NETコントローラ内(アレイ):
// GET api/heroes
public HttpResponseMessage Get()
{
String heros = JsonConvert.SerializeObject(GetHeroes().ToArray<Hero>());
return new HttpResponseMessage()
{
Content = new StringContent(heros, System.Text.Encoding.UTF8, "application/json")
};
}
GetHeroes()はヒーローのリストを返す:
public class Hero
{
public int id { get; set; }
public string name { get; set; }
}
hero.service.tsにおけるコード:
getHeroes(): Promise<Hero[]> {
return this.http.get(this.heroesUrl)
.toPromise()
.then(response => response.json() as Hero[])
.catch(this.handleError); }
とhero.tsで最終的英雄クラス:
export class Hero { id: number; name: string;}
WebサービスがGETのために提供することを生のコードは次のとおりです。
[{"id":0,"name":"Zero"},{"id":11,"name":"Mr. Nice"},{"id":12,"name":"Narco"},{"id":13,"name":"Bombasto"},{"id":14,"name":"Celeritas"},{"id":15,"name":"Magneta"}]
質問は、私はC#で使用し続けることができる方法である(これは今の問題を引き起こす)
public class Hero
{
public int Id { get; set; }
public string Name { get; set; }
}
私が行った場合私は何の誤りもありません。この
public class Hero
{
[JsonProperty(PropertyName = "id")]
public int Id { get; set; }
[JsonProperty(PropertyName = "name")]
public string Name { get; set; }
}
ドキュメントSerialization Attributes
私の経験上、c#からAngularへのプロパティマッピングでは大文字と小文字は区別されません。プロパティのスペルが正しい限り、問題は発生しません。何かエラーがありますか? –
大文字と小文字は区別されませんか?面白い。 あなたの質問に答えるには:私は何の誤りもありません。ブラウザーには6つのオブジェクトだけが返され、レコードの内容は表示されません。つまり、オブジェクトはデシリアライズされ、プロパティのみが一致しません。 –