C# OnAfterRenderAsync()Blazor服务器中未加载数据
这里我有blazor服务器应用程序,我正在尝试删除角色,删除后我想再次加载角色列表并显示已删除的消息。C# OnAfterRenderAsync()Blazor服务器中未加载数据,c#,asp.net-core,blazor,C#,Asp.net Core,Blazor,这里我有blazor服务器应用程序,我正在尝试删除角色,删除后我想再次加载角色列表并显示已删除的消息。 但问题是删除角色后会显示删除消息,但不会再次加载角色列表。 下面是我所做的 劳力士剃须刀 @foreach (var item in roleList) { <tr> <td>@item.Name</td> <td> <a href="/admin/editrole/@item.
但问题是删除角色后会显示删除消息,但不会再次加载角色列表。
下面是我所做的
劳力士剃须刀
@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>
}
公共异步任务DeleteRole(字符串roleId)
{
var role=await roleManager.FindByIdAsync(roleId);
bool confirm=wait jSRuntime.InvokeAsync(“确认”、“确定吗?”);
如果(已确认)
{
var结果=等待roleManager.DeleteAsync(角色);
if(result.successed)
{
MessageStaus.MessageId=3;
}
}
}
您正试图在OnAfterRenderAsync
中重新加载roleList
。该方法的名称应该有点泄露。AFTERRENDER=组件已渲染,任何更改仅在重新渲染组件时才会进入UI
将您的角色列表
更新添加到删除角色
。组件在DeleteRole
完成之前不会重新渲染
公共异步任务DeleteRole(字符串roleId)
{
var role=await roleManager.FindByIdAsync(roleId);
bool confirm=wait jSRuntime.InvokeAsync(“确认”、“确定吗?”);
如果(已确认)
{
var结果=等待roleManager.DeleteAsync(角色);
if(result.successed)
{
MessageStaus.MessageId=3;
//添加到此处以在roleList更改后更新它
roleList=mainService.GetAllRoles();
}
}
}
您正试图在OnAfterRenderAsync
中重新加载roleList
。该方法的名称应该有点泄露。AFTERRENDER=组件已渲染,任何更改仅在重新渲染组件时才会进入UI
将您的角色列表
更新添加到删除角色
。组件在DeleteRole
完成之前不会重新渲染
公共异步任务DeleteRole(字符串roleId)
{
var role=await roleManager.FindByIdAsync(roleId);
bool confirm=wait jSRuntime.InvokeAsync(“确认”、“确定吗?”);
如果(已确认)
{
var结果=等待roleManager.DeleteAsync(角色);
if(result.successed)
{
MessageStaus.MessageId=3;
//添加到此处以在roleList更改后更新它
roleList=mainService.GetAllRoles();
}
}
}
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;
}
}
}