MVC4 - 在视图中显示JSON结果属性

时间:2013-11-12 12:27:47

标签: asp.net-mvc json asp.net-mvc-4 view

首先,我是MVC的新手。

我想在html视图中显示JSON响应的属性。

例如,我想从JSON响应中获取页面喜欢的数量,并在页面上显示喜欢的数量。

非常感谢任何帮助:)

    //
    // GET: /Facebook/

    public ActionResult Index()
    {
        var json = new WebClient().DownloadString("https://graph.facebook.com/google");
        JsonConvert.DeserializeObject<RootObject>(json);

        return view();
    }

    public class CategoryList
    {
        public string id { get; set; }
        public string name { get; set; }
    }

    public class Location
    {
        public string street { get; set; }
        public string city { get; set; }
        public string state { get; set; }
        public string country { get; set; }
        public string zip { get; set; }
        public double latitude { get; set; }
        public double longitude { get; set; }
    }

    public class Cover
    {
        public string cover_id { get; set; }
        public string source { get; set; }
        public int offset_y { get; set; }
        public int offset_x { get; set; }
    }

    public class RootObject
    {
        public string about { get; set; }
        public string awards { get; set; }
        public string category { get; set; }
        public List<CategoryList> category_list { get; set; }
        public int checkins { get; set; }
        public string company_overview { get; set; }
        public string description { get; set; }
        public string founded { get; set; }
        public bool is_published { get; set; }
        public Location location { get; set; }
        public string mission { get; set; }
        public string phone { get; set; }
        public string products { get; set; }
        public int talking_about_count { get; set; }
        public string username { get; set; }
        public string website { get; set; }
        public int were_here_count { get; set; }
        public string id { get; set; }
        public string name { get; set; }
        public string link { get; set; }
        public int likes { get; set; }
        public Cover cover { get; set; }
    }
}
}

3 个答案:

答案 0 :(得分:1)

您的操作应将对象传递给视图:

public ActionResult Index()
{
    var json = new WebClient().DownloadString("https://graph.facebook.com/google");
    var root=JsonConvert.DeserializeObject<RootObject>(json);

    return view(root);
}

然后在您的视图中,您可以显示您想要的任何属性:

@Model RootObject
<html>
    <head>
        <title>Showing properties</title>
    </head>
    <body>
        @Model.likes likes.
    </body>
</html>

如果你使用Razor语法,那就是这样。

答案 1 :(得分:0)

你错过了

return view(root);

您应该将对象传回视图以使用它。

你可以在mvc 4中使用JsonResult,

  public JsonResult ReturnSomeJson()
  {
   JsonResult result = new JsonResult();
   //Assign some json value to result.
   //Allow get is used to get the value in view.
   return view(result,AllowGet.True);
  }

答案 2 :(得分:0)

我正在寻找类似的解决方案,但发现它与众不同:

[HttpGet]
public JsonResult Index() {
    // your code
    return Json("some result string or value", JsonRequestBehavior.AllowGet);
}

当您直接调用此操作时,这会在浏览器中输出"some result string or value"

  

假设这是控制器中的正常动作,   继承自Controller类。