如何在MVC视图中使用JSON数据.cshtml

iq0todco  于 2023-10-21  发布在  其他
关注(0)|答案(4)|浏览(204)

希望有人能帮我:我的挑战是,我有一个返回JSON的Web服务。
格式是

{"stations":[{"name":"aname","free":false},{"name":"anothername","free":true}]}

所以我有一个对象,它是一个数组,包含具有n属性的n对象。现在,对于stations对象数组中的每个对象,我想呈现属性,如

<p>stations[0].name</p>

我需要在mvc中使用它。所以我创建了一个模型

public station(){}
public string name {get; set;}
public boolean free {get; set;}

在我的contorller中,我使用了一个WebClient,现在我需要处理响应。我在想埃克塞特,但我不知道如何把这个观点?!
我的目标是了解我如何能做到这样的事情,

public Actionresult Stations(){
var stations = JObject.Load(reponse);
return View(Stations);
}

但是我不知道如何处理数组的每个对象,并在Stations.cshtml视图中使用for each或类似的方法来获取它们的值。
有什么想法吗?

332nm8kg

332nm8kg1#

有很多方法可以做到这一点,这就是我的方法。

型号

创建一个类,在这个类中,你的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; }
}
  • 车站.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);
}

查看

  • 车站.cshtml*
@model IEnumerable<station>

@foreach(var station in Model)
{
    <p>@station.name</p>
}
pw9qyyiw

pw9qyyiw2#

最简单的方法之一是像这样使用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中,

<p>@ViewBag.stations[0].name</p>
dy1byipe

dy1byipe3#

型号

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>
}
hsvhsicv

hsvhsicv4#

1.在控制器中将模型数据转换为Json格式

JsonResult result = new JsonResult();
result.Data = model;
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
return result;

1.在视图中获取TextBox中的JSON数据

$.ajax(
            {
                type: 'POST',
                url: "/Student/GetStudent",
                data: { ID: ID },               
                dataType: "json",
                success: function (result) {
                    $("#StudentName").val(result.StudentName);
                    $("#Gender").val(result.Gender);
                    $("#Email").val(result.Email);    
            }    
 })

相关问题