首页 > 解决方案 > 在 blazor 中单击按钮时执行异步方法

问题描述

我创建了一个“Razor Components”项目。我试图在按下按钮时执行异步方法,但还无法弄清楚语法。

这是我的Index.razor

@page "/"
@inject GenericRepository<Person> PersonRepository 

@foreach (var person in persons)
{
    <button onclick="@(() => Delete(person.Id))">❌&lt;/button>
}

@functions 
{
    async void Delete(Guid personId)
    {
        await this.PersonRepository.Delete(personId);
    }
}

当我单击按钮时,什么也没有发生。我尝试了各种返回类型(例如Task)和东西,但不知道如何使它工作。如果我需要提供更多信息,请告诉我。

每个文档/教程仅适用于按钮单击时的非异步 void 调用。

提前致谢。

标签: c#razorblazorblazor-server-siderazor-components

解决方案


您需要Delete正确调用该方法并使其返回Task而不是void

<button onclick="@(async () => await Delete(person.Id))">❌&lt;/button>

@functions {

    // ...

    async Task Delete(Guid personId)
    {
        await this.PersonRepository.Delete(personId);
    }
}

推荐阅读