【发布时间】:2020-12-24 22:24:35
【问题描述】:
问题
我有一个带有 Identity 的 Blazor WebAssembly 项目。我扩展了 IdentityUser 表并添加了一个 Group 列。我有一个等待列表页面,其中列出了没有任何组的所有用户。在为用户分配新组时,我然后调用RolesController 为用户添加与组同名的角色。问题是当 RolesController 被调用时,传递的用户对象仍然没有组。
代码
WaitingList.razor:
@if (waitingUsers == null)
{
<p> Loading </p>
}
else
{
foreach (AspNetUsers user in waitingUsers)
{
<div class="container">
<div class="row justify-content-start">
<p> isim: @user.FirstName @user.SurName</p>
<select class="form-control"
@bind="user.Group">
<option value="0">---Please select a group---</option>
@foreach (var group in groups)
{
@if (group.Id == groupId)
{
<option selected value="@group.Id"> @group.GroupName </option>
}
else
{
<option value="@group.Id"> @group.GroupName </option>
}
}
</select>
</div>
</div>
}
@if (waitingUsers.Length > 0)
{
<button onclick="@Update(waitingUsers)"> Update </button>
}
}
@code {
AspNetUsers[] waitingUsers;
public int groupId = 0;
private List<Groups> groups = new List<Groups>();
protected override async Task OnInitializedAsync()
{
waitingUsers = await http.GetFromJsonAsync<AspNetUsers[]>("api/AspNetUsers/noGroup");
groups = await http.GetFromJsonAsync<List<Groups>>("api/groups");
}
async Task Update(AspNetUsers[] users)
{
foreach (AspNetUsers user in users)
{
/*
at first version Put method was like this:
await http.PutAsJsonAsync($"api/AspNetUsers/newGroup/{user.Id}", user);
*/
http.PutAsJsonAsync($"api/AspNetUsers/newGroup/{user.Id}", user).Wait();
// route to RolesController
await http.PostAsJsonAsync<AspNetUsers>("AddNewRole", user);
await js.InvokeVoidAsync("alert", $"Updated Successfully!");
}
}
如何确保首先分配用户组?等待方法没有成功。
【问题讨论】:
标签: c# asp.net-core asynchronous blazor