[英]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.