如何在 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>