Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OnAfterRenderAsync()Blazor服务器中未加载数据_C#_Asp.net Core_Blazor - Fatal编程技术网

C# OnAfterRenderAsync()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.

这里我有blazor服务器应用程序,我正在尝试删除角色,删除后我想再次加载角色列表并显示已删除的消息。

但问题是删除角色后会显示删除消息,但不会再次加载角色列表。

下面是我所做的

劳力士剃须刀

@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;
            }
        }
    }