我正在构建Blazor客户端应用程序。我正在使用MatBlazor组件。
我在页面上有两个MatSelectString控件。第一个用于选择类别,第二个用于从类别中选择产品。因此,我将其设置为:
<MatSelect Outlined="true" Label="Category" @bind-Value="@Category">
<MatOptionString></MatOptionString>
@foreach (var cat in GetCategories())
{
<MatOptionString Value="@cat">@cat</MatOptionString>
}
</MatSelect>
<MatSelect Outlined="true" Disabled="@(!string.IsNullOrWhiteSpace(Category))" Label="Product" @bind-Value="@Product" >
<MatOptionString></MatOptionString>
@foreach (var prod in GetProducts(Category))
{
<MatOptionString Value="@prod">@prod</MatOptionString>
}
</MatSelect>
在GetProducts(Category)
代码中,我想调用后端。问题是只有一个HttpClient.GetJsonAsync<>()
方法,不能从非异步方法中调用。但是不能使GetProduct()异步。
我尝试过的事情:
有任何想法吗?
您可以使用ValueChanged
EventCallback:
<MatSelect
Outlined="true"
Label="Category"
ValueChanged="(string i)=>OnChangeCategory(i)"> @* <-- here *@
<MatOptionString></MatOptionString>
@foreach (var cat in GetCategories())
{
<MatOptionString Value="@cat">@cat</MatOptionString>
}
</MatSelect>
@code
{
protected async Task OnChangeCategory(string newValue)
{
this.Category = newValue;
// call backend async tasks
// ...
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句