0

每次对文本框进行更改时,我都想调用一个异步方法。

我已经看了一段时间了,现在谷歌搜索并尝试了我找到的语法。下面的代码似乎是最准确的。

剃刀页面代码:

    <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);
        }
    }

任何帮助,将不胜感激。

4

2 回答 2

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();
    }
}
于 2020-03-27T14:14:56.023 回答
-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”)

于 2020-03-31T13:07:11.427 回答