我希望有人可以帮助我: 我的挑战是,我有一个返回json的Web服务。
格式为
{"stations":[{"name":"aname","free":false},{"name":"anothername","free":true}]}
所以我有一个对象,它是一个包含n
属性的n
个对象的数组....
现在对于该对象数组中的每个对象,我想呈现属性,如
<p>stations[0].name</p>
我需要在mvc中使用它。 所以我创建了一个模型
public station(){}
public string name {get; set;}
public boolean free {get; set;}
在我的控制器中我使用WebClient,现在我需要处理响应。 我在想IEnumerable,但我不知道怎么把它放在视图中?!
我的目标是了解我如何做像
这样的事情public Actionresult Stations(){
var stations = JObject.Load(reponse);
return View(Stations);
}
但我不知道如何处理数组的每个对象并在Stations.cshtml
视图中使用每个或类似的值获取它们的值....
有什么想法吗?
答案 0 :(得分:1)
有很多方法可以做到这一点,这是我的方式。
创建一个将JSON反序列化为的类:
public class RootJson
{
public IEnumerable<station> Stations { get; set; }
}
RootJson
类有一个属性,其中包含station
个实例(您的类)的列表:
public class station
{
public string name { get; set; }
public bool free { get; set; }
}
然后,使用以下命令反序列化您的JSON:
var deserialized = JsonConvert.DeserializeObject<RootJson>(json);
将电台传递到视图:
return View(deserialized.Stations);
在您的视图中,您必须指定传递的数据类型,在本例中为IEnumerable<station>
。因此,在Stations.cshtml
添加:
@model IEnumerable<station>
您可以使用foreach
来迭代模型:
@foreach(var station in Model)
{
<p>@station.name</p>
}
RootJson.cs
public class RootJson
{
public IEnumerable<station> Stations { get; set; }
}
station.cs
public class station
{
public string name { get; set; }
public bool free { get; set; }
}
内部 YourController.cs
public ActionResult Stations() {
string json = YourMethodToGetJsonAsString();
var deserialized = JsonConvert.DeserializeObject<RootJson>(json);
return View(deserialized.Stations);
}
Stations.cshtml
@model IEnumerable<station>
@foreach(var station in Model)
{
<p>@station.name</p>
}
答案 1 :(得分:0)
最简单的方法之一是使用ViewBag:
public ActionResult Stations()
{
string jsonString = "{ \"stations\":[{\"name\":\"aname\",\"free\":false},{\"name\":\"anothername\",\"free\":true}]}";
ViewBag.stations = ((dynamic)Newtonsoft.Json.JsonConvert.DeserializeObject(jsonString)).stations;
return View();
}
并在cshtml中为ex。
<p>@ViewBag.stations[0].name</p>
答案 2 :(得分:0)
<强>模型强>
public class Stations
{
public List<Station> Station { get; set; }
}
public class Station
{
public string Name { get; set; }
public bool Free { get; set; }
}
<强>控制器强>
// Deserialising JSON
var station = JsonConvert.DeserializeObject<Stations>(response);
// Pass result to view
return View(station.Station);
查看
在Stations.cshtml
添加:
@model IEnumerable<Station>
您可以使用foreach
来迭代模型:
@foreach(var station in Model)
{
<p>@station.Name</p>
}