如何在 Blazor Server App 中从 Web API 调用迭代嵌套 classes/properties
How to iterate over nested classes/properties from Web API call in Blazor Server App
我目前正在学习 ASP.NET Core 和 C# 的基础知识,并且最近构建了一个 Blazor Server 应用程序作为原始天气仪表板。在我的网络浏览器中调用所需的天气网络 API 后,我通过 'paste JSON as classes' 功能将返回的原始数据复制并粘贴到我的应用程序中,然后编辑了我想要定位的 classes分成两个独立的模型如下:
public class WeatherForecastModel
{
public DayForecastModel[] daily { get; set; }
}
和
public class DayForecastModel
{
public int sunrise { get; set; }
public int sunset { get; set; }
public Temp temp { get; set; }
public Feels_Like feels_like { get; set; }
}
public class Temp
{
public float day { get; set; }
public float min { get; set; }
public float max { get; set; }
}
在我的剃刀页面中,我能够成功地迭代 DayForecastModel 中的属性并将它们显示在我的 table 中,执行以下操作:
<tbody>
@foreach (var w in forecast.daily)
{
<tr>
<th>@w.sunrise</th>
<th>@w.sunset</th>
</tr>
}
</tbody>
供参考,我的'forecast'变量在别处定义如下:
forecast = await client.GetFromJsonAsync<WeatherForecastModel>("https://api.openweathermap.org/data/2.5/onecall?lat=36.0999&lon=-80.2442&exclude={part}&appid={appid}&units=imperial");
我想不通的是如何访问 'Temp' class 中包含的属性,它本身包含在 DayForecastModel class 中,因此我可以显示内容像 'day'、'min' 和 'max'。
抱歉,如果这个问题太复杂了,我对这一切都很陌生。我非常乐意添加任何有助于澄清问题的额外代码。
这应该有效:
<tr>
<th>@w.sunrise</th>
<th>@w.sunset</th>
<td>@w.temp?.day</td>
</tr>
w.temp?.day
中的 ?
允许 temp == null
。如果是这种情况,您必须在其他地方修复它。
HTML 注意:<th>
用于 headers,您可能需要 <td>
。
我目前正在学习 ASP.NET Core 和 C# 的基础知识,并且最近构建了一个 Blazor Server 应用程序作为原始天气仪表板。在我的网络浏览器中调用所需的天气网络 API 后,我通过 'paste JSON as classes' 功能将返回的原始数据复制并粘贴到我的应用程序中,然后编辑了我想要定位的 classes分成两个独立的模型如下:
public class WeatherForecastModel
{
public DayForecastModel[] daily { get; set; }
}
和
public class DayForecastModel
{
public int sunrise { get; set; }
public int sunset { get; set; }
public Temp temp { get; set; }
public Feels_Like feels_like { get; set; }
}
public class Temp
{
public float day { get; set; }
public float min { get; set; }
public float max { get; set; }
}
在我的剃刀页面中,我能够成功地迭代 DayForecastModel 中的属性并将它们显示在我的 table 中,执行以下操作:
<tbody>
@foreach (var w in forecast.daily)
{
<tr>
<th>@w.sunrise</th>
<th>@w.sunset</th>
</tr>
}
</tbody>
供参考,我的'forecast'变量在别处定义如下:
forecast = await client.GetFromJsonAsync<WeatherForecastModel>("https://api.openweathermap.org/data/2.5/onecall?lat=36.0999&lon=-80.2442&exclude={part}&appid={appid}&units=imperial");
我想不通的是如何访问 'Temp' class 中包含的属性,它本身包含在 DayForecastModel class 中,因此我可以显示内容像 'day'、'min' 和 'max'。
抱歉,如果这个问题太复杂了,我对这一切都很陌生。我非常乐意添加任何有助于澄清问题的额外代码。
这应该有效:
<tr>
<th>@w.sunrise</th>
<th>@w.sunset</th>
<td>@w.temp?.day</td>
</tr>
w.temp?.day
中的 ?
允许 temp == null
。如果是这种情况,您必须在其他地方修复它。
HTML 注意:<th>
用于 headers,您可能需要 <td>
。