c# - 如何向前端显示数据?
问题描述
我是学习如何实现开放天气 API 的新手。我不完全知道如何将数据显示到剃刀视图。所以如果我想展示 temp 我会怎么做。我不想使用 viewbag 来显示数据。
我在剃刀视图中使用元组来实现 2 个模型。以邮政编码作为输入的 openweatherModel。另一个是 RootObject,它是 Json.cs 中的一个类,它包含 json 信息,如 temp、coord、description 等。
api
public class ApiController
{
public async Task<Json.RootObject> GetResult(int zipCode)
{
const string apiKey = "";
var client = new HttpClient();
var response = await client.GetAsync("http://api.openweathermap.org/data/2.5/weather?zip=" +
zipCode + ",us&APPID=" + apiKey);
response.EnsureSuccessStatusCode();
var responseBody = await response.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<Json.RootObject>(responseBody);
}
家
[HttpGet]
public ActionResult Main()
{
return View();
}
[HttpPost]
public async Task<ActionResult> Main(int zipCode)
{
var controller = new ApiController();
var rootObject = await controller.GetResult(zipCode);
var tuple = new Tuple<OpenWeatherMap, RootObject>(new OpenWeatherMap(), new RootObject());
return View(tuple);
}
剃刀
@model Tuple<Weather.Models.OpenWeatherMap, Weather.HelperClasses.Json.RootObject>
<div>
@using (Html.BeginForm("Main", "Home", FormMethod.Post, new { @class = "container" }))
{
@Html.TextBoxFor(tuple =>tuple.Item1.zipCode, new {@Name = "zipCode", @class = "inputs", required = "Required", placeholder = "Enter ZipCode" })
<input id="submit" type="submit" value="Search" />
foreach (var items in Model.Item2.weather)
{
<h1>@items.description</h1>
}
}
</div>
根对象
public class RootObject
{
public Coord coord { get; set; }
public List<Weather> weather { get; set; }
public string @base { get; set; }
public Main main { get; set; }
public int visibility { get; set; }
public Wind wind { get; set; }
public Clouds clouds { get; set; }
public int dt { get; set; }
public Sys sys { get; set; }
public int timezone { get; set; }
public int id { get; set; }
public string name { get; set; }
public int cod { get; set; }
}
解决方案
推荐阅读
- php - 如何将日期从 2021 年 11 月 22 日转换为 2021 年 11 月 22 日
- html - 迁移到新的 Web 服务器后 WordPress 可视化作曲家错误
- android - 如何在 onCreate() 之外使用 ViewModel?
- android - OpenGL ES中的纹理采样精度问题
- python - 如何将数据存储备份转换为 JSON,包括地图和数组?
- libarchive - C++ 使用 libarchive 和 archive_write_open_memory ...如何清除缓冲区?
- sql - 我正在尝试使用“;”删除电子邮件 来自具有多封电子邮件的列的值
- dart - Dart 1 书籍是否仍然与学习 Dart 2 相关
- azure - Azure Function 3.0 Service Bus 触发有时会引发 Microsoft.Azure.ServiceBus.MessageLockLostException
- c++ - 用于可视化无向图的 C++/Cli 库?