首页 > 解决方案 > 设置 Blazor 中 onchange 事件源的输入值

问题描述

在 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";
    }
}

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

标签: asp.net-coreblazorblazor-server-side.net-5asp.net-blazor

解决方案


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

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

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


推荐阅读