当我 运行 一个 Blazor 应用程序时收到一个模糊的错误
Receiving a vague error when I run a Blazor app
我正在尝试在 Blazor 中创建一个简单的 Web 应用程序,它使用 HTML table.
显示游戏列表
我写了一些代码,但是当我尝试 运行 它时,我得到了这个错误:
An unhandled error has occurred
我正在使用 API returns JSON 格式的游戏列表。我知道 API 没问题,因为当我使用 Postman 测试它时它工作正常。
这是我的代码:
var gamesList= await Http.GetFromJsonAsync<GameData[]>("http://1.1.1.1/api/gamedata");
<table>
<th>Games</th>
@foreach (var game in gamesList)
{
<tr>
<td>@game.Title</td>
<td>@game.Genre</td>
<td>@game.Price</td>
</tr>
}
</table>
我有什么地方做错了吗?
谢谢!
您的代码应如下所示:
@inject HttpClient Http
@if (gamesList == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Title</th>
<th>Genre</th>
<th>Price</th>
</tr>
</thead>
<tbody>
@foreach (var game in gamesList)
{
<tr>
<td>@game.Title</td>
<td>@game.Genre</td>
<td>@game.Price</td>
</tr>
}
</tbody>
</table>
}
@code {
private GameData[] gamesList;
protected override async Task OnInitializedAsync()
{
gamesList = await Http.GetFromJsonAsync<GameData[]>
("gamedata");
}
}
还要确保您的 Program.Main 方法中包含此代码:
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddTransient(sp => new HttpClient { BaseAddress =
new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
注意:此错误可能有多种原因。我倾向于认为这是由于没有检查 gamesList 是否为 null,这是在呈现 table 时。重要的是要了解,当您调用 OnInitialisedAsync 方法时,控制权将交给调用代码(框架),该调用代码在您的异步方法 returns 之前开始呈现 table,这意味着 gamesList 仍然为 null , 引发异常。
希望这能奏效...
我正在尝试在 Blazor 中创建一个简单的 Web 应用程序,它使用 HTML table.
显示游戏列表我写了一些代码,但是当我尝试 运行 它时,我得到了这个错误:
An unhandled error has occurred
我正在使用 API returns JSON 格式的游戏列表。我知道 API 没问题,因为当我使用 Postman 测试它时它工作正常。
这是我的代码:
var gamesList= await Http.GetFromJsonAsync<GameData[]>("http://1.1.1.1/api/gamedata");
<table>
<th>Games</th>
@foreach (var game in gamesList)
{
<tr>
<td>@game.Title</td>
<td>@game.Genre</td>
<td>@game.Price</td>
</tr>
}
</table>
我有什么地方做错了吗?
谢谢!
您的代码应如下所示:
@inject HttpClient Http
@if (gamesList == null)
{
<p><em>Loading...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>Title</th>
<th>Genre</th>
<th>Price</th>
</tr>
</thead>
<tbody>
@foreach (var game in gamesList)
{
<tr>
<td>@game.Title</td>
<td>@game.Genre</td>
<td>@game.Price</td>
</tr>
}
</tbody>
</table>
}
@code {
private GameData[] gamesList;
protected override async Task OnInitializedAsync()
{
gamesList = await Http.GetFromJsonAsync<GameData[]>
("gamedata");
}
}
还要确保您的 Program.Main 方法中包含此代码:
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
builder.Services.AddTransient(sp => new HttpClient { BaseAddress =
new Uri(builder.HostEnvironment.BaseAddress) });
await builder.Build().RunAsync();
注意:此错误可能有多种原因。我倾向于认为这是由于没有检查 gamesList 是否为 null,这是在呈现 table 时。重要的是要了解,当您调用 OnInitialisedAsync 方法时,控制权将交给调用代码(框架),该调用代码在您的异步方法 returns 之前开始呈现 table,这意味着 gamesList 仍然为 null , 引发异常。
希望这能奏效...