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

Posted

技术标签:

【中文标题】MVC4 - 在视图中显示 JSON 结果属性【英文标题】:MVC4 - Displaying JSON result properties in view 【发布时间】:2013-11-12 12:27:46 【问题描述】:

首先,我是 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; 
    


【问题讨论】:

将您的喜欢存储在您的操作(索引)中的ViewData["likes"] = likes; 中,并在您的索引视图中调用它以显示它。 @ViewData["likes"] likes。 Carles 解决方案也可以正常工作。 【参考方案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 语法。

【讨论】:

谢谢!在 Google 上真的找不到任何东西。【参考方案2】:

你不见了

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);
  

【讨论】:

感谢您的回复 codebarin,Carles 的回答对我有用。但是,您的回答是行业标准做法吗?我对 MVC 很陌生。我应该坚持什么是可行的,还是为项目设置更容易和未来的发展? 当您对某些技术不熟悉时,通常会坚持简单的方法,但我建议您快速学习并遵循不会破坏您的开发架构的标准。【参考方案3】:

我一直在寻找类似的解决方案,但发现它有点不同:

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

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

假设这是 controller 内的正常 action 继承自 Controller 类。

【讨论】:

以上是关于MVC4 - 在视图中显示 JSON 结果属性的主要内容,如果未能解决你的问题,请参考以下文章

在表格视图中显示带有 JSON 结果的数据 [关闭]

提交 MVC 后在同一视图中显示结果

如何在 Drupal 视图中显示 Web 服务 (SOAP) JSON 结果

如何在 MVC4 中获取返回的 JSON 数据?

MVC4如何在父视图单击提交时获取部分视图中的数据

如何在 Asp.net MVC4 中避免回发