Blazor Get Null Value Exception



我已经从webapi获得了数据。但它仍然显示空值异常。它应该在呈现之前获取数据。也有语句检查null已经。通过了,但仍然出错

我已经从webapi获得数据。但它仍然显示空值异常。它应该在呈现之前获取数据。也有语句检查null已经。通过了,但仍然出错

Razor组件代码

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

这是我访问路由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:UsersChhin SrassourcereposPermissionBlazorAppPermissionBlazorAppClientPagesUserRolePermissions.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()

可能你的roleClaimsDto是空的,所以像roleClaimsDto.Type一样访问它会导致null引用异常。

如果你期望在你的enumerable中有空对象,你可以使用

对它进行迭代。@foreach (RoleClaimsDto roleClaimsDto in permissionDto.RoleClaims.Where(x => x != null))

相关内容

最新更新