gpt4 book ai didi

当 TextChanged 时 Blazor InputText 调用异步方法

转载 作者:行者123 更新时间:2023-12-03 20:27:06 25 4
gpt4 key购买 nike

我尝试在 Blazor (ServerSide) 中捕获 InputText 的文本更改,然后调用异步方法来检查输入的优惠券代码是否正确。

HTML:

<EditForm Model="@Basket" OnValidSubmit="@CommitBasket">
Gutscheincode
<InputText class="coupon-input checkout-control pristine untouched"
@bind-Value="CouponCode"
@onchange="CouponCodeChanged">
</InputText>
@CouponText
</EditForm>`

但是没有引发 CouponCodeChanged - OnKeyUp 没有用,因为在那个状态下文本值没有改变......

这是 C# 方法:
public async Task CouponCodeChanged(ChangeEventArgs args)
{
using var client = ClientFactory.CreateClient();
var result = await ApiCalls.GetCouponCodeData(client, AppState.BaseUrl, 2, CouponCode);
CouponText = result== null ? "NOT FOUND" : $"exists:{result.Exists} amount:{result.Amount}";
}

有没有人有任何提示或想法如何以方便的方式解决这个问题?

谢谢!

最佳答案

InputText组件没有 onchange事件但 ValueChanged .
但是,如果你想订阅这个事件,你需要传递一个 ValueExpression这并不容易。
我发现订阅此事件的最简单方法是覆盖 InputText成分。

CouponComponent.razor

@inherits InputText
<InputText class="coupon-input checkout-control pristine untouched"
ValueExpression="ValueExpression" Value="@Value" ValueChanged="OnValueChanged" />
@code {
[Parameter]
public EventCallback<string> CouponValueChanged { get; set; }

private async Task OnValueChanged(string value)
{
await ValueChanged.InvokeAsync(value);
using var client = ClientFactory.CreateClient();
var result = await ApiCalls.GetCouponCodeData(client, AppState.BaseUrl, 2, CouponCode);
var coupon = result == null ? "NOT FOUND" : $"exists:{result.Exists} amount:{result.Amount}"
await CouponValueChanged.InvokeAsync(coupon);
}
}

用法

<EditForm Model="@Basket" OnValidSubmit="@CommitBasket">
Gutscheincode
<CouponComponent @bind-Value="CouponCode"
@CouponValueChanged="CouponCodeChanged">
</InputText>
@CouponText
</EditForm>

@code {
private void CouponCodeChanged(string coupon)
{
CouponText = coupon;
StateHasChanged();
}
}

关于当 TextChanged 时 Blazor InputText 调用异步方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59092278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com