【发布时间】:2021-05-04 06:45:40
【问题描述】:
我已经从 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:\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()
【问题讨论】:
-
您的
RoleClaims似乎是null。由于您无法在null上执行迭代,因此您看到的是object reference error。为什么不放置一个断点,看看permissionDto.RoleClaims是否有任何值可以迭代? -
我不明白为什么。但我只是添加了这个检查行@if (permissionDto.RoleClaims != null) 然后它就可以工作了
标签: null blazor blazor-webassembly