Blazor客户端获取请求

时间:2020-07-03 13:33:26

标签: blazor blazor-client-side

我正在尝试使用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();
}

0 个答案:

没有答案