我目前正在使用Blazor WebAssembly,托管的ASP.NET Core,EF / Identity Core。
我想在我的客户端Blazor页面中填充一个国家下拉列表和另一个 users 列表。
Country
很容易,因为它的模型位于\Shared\Models\Country.cs
中。
我正在努力带上UserIdentity
,因为它是Microsoft Identity的一部分,我无法放入\Shared\Models
。因此,编译器无法识别该实体,因此我无法携带其名称空间。
关于如何填充用户下拉菜单的任何想法?
也许创建一个名为\Shared\Models\AppUser.cs
并从UserIdentity
继承的哑类?
还是可以添加对Server项目的引用?
这是示例代码:
@page "/"
@using BlazorApp.Shared.Models
@inject HttpClient Http
<h1>Dropdown Example</h1>
@if (countryList == null || userList == null )
{
<p><em>Loading...</em></p>
}
else
{
<select class="form-control">
<option value="">-- Select Country --</option>
@foreach (var country in countryList)
{
<option value="@country.Id">@country.CountryName</option>
}
</select>
<select class="form-control">
<option value="">-- Select User --</option>
@if (userList != null)
{
@foreach (var user in userList)
{
<option value="@user.Id">@user.UserName</option>
}
}
</select>
}
@functions {
List<Country> countryList = new List<Country>();
List<IdentityUser> userList = new List<IdentityUser>();
protected override async Task OnInitAsync() {
countryList = await Http.GetJsonAsync<List<Country>>("api/country/GetCountryList");
userList = await Http.GetJsonAsync<List<IdentityUser>>("api/user/GetUserList");
}
}