Blazor可以在没有绑定的情况下获得输入文本值吗?



似乎搜索结果中的所有示例都在使用绑定,更新绑定变量oninput。这是除了使用外部JavaScript之外唯一被批准的方法吗?我的意思是,如果我分配了一个@ref,我不能使用@ref变量获得当前值,假设像

<input type="text" @ref="myinputbox" />
....
string value = myinputbox.Value;

是的,还有另一种方法。如果您输入并悬停@onchange事件,您可以看到事件处理程序的预期签名,它接受ChangeEventArgs,它公开参数的Value—在本例中,是在进行更改后具有新内容的字符串。所以:

<input @onchange=HandleChange />
<div>@DisplayMessage</div>
@code {
string DisplayMessage = "";
async Task HandleChange (ChangeEventArgs args){
DisplayMessage = args.Value.ToString();
}
}

是的,你可以这样使用@ref:

@page "/"
<PageTitle>Index</PageTitle>
<input type="text" @oninput=OnChange @ref="element" />
@code {
private ElementReference element;
private string? value;
void OnChange(ChangeEventArgs e)
{
this.value = e.Value?.ToString();
}
}

但是你引用的不是component,而是html元素。ElementReference只包含一个由内置JS互操作代码使用的Guid,可以用来引用您编写的自定义JS互操作中的元素。在this.value=...上休息一下,看看element

相关内容

最新更新