【问题标题】:beginner: Json Result serialization in a asp.net mvc page without jquery/javascript/ajax初学者:没有 jquery/javascript/ajax 的 asp.net mvc 页面中的 Json 结果序列化
【发布时间】:2017-04-22 22:59:51
【问题描述】:

我是一名编程学生,使用 asp.net mvc 4 网络应用程序,我正在测试一个使用 http://openweathermap.org/api 的简单网络应用程序,所以当我单击链接时,它会在家庭控制器上执行操作结果,从 api 获取数据的代码在此操作结果中,它获取 api json 数据并将其存储在 viewbag.message 中,然后将其传递回视图。就我可以获得 json 结果并在视图中看到它而言,我已经做了很多工作。我不知道如何继续 & 我查找的页面似乎以 ajax jquery 为中心

我的问题是关于在不添加任何插件或任何东西的情况下序列化/显示 json 结果,我想对其进行格式化/序列化,以便它看起来更好,也许可以将其放入表格或其他东西中,但无需进入 ajax & jquery,因为我还没有学过那部分。

我已从代码中删除了 api 密钥。

public ActionResult getWeather()
{
    var uri = "http://api.openweathermap.org/data/2.5/forecast?id=7778677&APPID=123456789";

    WebClient client = new WebClient();

    client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)");

    var resultContent = client.DownloadString(uri);

    ViewBag.Message = resultContent;

    return View();

}

这是结果视图:

显示来自 api 的 json 数据的结果视图的屏幕截图

我希望我能正确地解释自己, 谢谢。 M.

【问题讨论】:

    标签: json asp.net-mvc-4


    【解决方案1】:

    .NET 4 有一个内置的 JSON 序列化器/反序列化器,但如果可以,请使用 NuGet 获取NewtonSofts JSON Framework,因为它更加灵活和强大。

    有了它,你可以在你的视图的支持代码中做一些类似的事情,甚至可以在你的视图模板中使用 Razor:

    WeatherDataModel[] myWeatherData = JsonConvert.DeserializeObject<WeatherDataModel>(ViewBag.Message);
    

    (假设您有一个与您从 openweathermap api 获得的数据相匹配的天气数据模型。)

    然后,您应该能够使用循环将 WeatherDataModel 数组中的数据放入表中。

    另一个选项,如果您愿意在 jquery 中小步前进,可以在这个问题的答案中找到: How to load JSON data into Bootstrap table?

    它使用了一个非常简单的 javascript/jquery 和 bootstrap 的 sn-p。

    在您的情况下,您可以将数据设置为使用存储在 ViewBag.Message 中的 JSON:

    $(function () {
        $('#table').bootstrapTable({
            data: ViewBag.Message
        });
    });
    

    如果您在 VS 2015 中构建应用并使用 MVC 4 模板,那么您很可能已经在项目中内置了引导程序。如果没有,您可以使用 NuGet 轻松导入它。

    我已经有一段时间没有在 MVC 4 中做太多事情了,所以我将向您指出这个问题的答案,即最好的放置脚本的位置:Proper place to load jQuery in MVC Layout view

    祝你好运!

    【讨论】:

    • 谢谢你,Scot,帮了大忙 :)
    • 阿曼达,很高兴能帮上忙。您愿意将此标记为答案并投票吗?这将有助于提高我的 StackOverflow 声誉点数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多