Blazor的Telerik UI?下载30天免费试用

如何处理ValueChanged事件并使用表单和验证

环境

产品 Blazor的UI输入

如何处理ValueChanged事件并使用表单和验证

问题

处理ValueChanged从输入暴露的事件会干扰双向绑定@bind-Value因此,与验证

你不能两者都用@bind-Value而且ValueChanged,您将得到类似的编译错误

组件参数'ValueChanged'用于该组件两次或多次。参数必须唯一(不区分大小写)。组件参数'ValueChanged'由'@bind-Value'指令属性生成。

解决方案

您可以使用ValueExpression而且价值属性分别提供模型字段和输入值,并且您可以在ValueChanged事件处理程序。

处理ValueChanged事件时调用验证消息的示例

@using System.ComponentModel.DataAnnotations //仅用于模型注释       from handler: @result 
from model: @person。@代码{字符串结果;Person Person = new Person();public类Person {[Required(ErrorMessage = "Enter a name")] [StringLength(10, ErrorMessage = "That name is too long")] public string theTbValue {get;设置;} = "lorem ipsum";} private void MyValueChangeHandler(string theUserInput) {result = string。格式("用户输入:{0}",theUserInput);//你必须手动更新模型,因为处理ValueChanged事件不让你使用@bind-Value //为了验证工作,你现在还必须定义ValueExpression,因为@bind-Value为你做了这件事。theTbValue = theUserInput;}}

处理程序中的lambda表达式是框架所需要的:https://github.com/aspnet/AspNetCore/issues/12226

Telerik输入也提供了一个OnChange不干扰双向绑定的事件。它在模糊或开启时启动输入

另请参阅

在本文中
Baidu
map