Blazor输入:onblur投掷,onnput效果良好


<input type="text" @bind-value="Input1" @bind-value:event="oninput" />
<input type="text" @bind-value="Input2" @bind-value:event="onblur" />
@code
{
public string Input1 { get; set; }
public string Input2 { get; set; }
}

文本可以输入到第一个输入中,但一旦第二个输入失去焦点,就会引发此异常。

System.ArgumentException:类型为的对象"Microsoft.AspNetCore.Components.Web.FocusEventArgs"不能为已转换为类型"Microsoft.AspNetCore.Components.ChangeEventArgs".

这感觉像是框架而不是我。有什么想法吗?

我在.net 5.0中使用blazor服务器。

复制并测试此代码:

<div>@message</div>
<input type="text" @bind-value="Input1" @bind-value:event="oninput" />
<input type="text" @bind-value="Input2" @onblur="@((args) => message= "The bulr event was fired." )" />
@code
{
private string message;
public string Input1 { get; set; }
public string Input2 { get; set; }
}

没有问题。

当您使用这样的代码时:@bind-value="Input2" @bind-value:event="onblur"

实际上,您告诉编译器,它应该生成将输入标记绑定到变量Input2的代码,并且绑定应该在调用blur事件时发生,但遗憾的是,绑定是在调用"change"事件时执行的。为了执行绑定,框架需要ChangeEventArgs参数,但它得到了FocusEventArgs参数。如果你是框架,你会怎么做。她对你很好。只是小小的抗议。

相关内容

  • 没有找到相关文章

最新更新