簡體   English   中英

在將數據發送到View之前,附加到ASP.NET中MVC控制器中的Json對象

[英]Append to a Json object in MVC controller in ASP.NET before sending data to the View

我正在ASP.NET中構建MVC應用程序。 在我的索引控制器中,我正在調用一個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);

我做錯了什么,應該怎么解決?

如果您顯示了用來引發所述錯誤的代碼,那將是很好的。 但是我要假設您可能是在異步任務完成之前完成的。 只要您的模型中有可用字段

public class Credit
{
 public int amount { get; set; }
 public string state { get; set; }
 public string balance { get; set; }
}

那么您應該可以對其進行設置( 等到異步完成

task.Wait();
model.data.credit.state = "lowCredit";
return View(model);

嘗試在任務完成之前分配此值就像嘗試將值分配為null並會導致​​運行時異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM