Blazor Valued 已更改,同时保持 2 向绑定

Dyl*_*lan 3 c# .net-core blazor blazor-server-side

是否有办法保持双向绑定,并在 @onchange 上调用方法?

像这样的东西。

<input class="form-control" placeholder="My Number" @bind="Record.Number"  @onchange="(()=> MyMethod())">
Run Code Online (Sandbox Code Playgroud)

我希望它绑定,但在更改时调用一些其他方法,该方法不会从更改事件中设置 Record.Number 值。

@onkeyup 有效,但我想确保该值实际发生变化。

Isa*_*aac 7

这行:

<input class="form-control" placeholder="My Number" @bind="Record.Number"  
   @onchange="(()=> MyMethod())">
Run Code Online (Sandbox Code Playgroud)

可以用另一种方式表达:

<input class="form-control" placeholder="My Number" value="@record.Number" 
            @onchange="@((args) => { record.Number = args.Value.ToString(); 
            MyMethod();})"/>
Run Code Online (Sandbox Code Playgroud)

这将创建一个双向绑定,其中当触发“更改”事件时,输入值会在绑定字段 (record.Number) 中更新(当您按 Tab 键离开控件时,这种情况总是会发生)。此外,还会调用 MyMethod 方法(此处用于演示值已更改)以及时间(按 Tab 键脱离控制)。

这是一个工作示例:

<input class="form-control" placeholder="My Number" value="@record.Number" 
            @onchange="@((args) => { record.Number = args.Value.ToString(); MyMethod();})">
<p>@output</p>

@code {

    private static string output;
 private void MyMethod()
    {
        output = record.Number;
    }
    Record record = new Record();

    public class Record
    {
        public string Number { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助...