c# - Blazor:如何检查 OnFieldChanged 中的字段是否有效
问题描述
当用户更改特定字段并且字段值有效时,我想调用一个方法。
<EditForm EditContext="_editContext">
<DataAnnotationValidator /> //could be FluentValidator or anything else
<InputText @bind="Model.Username" />
</EditForm>
_editContext = new EditContext(Model);
_editContext.FieldChanged(o, e) => {
if (e.FieldIdentifier.Name == "Username") {
//how to check if field is valid
//folowing does not work, because field has not been validated yet
var hasSrrors = e.EditContext.GetValidationMessages(e.FieldIdentifier).Any();
}
};
如何检查字段更改后是否有效?
我提供了 RX 解决方案,但它并不完美:
Model.EditContext.FieldChangedObservable()
.Where(fieldIdenitfier => fieldIdenitfier.Name == "Username")
//wait until validation
.Select(_ => Model.EditContext.ValidationStateChangedObservable().FirstAsync())
.Switch()
//check barcode validation
.Where(b => !Model!.EditContext.GetValidationMessages(FieldIdentifier.Create(() => Model.Entity.Barcode)).Any())
.Subscribe(_ => MyFieldChanged());
解决方案
推荐阅读
- mysql - 如何减少包含额外单词的行的分数
- perl - 如何获取所有第三个条目,直到它们出现在第二列
- ruby - 从备份恢复系统后 Ruby ripper.bundle 库版本不兼容错误
- port - 在 HandleHTTPRequest 上接收数据的问题无法正常工作
- hadoop - 无法在 Ambari 中加载纱线应用程序日志
- sql - 按列分组数据
- java - 如何忽略大小写并考虑字母数字字符
- linux - vagrant up 命令 SSL 证书问题
- android - Tablayout 在 Android kotlin 的 Fragment 中不起作用
- python - 即使为 pandas 指定编码也是错误的编码