Tenho um simples select
no meu aplicativo Blazor WASM Standalone (visando .NET 9) e quero executar alguma ação depois que o usuário seleciona uma opção. Entendo que para async
chamadas, a Microsoft agora recomenda usar bind:after
.
Estou seguindo este vídeo e fazendo exatamente o que ele faz em seu tutorial, mas no meu caso não atinjo o ponto de interrupção que coloco no DoSomething()
método no meu código. O que estou fazendo errado aqui?
<div>
<select @bind="SelectedState" @bind:after="DoSomething">
<option value="">Please select one</option>
<option value="AK">Alaska</option>
<option value="MT">Montana</option>
<option value="WY">Wyoming</option>
</select>
</div>
@code {
private string SelectedState;
private async Task DoSomething()
{
var userSelected = SelectedState; // Have a break point here but don't hit it
}
}
A pergunta é um pouco enganosa, o que me levou ao erro na minha resposta inicial. Ler a resposta e os comentários agora deletados de @NickPattman me colocou no caminho certo.
O problema não é que o evento não esteja disparando. Ele está. É que o breakpoint está sendo ignorado pelo depurador WASM quando o evento de alteração é acionado por um clique do mouse. O problema não existe no Server.
O mais estranho é que funciona se você usar as setas para cima e para baixo do teclado para alterar o valor, o que é uma solução alternativa se você precisar que o ponto de interrupção seja atingido!
Então não é um problema de código [o evento funciona e dispara], é um problema estranho de depurador. Foi relatado, como referenciado por @NickPattman, mas até agora não foi resolvido.
https://github.com/dotnet/aspnetcore/issues/60018
Para registro, o
@bind:after
não é realmente um evento separado. O compilador Razor cria código inline anexado aoOnChange
evento assim:Resposta original
Não tenho certeza de como você configurou seu aplicativo, mas seu código deve funcionar.
Observação: se você estiver pré-renderizando, a página ficará "estática" durante o período inicial de renderização no lado do servidor.
Aqui está minha página de demonstração:
O repositório de demonstração está aqui: https://github.com/ShaunCurtis/SO79542108