为输入设置值,它是 Blazor 中 onchange 事件的来源

Set value for input which is source of onchange event in Blazor

在 Blazor Server App / .NET 6 preview 4(.NET 5 相同)中,我想处理 onchange 事件,并在某些情况下通过为文本框设置特定值来关闭用户输入。有演示的基本代码:

<input value="@tester" @onchange="@OnChangeHandler" />

@code {

    public string tester { get; set; }

    public void OnChangeHandler(ChangeEventArgs obj)
    {
        tester = "100";
    }
}

由于某些原因,input 仅显示一次“100”,即使每次 OnChangeHandler 触发时都设置了 属性 testerinput 保留用户输入的值,忽略当 onchange 第二次和第三次出现时 tester 设置为“100”的事实。如何使 input 始终包含 tester 的实际值?

一个快速肮脏的解决方法是这样的:

  public async Task OnChangeHandler(ChangeEventArgs obj)
    {
        tester =null;
        await Task.Delay(1); 
        tester = "100";
    }

不太好计划在 dotnet6 的预览版 5 中进行修复