Reset input field value if value is invalid in Blazor(如果Blazor中的值无效,则重置输入字段值)
本文介绍了如果Blazor中的值无效,则重置输入字段值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在for循环内绑定了一些文本字段。
<Input type="text" @onchange='(ChangeEventArgs e)=>DataChange(e,item)' value="@item.value" />
在这里,如果用户在输入字段中键入任何内容,我在DataChange函数中有一个自定义验证。
private void DataChange(ChangeEventArgs e, PnL pnl)
{
if(e.Value.ToString().Contains(10))
{
pnl.value = e.Value.ToString();
}
}
如果更改有效,则仅IA会为列表中的项目赋值。
但是如果无效,我需要将该值重置为原始。
我已尝试呼叫StateHasChange(),但无济于事。
有人能帮忙吗?
推荐答案
尝试此操作:
private async Task DataChange(ChangeEventArgs e, PnL pnl)
{
if(e.Value.ToString().Contains(10))
{
pnl.value = e.Value.ToString();
}
else
{
var tempValue = pnl.value;
pnl.value = string.Empty();
await Task.Yield();
pnl.value = tempValue;
}
}
这里发生的情况是这样的。
- 代码与
await Task.Yield同步运行。 - 此时
pnl.value为空字符串。 DataChange生成Blazor事件处理程序的执行,该处理程序将呈现操作加载到呈现器队列。- 产量允许渲染器为其渲染队列提供服务,并重新渲染组件。
pnl.value为空(与上次呈现不同),因此输入将在DOM中更新。 - 产出后的代码现在运行到完成,并将
pnl.value设置回其原始值。 DataChange完成,Blazor事件处理程序将第二个呈现操作加载到呈现器队列,该操作现在会在值再次更改时重新呈现输入。
在您的代码中,所有内容都同步运行。您可以调用StateHasChanged任意多次,渲染器只有在DataChange完成后才能获得运行其队列的任务时间。此时,呈现器仍然认为输入设置为pnl.value的原始值(不是编辑值),因此DOM不会更新。
有一篇关于CodeProject的更详细的文章-https://www.codeproject.com/Articles/5310624/Blazor-UI-Events-and-Rendering
这篇关于如果Blazor中的值无效,则重置输入字段值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
织梦狗教程
本文标题为:如果Blazor中的值无效,则重置输入字段值
基础教程推荐
猜你喜欢
- 重新排序 WPF TabControl 中的选项卡 2022-01-01
- SonarQube C# 分析失败“不是指针的有效行偏移" 2022-01-01
- 获取C#保存对话框的文件路径 2022-01-01
- 更新 Visual Studio 中的 DataSet 结构以匹配新的 SQL 数据库结构 2022-01-01
- 如果条件可以为空 2022-01-01
- 在 VB6 或经典 ASP 中使用 .NET 2022-01-01
- C# 9 新特性——record的相关总结 2023-04-03
- 将数据集转换为列表 2022-01-01
- Mono https webrequest 失败并显示“身份验证或解密失败" 2022-01-01
- 从 C# 控制相机设备 2022-01-01
