我重新編程了Angular 2英雄教程,以便在具有Web API的ASP.NET Web應用程序中運行,並與該Web API(而不是內存Web API)通信。 一切正常。只有一個問題仍然存在:將C#ASPNET WebApi對象的屬性映射到Angular 2,
在ASP.NET的服務環境和Angular環境中,我使用對象Hero。 C#對象中屬性的命名約定是用大寫字母開始一個屬性名稱。 JS中的命名約定是以小寫字母開頭的屬性名稱。我更願意在我的編碼中遵循這個約定。 如果我這樣做,當然對象在接收站點不再適當的反序列化。 通常如何處理這個?
的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服務提供了獲取原始代碼是:
[{"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; }
}
如果我這樣做這我沒有得到任何錯誤。它只是返回在瀏覽器中的6個對象,只將記錄內容不displayed.Like這樣的:
正如我的經驗,從c#到Angular的屬性映射不區分大小寫。只要拼寫對屬性正確,它不應該導致任何問題。你有什麼錯誤嗎? –
不區分大小寫?有趣。 要回答你的問題:我沒有得到任何錯誤。它只是返回瀏覽器中的6個對象,只顯示記錄的內容。這意味着對象被反序列化,只有屬性不匹配。 –