@onkeypress 没有获取文本输入框的更新值?

ca9*_*3d9 5 c# razor blazor blazor-server-side

我有以下代码。

<input id="search" type="text" @bind="Search" @onkeypress="SearchChanged" />
@code {
    string Search;

    void SearchChanged() 
    { 
        var s = Search; // Search is always one character behind
    }
}
Run Code Online (Sandbox Code Playgroud)

在文本框中键入内容将触发该功能SearchChanged。但是,它获得的值始终是键入文本之前的一个字符。例如,在 中设置断点SearchChanged

搜索的键入值
=====================
一个空值
阿卜阿
abc ab
abcd abc

顺便说一句,该功能@onkeypress在互联网浏览器中不起作用?


尝试将代码更改为

<input id="search" type="text" @bind="Search" />
@code {
    string search;
    string Search 
    {
        get { return search; }
        set {
            search = value;
            ResultList = GetNewList(search).Result.ToList(); 
        }
    }

    void SearchChanged() 
    { 
        var s = Search; // Search is always one character behind
    }
}
Run Code Online (Sandbox Code Playgroud)

我在 中设置了一个断点set { },但是,在输入文本框时,断点只被击中一两次?

dan*_*era 3

您正在寻找@bind-value:event

<input id="search" 
       type="text" 
       @bind-value="Search" 
       @bind-value:event="oninput"
/>

@code {
  string search;
  string Search 
  {
    get { return search; }
    set {
        search = value;
        ResultList = GetNewList(search).Result.ToList(); 
      }
  }
Run Code Online (Sandbox Code Playgroud)

引用数据绑定文档:

除了使用 @bind 语法处理 onchange 事件之外,还可以通过使用事件参数 (@bind-value:event) 指定 @bind-value 属性来使用其他事件绑定属性或字段。