Błąd NullReferenceException

0

Dzień dobry,
piszę sobie aplikacje w Blazor z ASP.NET Core, która pobiera mi dane z API.
Po uruchomieniu aplikacji poniższych kod wykonuje się poprawnie.

 Uzytkownicy[] ListaUzytkownikow;
 
    protected override async Task OnInitializedAsync()
    {

        ListaUzytkownikow = await baza.PobierzUzytkownikow();

        foreach (var Tablica in ListaUzytkownikow)
        {
            Console.WriteLine(Tablica.imie);

        }

    }
  

screenshot-20230425123743.pngNa
Natomiast gdy umieszczę foreach w tym samym pliku tylko w sekcji poza code.

   <MudSelect T="int" Label="LOGIN:"HelperText="Pro" Variant="Variant.Outlined" AnchorOrigin="Origin.BottomCenter" Style="padding-bottom:10px" @bind-Value="@UzytkownikZaznaczony">
            @foreach (var Tablica in ListaUzytkownikow)
                {
                 <MudSelectItem Value="@Tablica.id"> @Tablica.imie</MudSelectItem> 
                }        
            
            </MudSelect>

tu wywala mi błąd:

NullReferenceException: Object reference not set to an instance of an object.


    Rejestr_Wylegów_NET.Pages.Oknologowania.Oknologowania.<BuildRenderTree>b__0_9(RenderTreeBuilder __builder4) in Oknologowania.razor

                @foreach (var Tablica in ListaUzytkownikow)

Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder.AddContent(int sequence, RenderFragment fragment)
1

Pętla próbuje się wykonać zanim obiekt zostanie przypisany? To samo byś miał w działającym przykładzie jakbyś go wyrzucil poza OnInitialized

5

To jest By Design, chodzi o to żeby strona wyrenderowala się zanim skończy się OnInitilizedAsync. Żeby użytkownik nie widział pustej strony.

Zmień:

Uzytkownicy[] ListaUzytkownikow = new Użytkownicy[0];

Wpierw komponent wyrenderuje się z pustą tablicą, a potem z właściwą listą.

1

A jeszcze lepiej przypisz tablicy null a cały mud select daj w

if(Tablica == null){
<p>wait</p> // jakiś kręciołek oczekiwania
} else{
<MudSelect...
}

Albo jakiś bool LoadingData zamiast/oprócz nullowania tablicy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.