在用户单击按钮后,我使用布尔属性禁用按钮,以使单击不会发生两次。
chrome://policy
按钮的设计如下:
runtime_blocked_hosts
但是这不起作用,并且仅在PlaceOrder方法完成执行后,按钮才被禁用。 我对ajax指示器存在相同的问题,即在执行方法后应显示并在完成后应隐藏,使用if块。 在这两种情况下,状态已更改均无效。我使用Blazor Server侧预览9。如何使它们工作?
答案 0 :(得分:1)
请阅读火星上agua的评论,并按照以下代码示例查看其工作原理...单击按钮时,调用DisablePlaceOrder方法,标题文本将更改以反映正在进行的操作动作,在此期间按钮被禁用。这发生在3秒的时间范围内,包括重新呈现控件以反映视觉变化。请注意,不会调用StateHasChanged。
当然,在现实生活中的应用程序中,您不会使用Task.Delay方法,而是调用需要大量工作的方法...
<button type="button" @onclick="@PlaceOrder_Clicked" disabled="@DisablePlaceOrderButton">@Title</button>
@code{
private bool DisablePlaceOrderButton { get; set; } = false;
public string Title { get; set; } = "Place Order";
private async Task PlaceOrder_Clicked()
{
await DisablePlaceOrder();
//if (cart.Lines.Count() == 0)
//{
DisablePlaceOrderButton = false;
Title = "Place Order";
// return;
//}
}
async Task DisablePlaceOrder()
{
DisablePlaceOrderButton = true;
Title = "Wait...";
await Task.Delay(3000);
}
}