javascript - 通过 javascript 在 Blazor 中更改输入值不会更改它的绑定(bind)属性值

标签 javascript c# asp.net-core blazor

我正在使用 app.net core 3.1 建立一个网站与 blazor .
在我的一个组件中,我有:
<input @bind="Message" type="text" id="input-message"/>Message只是一个字符串属性。

我有javascript:
document.getElementById('input-message').value = 'some text';
问题是在运行上面的js之后,<input>值改变但 Message value 没有,当然如果我在 <input> 中键入或粘贴一些内容, Message值也会发生变化。

最佳答案

显然在改变 <input> javascript 对 DOM 的值或任何其他更改不会更改状态,因此 blazor 不会重新渲染组件。甚至调用StateHasChanged();在您的 Razor 页面中手动将不起作用。

要完成此操作,您只需触发用户修改 <input> 时发生的相同 DOM 事件。通常,如下所示:

var myElement = document.getElementById('input-message');
myElement.value = 'some text';
var event = new Event('change');
myElement.dispatchEvent(event);

关于javascript - 通过 javascript 在 Blazor 中更改输入值不会更改它的绑定(bind)属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60929649/

相关文章:

json - 使用 JSON asp.net core api 上传多部分/表单数据图像

缩小后 JavaScript 不工作

c# - 将数字限制在下限和上限/限制之间的最佳方法

c# - uwp win10 Listview SelectedItem样式

c# - Entity Framework 上下文基础选项的定义

debugging - AspNetCore 应用程序在生产中泄漏线程 - 如何调试?

Javascript/AJAX 异步加载旋转器

javascript - 为什么将一个非常大的数字解析为整数返回 1

javascript - 如何让我的脚本返回成功消息?

c# - 如何在c#中格式化这个字符串