ASP.NET で MVC アプリケーションを構築しています。私の Index Controller では、API を呼び出し、データを取得してビューに渡します。これはうまく機能し、ビューにデータを戻すのに問題はありません。
public ActionResult Index()
{
Base model = null;
var client = new HttpClient();
var task =
client.GetAsync(
"http://example.api.com/users/john/profile")
.ContinueWith((taskwithresponse) =>
{
var response = taskwithresponse.Result;
var readtask = response.Content.ReadAsAsync<Base>();
readtask.Wait();
model = readtask.Result;
});
task.Wait();
return View(model);
}
私のモデルは次のとおりです。
public class Base
{
public Data data { get; set; }
}
public class Data
{
public Profile profile { get; set; }
public Credit credit { get; set; }
}
public class Profile
{
public String firstname { get; set; }
public String lastname { get; set; }
}
public class Credit
{
public int amount { get; set; }
public string balance { get; set; }
}
API は次の形式でデータを返します。
{
"data": {
"profile": {
"firstname": "John,
"lastname": "Newman",
},
"credit": {
"amount": 30,
"neverbought" : false
}
}
}
私が今達成したいことは、返されたデータにいくつかのプロパティを追加することです。たとえば、州の財産を信用に追加したいとします。これは、金額と未購入の財産に基づいて計算されます。しかし、今のところ、credit.state は常に「lowCredit」であるとしましょう。
だから私がしたことは、Credit.state = "neverBought"; を追加することでした。ビューにデータを送信する前にコントローラーに。次に、Credit クラスに状態の定義が含まれていないというエラーが発生しました。クレジット モデルに状態プロパティを追加しましたが、「非静的フィールド、メソッド、またはプロパティにはオブジェクト参照が必要です。
使用したコードは次のとおりです。
task.Wait();
model.credit.state = "lowCredit";
return View(model);
私は何を間違っていますか? 問題を解決するにはどうすればよいですか?