C# 第二次单击后是否刷新页面?
我有下面的blazor页面来显示从数据库筛选的结果页面C# 第二次单击后是否刷新页面?,c#,blazor,C#,Blazor,我有下面的blazor页面来显示从数据库筛选的结果页面 @inject ViewModels.MyViewModel VM <input id="search" type="text" @bind="search" /> <input id="search" type="button" value="Go" @onclick="SearchChanged" /> <p>Current count: @currentCount</p> @cod
@inject ViewModels.MyViewModel VM
<input id="search" type="text" @bind="search" />
<input id="search" type="button" value="Go" @onclick="SearchChanged" />
<p>Current count: @currentCount</p>
@code {
string search = "";
int currentCount = 0;
IEnumerable<MyDto> dtos;
async void SearchChanged() {
currentCount++;
Console.WriteLine($"VM.Ric: {ric}"); // Correct values will be printed
dtos = GetList(search);
}
}
@if (dtos == null)
{
<p><em>Please enter the ...</em></p>
}
else
{
<table class="table">
<thead>
<tr>
<th>ID</th>
</tr>
</thead>
<tbody>
@foreach (var ca in dtos)
{
<tr>
<td>@ca.ID</td>
</tr>
}
</tbody>
</table>
}
但是,我需要在输入a后单击按钮两次才能看到结果。例如,在输入ABC后单击按钮将不会刷新屏幕。再次单击将显示正确的值 您应该在中使用Task而不是void
使用此选项:async Task SearchChanged您应该在中使用Task而不是void
使用此选项:async Task SearchChanged它通过整个frameworkIt读取数据库通过整个frameworkIt读取数据库。很奇怪。异步void适用于WinForm等。但对于Blazor,它的行为不同。解释为什么需要返回任务而不是void会很好!为什么?有什么区别吗?@partyelite,如果它是async void,那么每两次点击就会触发一次事件。异步任务没有问题。它可以工作。很奇怪。异步void适用于WinForm等。但对于Blazor,它的行为不同。解释为什么需要返回任务而不是void会很好!为什么?有什么区别吗?@partyelite,如果它是async void,那么每两次点击就会触发一次事件。异步任务没有问题。
async void SearchChanged()