Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.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
Null Blazor获取空值异常_Null_Blazor_Blazor Webassembly - Fatal编程技术网

Null Blazor获取空值异常

Null Blazor获取空值异常,null,blazor,blazor-webassembly,Null,Blazor,Blazor Webassembly,我已经从webapi获得了数据。但它仍然显示空值异常。它应该在渲染之前获取数据。还有一个语句已经检查空了。它通过了,但仍然是错误的 我已经从webapi获得了数据。但它仍然显示空值异常。它应该在渲染之前获取数据。还有一个语句已经检查空了。它通过了,但仍然是错误的 剃须刀组件代码 @page "/rolepermission/{roleId}" @inject HttpClient client @inject IJSRuntime js <h3>Role

我已经从webapi获得了数据。但它仍然显示空值异常。它应该在渲染之前获取数据。还有一个语句已经检查空了。它通过了,但仍然是错误的

我已经从webapi获得了数据。但它仍然显示空值异常。它应该在渲染之前获取数据。还有一个语句已经检查空了。它通过了,但仍然是错误的

剃须刀组件代码

    @page "/rolepermission/{roleId}"
@inject HttpClient client
@inject IJSRuntime js

<h3>Roles</h3>
<small>Add as many role as you wish.</small>
<br />
<div class="card">
    <div id="viewAll" class="card-body table-responsive">
            <input asp-for="@permissionDto.RoleId" type="hidden" />
            <table class="table table-striped" id="permissionTable">
                <thead>
                    <tr>
                        <th>
                            Type
                        </th>
                        <th>
                            Permission
                        </th>
                        <th>
                            Status
                        </th>
                    </tr>
                </thead>
                <tbody>
                    @if (permissionDto != null)
                    {
                        @foreach (RoleClaimsDto roleClaimsDto in permissionDto.RoleClaims)
                        {
                            <tr>
                                <td>
                                    <input @bind="roleClaimsDto.Type" type="hidden" />
                                    @roleClaimsDto.Type
                                </td>
                                <td>
                                    <input @bind="@roleClaimsDto.Value" type="hidden" />
                                    @roleClaimsDto.Value
                                </td>
                                <td>
                                    <div class="form-check m-1">
                                        <input @bind="roleClaimsDto.Selected" class="form-check-input" />
                                    </div>
                                </td>
                            </tr>
                        }

                    }
                </tbody>
            </table>
            <div class="col-sm-12" style="padding: 20px 20px 0px 0px">
                <button type="submit" id="save" class="btn btn-success">
                    <i class="fa fa-check"></i>
                    Save
                </button>
            </div>
       </div>
</div>



@code {
    [Parameter]
    public string roleId { get; set; }

    PermissionDto permissionDto = new PermissionDto();

    protected override async Task OnInitializedAsync()
    {
        permissionDto = await client.GetFromJsonAsync<PermissionDto>("api/permission/allPermission/" + roleId);
    }

    async Task AddNewRole()
    {
        //    await client.PostAsJsonAsync("api/roles", roleRequest);
        await OnInitializedAsync();
    }
}
@page”/rolepermission/{roleId}
@注入HttpClient客户端
@注入IJSRuntime js
角色
添加任意多的角色。

类型 许可 地位 @if(permissionDto!=null) { @foreach(RoleClaims至RoleClaims至许可的RoleClaims至RoleClaims) { @roleclaimsdo.Type @roleclaimsdo.Value } } 拯救 @代码{ [参数] 公共字符串roleId{get;set;} PermissionDto PermissionDto=新的PermissionDto(); 受保护的重写异步任务OnInitializedAsync() { permissionDto=wait client.GetFromJsonAsync(“api/permission/allPermission/”+roleId); } 异步任务AddNewRole() { //等待client.postsjsonasync(“api/角色”,roleRequest); 等待OnInitializedAsync(); } }
这是访问路由url时产生的异常

    blazor.webassembly.js:1 crit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
      Unhandled exception rendering component: Object reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
   at PermissionBlazorApp.Client.Pages.User.RolePermissions.BuildRenderTree(RenderTreeBuilder __builder) in C:\Users\Chhin Sras\source\repos\PermissionBlazorApp\PermissionBlazorApp\Client\Pages\User\RolePermissions.razor:line 28
   at Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(RenderTreeBuilder builder)
   at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry renderQueueEntry)
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()
blazor.webassembly.js:1 crit:Microsoft.AspNetCore.Components.webassembly.Rendering.WebAssemblyRenderer[100]
未处理的异常呈现组件:对象引用未设置为对象的实例。
System.NullReferenceException:对象引用未设置为对象的实例。
在C:\Users\Chhin Sras\source\repos\PermissionBlazorApp\PermissionBlazorApp\Client.Pages.User.RolePermissions.BuildRenderTree(RenderTreeBuilder\uu builder)中的PermissionBlazorApp.Client.Pages.User.RolePermissions.BuildRenderTree(RenderTreeBuilder\uu builder):第28行
在Microsoft.AspNetCore.Components.ComponentBase.b_u6_0(RenderTreeBuilder)上
在Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder、RenderFragment和RenderFragment)中
位于Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch(RenderQueueEntry RenderQueueEntry)
在Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()中

您的
roleclaimsdo
可能为空,因此像
roleclaimsdo.Type
一样访问它会导致空引用异常

如果您希望在您的可枚举文件中有空对象,那么可以使用


@foreach(RoleClaimsDto roleclaimsdo in permissionDto.RoleClaims.Where(x=>x!=null))

您的
RoleClaims
似乎是
null
。由于您不能在
null
上执行迭代,因此您会看到
对象引用错误
。为什么不放置一个断点,看看
permissionDto.RoleClaims
是否有任何值可以迭代?我不明白为什么。但是我只是添加了这个检查行@if(permissionDto.RoleClaims!=null),然后它就工作了。我不明白为什么。但是我只是添加了这个检查行@if(permissionDto.RoleClaims!=null),然后它就可以工作了是的,添加
@if(permissionDto.RoleClaims!=null)
就像你提到的那样,对空项进行我建议的过滤。不过,您会得到一个额外的嵌套if语句。或者,您也可以执行
@if(permissionDto.RoleClaims==null){continue}