我正在尝试使用GET请求从客户端Blazor应用程序中的localhost服务器api从数据存储库中获取IEnumerable。
查询服务器时,邮递员返回预期结果。 (https:// localhost:44326 / api / work)
但是,我的Blazor应用程序一直在评估空响应。我在做什么错了?
@page "/showcase"
@inject HttpClient httpClient
<section class="color3 background-1">
@if (Works == null)
{
<p class="text-md-center"><em>Finding Work Examples...</em></p>
}
else
{
@foreach (var works in Works)
{
<article class="background color1">
<img />
<h3>@works.Name</h3>
<p> @works.Text </p>
<span>
<a href="@works.ProjectPath">
Go To Demo
</a>
<a href="@works.GitHubPath">
Go to Github
</a>
</span>
</article>
}
}
</section>
@functions {
IEnumerable<MyWorkModel> Works;
string baseUrl = "https://localhost:44326";
protected override async Task OnInitializedAsync()
{
await load();
}
protected async Task load()
{
Works = await httpClient.GetFromJsonAsync<IEnumerable<MyWorkModel>>($"{baseUrl}/api/work");
}
}
编辑: 谢谢大家的帮助。
问题出在Json序列化器上,它对实现不满意。我切换到Newtonsoft序列化器,现在可以使用了。更改为以上
:protected async Task load()
{
var httpResponseMessage = await httpClient.GetAsync($"{baseUrl}/api/work");
Works = JsonConvert.DeserializeObject<IEnumerable<MyWorkModel>>(await httpResponseMessage.Content.ReadAsStringAsync());
StateHasChanged();
}