【发布时间】:2021-05-15 14:13:03
【问题描述】:
这里我有 blazor 服务器应用程序,我正在尝试删除角色,删除后我想再次加载角色列表并显示已删除的消息。
但问题是删除角色后会显示删除消息,但角色列表不会再次加载。
以下是我所做的
RoleList.razor
@foreach (var item in roleList)
{
<tr>
<td>@item.Name</td>
<td>
<a href="/admin/editrole/@item.Id" class="btn btn-outline-primary"><i class="far fa-edit"></i> Edit</a>
<button @onclick="()=>DeleteRole(item.Id)" class="btn btn-outline-danger"><i class="far fa-trash-alt"></i> Delete</button>
</td>
</tr>
}
protected async override Task OnAfterRenderAsync(bool firstRender)
{
await jSRuntime.InvokeAsync<string>("AddDataTables", new object[] { "#example" });
if (MessageStaus.MessageId == 1)
{
toastService.ShowSuccess("Role successfully created");
MessageStaus.MessageId = 0;
}
else if(MessageStaus.MessageId == 2)
{
toastService.ShowSuccess("Role successfully edited");
MessageStaus.MessageId = 0;
}
else if(MessageStaus.MessageId == 3)
{
toastService.ShowSuccess("Role successfully deleted");
roleList = mainService.GetAllRoles();
StateHasChanged();
MessageStaus.MessageId = 0;
}
await base.OnAfterRenderAsync(firstRender);
}
protected override void OnInitialized()
{
roleList = mainService.GetAllRoles();
base.OnInitialized();
}
public async Task DeleteRole(string roleId)
{
var role = await roleManager.FindByIdAsync(roleId);
bool confirmed = await jSRuntime.InvokeAsync<bool>("confirm", "Are you sure?");
if (confirmed)
{
var result = await roleManager.DeleteAsync(role);
if (result.Succeeded)
{
MessageStaus.MessageId = 3;
}
}
}
【问题讨论】:
标签: c# asp.net-core blazor