在 Blazor EditContext 中,如果在表单中绑定了多个输入元素时,当某个元素的值发生变化时,会触发 OnFieldChanged 事件。但是有些情况下,这个事件会出现一些奇怪的表现,例如会多次触发或者不触发。
解决这个问题的方法是创建一个自定义控件并手动绑定到 EditContext,而不是使用 Blazor 默认提供的元素进行绑定。下面是一个包含代码示例的解决方案:
@code {
[Parameter]
public string Value { get; set; }
[Parameter]
public EventCallback ValueChanged { get; set; }
private async Task OnInputChange(ChangeEventArgs args)
{
Value = args.Value.ToString();
await ValueChanged.InvokeAsync(Value);
}
}
@code {
private MyModel myModel = new MyModel();
private void HandleValidSubmit()
{
// do something
}
}
public class MyModel
{
[Required]
public string Value { get; set; }
}
通过这种方法,可以排除 Blazor EditContext 中的奇异行为,并且可以更灵活地控制表单输入元素的行为。