我想在每次对文本框进行更改时都调用异步方法。
我已经搜索了一段时间,现在正在谷歌搜索并尝试使用发现的语法。以下代码似乎是最准确的。
剃刀页面代码:
<div class="offset-sm-5 col-sm-3">
<div class="input-group">
<input class="form-control" @oninput="@(async () => await OnSearchAsync())"/>
</div>
</div>
隐藏代码:
public class ListBase: ComponentBase
{
[Inject]
public IVpbDelegateAdminService VpbDelegateAdminService { get; set; }
protected VpbDelegateListVm VpbDelegateListVm { get; set; }
protected override async Task OnInitializedAsync()
{
VpbDelegateListVm = await VpbDelegateAdminService.GetVpbDelegateListVmAsync(1);
}
protected async Task OnSearchAsync()
{
VpbDelegateListVm = await VpbDelegateAdminService.GetVpbDelegateListVmAsync(2);
}
}
任何帮助将不胜感激。
答案 0 :(得分:2)
您是否要尝试从后面的代码中调用方法?
如果是这样,应该可以。
<div class="offset-sm-5 col-sm-3">
<div class="input-group">
<input class="form-control" @oninput="@OnSearchAsync"/>
</div>
</div>
@code
{
private async Task OnSearchAsync()
{
var data = await GetYourData();
}
}
答案 1 :(得分:-1)
我的解决方法是
@page "/Demo_domtree_input_typing"
@{ BlazorSession.Current["codename"] = "Demo_domtree_input_typing"; }
Your message :
<BlazorDomTree @ref="dt"></BlazorDomTree>
@code{
BlazorDomTree dt;
protected override void OnAfterRender(bool first)
{
if (!first)
return;
PlusControl inp1 = dt.Root.Create("input type='text'");
inp1.OnChanging(delegate
{
BlazorSession.Current.Toast("Your are typing '" + inp1.Value + "'", 1000, "typinginfo");
});
}
}
在线实时演示: http://demo.blazorplus.com/Demo_domtree_input_typing
(它需要导入并设置nuget包'BlazorPlus')