blazor - Blazor 输入:onblur 抛出,oninput 工作正常
问题描述
<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
调用事件时发生,但是不幸的是,绑定是在调用“更改”事件时执行的。为了执行绑定,框架需要ChangeEventArgs
参数,但它获取的是FocusEventArgs
参数。如果你是框架,你会怎么做。她对你很好。只是小小的抗议。
推荐阅读
- filter - Objectlistview 过滤器结合 CompositeAllFilter 和 CompositeAnyFilter
- javascript - 如何创建像视图一样的资源时间线,但对于 dayGridView?
- laravel - 如何编写查询以在 laravel 中获取产品子类别名称?
- kubernetes - dnsConfig 在 GKE 中被跳过
- php - PHP电子表格生成
- javascript - JavaScript 显示的时间在两台设备上不同(Apple-Windows)
- state - Ansible mount with state:mounted not working for sshfs
- regex - 正则表达式 - 查找所有空格并忽略多行字符串中的连字符分隔的单词
- java - 如何使 hibernate cfgxml 文件能够定位?
- thymeleaf - 创建一个百里香片段列表并将其作为参数传递给另一个片段