一个输入绑定到我的模型的属性CodeInput.当我按Tab时,我想把Model.CodeInput加到Model.Codes.

  1. 我输入字符'A',然后按tab线路Model.Codes.Add(Model.CodeInput)上的Model.CodeInput是空的

  2. 我输入第二个字符'AB',我在Model.CodeInput中按Tab键,我得到'A'

  3. 我在模型中输入第三个字符'ABC'.CodeInput我得到'AB'

这种滞后来自哪里?

谢谢,

public class MyModel
{
    public string CodeInput { get; set; }
    public List<string> Codes { get; set; }
}

我创建了一个组件MyComponenent:

<CascadingValue Value=@Model>
    <Component1 />
</CascadingValue>

在代码部分中包含以下内容:

public MyModemModel { get; set; } = new();

Component1.razor.cs

public partial class Component1 
{
    [CascadingParameter]
    public MyModel Model { get; set; }

    public void OnKeyDown(KeyboardEventArgs e)
    {
        if (e.Code == "Tab")
        {
            Model.Codes.Add(Model.CodeInput);
        }
    }
}
    

Component1.razor

    <MudTextField 
        @bind-Value=Model.CodeInput
        @onkeydown="OnKeyDown" />

谢谢,

推荐答案

默认情况下,MudTextField在失go 焦点时更新该值,这意味着在执行OnKeyDown之后.您可以使用Immediate="true"来更新每一次输入.

如果在值更改时执行较长的任务,则可能应该使用debounce ,以避免不必要的计算.

<MudTextField 
        Immediate="true"
        @bind-Value=Model.CodeInput
        @onkeydown="OnKeyDown" />

Documentation

Csharp相关问答推荐

在C# 11之前, struct 中的每个字段都必须显式分配?不能繁殖

需要更改哪些内容才能修复被覆盖的财产中的无效警告CS 8765?

EF Core Fluent API中定义的多对多关系

始终保留数组中的最后N个值,丢弃最老的

属性getter和setter之间的空性不匹配?

使用Audit.EntityFramework,我如何将外键的值设置为相关实体上的属性?

如何忽略API JSON响应中的空字符串?

我如何让我的秒表保持运行场景而不重置

将字节转换为 struct 并返回

确定System.Text.Json序列化中是否无法识别Type

有空容错运算符的对立面吗?

带有列表参数的表达式树

为什么Docker中没有转发该端口?

C#使用相同内存的多个数组

为什么我的自定义Json.net转换器不工作?

如何正确地在VB中初始化类?

从MudAutoComplete打开对话框,列表仍然可见

Azure队列触发器未使用隔离的工作进程执行

SharpZipLib在文件名前加上目录名,生成tar.gz

为什么Visual Studio 2022建议IDE0251将我的方法设置为只读?