<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
参数。如果你是框架,你会怎么做。她对你很好。只是小小的抗议。