Я новичок в C# и Blazor WASM в целом, и довольно долго боролся с этим.
У меня есть родительский компонент «Parent.razor» и дочерний компонент «Child.razor»
У родителей, помимо всего прочего, HTML, у меня также есть дочерний тег. Таким образом, это выглядит примерно так (например)
Parent.razor
@page "/machines"
<h1>Machine Information<h1>
<child></child>
@code
{
}
Теперь в дочернем компоненте есть foreach l oop, который выполняет итерацию каждого элемента в списке (типы машин), если типы машин взяты из указанного состояния c list, все работает хорошо. Снимок экрана для справки, я могу получить раскрывающийся список, который мне нужен
Код ниже.
Child.razor
@using Namespace.Shared.Models
@using Blazorise
@inject HttpClient Http
<select>
@foreach (var machinetype in machinetypes)
{
<option value="@machinetype.MachineTypeId">@machinetype.MachineTypeName</option>
}
</select>
@code {
public int amachinetypeid { get; set; }
//This works
MachineType[] machinetypes = new MachineType[]
{
new MachineType{MachineTypeName="TypeX"},
new MachineType{MachineTypeName="TypeY"}
};
}
Но когда я пытаюсь использовать веб-API (который также возвращает list), это не работает. Страница загружается бесконечно, и я столкнусь с ошибкой. Код ниже.
Child.razor
@using Namespace.Shared.Models
@using Blazorise
@inject HttpClient Http
<select>
@foreach (var machinetype in machinetypes)
{
<option value="@machinetype.MachineTypeId">@machinetype.MachineTypeName</option>
}
</select>
@code {
public int amachinetypeid { get; set; }
public MachineType[] machinetypes;
//This works
//MachineType[] machinetypes = new MachineType[]
//{
// new MachineType{MachineTypeName="TypeX"},
// new MachineType{MachineTypeName="TypeY"}
//};
//This does not work
protected override async Task OnInitializedAsync()
{
machinetypes = await Http.GetJsonAsync<MachineType[]>("api/machinetype/");
}
}
Быстрая проверка моего веб-API, доступ к нему напрямую возвращает мне это. Так что все работает нормально. Щелкните здесь, чтобы увидеть снимок экрана с результатами веб-API
Может ли кто-нибудь посоветовать, что я сделал не так? И нужно ли для этого создать инъекцию зависимости? Если да, может ли кто-нибудь указать мне правильное направление?
Заранее спасибо.