首页 > 解决方案 > 在没有 @oninput 的情况下获取 Blazor 中输入字段的值

问题描述

我有一个由 Blazor组件<input>生成的 HTML 元素。<InputText>

我正在使用 JavaScript 库来检测用户何时扫描条形码。当此事件发生时,我将扫描的条形码的值设置到<input>元素中。

我想在 C# 中立即意识到这种价值变化。通常我会用它@bind-event:oninput来确保我在当前值发生变化时立即获得它,但是当通过代码设置 HTML 输入的值时,不会触发此事件。

有没有办法通过 JavaScript 为 HTML 输入赋值,然后让 C# 立即意识到更改并更新InputText控件绑定到的 C# 对象的属性?

标签: javascriptc#htmlblazor

解决方案


我已经通过以下方式解决了这个问题:

如果您在 JS 中具有所需的 C# 值,请将其应用于字段并在按钮上调用 .click() 。此按钮调用一个 C# 方法,该方法调用一个 JS 函数,该函数将输入的值作为字符串返回给您的 C# 方法,您现在可以随意使用该方法。

虽然这是一个肮脏的解决方案,但它确实有效。

我试图让 invokeMethodAsync 直接调用我的 C# 方法,但这要求它是静态的,我根本没有时间让这个项目以正确的方式完成它。


推荐阅读