【发布时间】:2023-04-09 08:14:01
【问题描述】:
为什么 Blazor 用户界面 在删除事件后不更新:
我的组件:
<table class="table table-striped">
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Example</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach (var trainingTechnique in TrainingTechniques) {
<tr>
<td>@trainingTechnique.Id</td>
<td>@trainingTechnique.Name</td>
<td>@trainingTechnique.Example</td>
<td>
<button type="button"
class="btn btn-danger"
@onclick="@(async () => await DeleteTechnique(trainingTechnique.Id))">
Delete
</button>
</td>
</tr>
}
</tbody>
</table>
我的组件代码在后面:
public class TrainingTechniqueViewPageBase : ComponentBase
{
public List<TrainingTechniqueView> TrainingTechniques { get; set; }
[Inject]
public ITrainingTechniqueConsumer TrainingTechniqueConsumer { get; set; }
protected TrainingTechniqueForm TrainingTechniqueForm { get; set; }
protected override async Task OnInitializedAsync()
{
TrainingTechniques = (await TrainingTechniqueConsumer.GetTechniques()).ToList();
}
public async void TrainingTechniqueForm_OnSave()
{
TrainingTechniques = (await TrainingTechniqueConsumer.GetTechniques()).ToList();
StateHasChanged();
}
protected void AddTrainingTechnique()
{
TrainingTechniqueForm.Show();
}
protected async Task DeleteTechnique(int id)
{
await (TrainingTechniqueConsumer.DeleteTrainingTechnique(id));
this.StateHasChanged();
}
}
}
删除方法:
public async Task DeleteTrainingTechnique(int id)
{
await _httpClient.DeleteAsync($"training/trainingtechniques/{id}");
}
【问题讨论】:
-
您的问题(当时)已关闭,因为当时情况完全不同。如果您希望重新打开它,请提供minimal reproducible example。
-
显然您编辑了您的问题以使其正常工作?
-
@Vencovsky 不,删除后 UI DOM 仍然没有重绘,我必须导航出页面并返回更新,我无法识别问题
-
@AnynameDonotcare 能否分享一下这个列表项的get方法。
-
@Ashiquzzaman 我已经用更多代码更新了这个问题
标签: c# asp.net-core asynchronous blazor blazor-server-side