Search code examples
blazor-server-sidemudblazor

Trying to understand how to use MudSelect with a List<>


In my page I have this:

              <MudSelect T="string" MultiSelection="false" @bind-Value=@Gebruiker.KantoorCode Label="@Txt["rsKantoorCode"]" Variant="Variant.Text" AnchorOrigin="Origin.BottomCenter">
                <MudSelectItem Value="@Txt["rsKies"]">@Txt["rsKies"]</MudSelectItem>
                @foreach (var kc in KantoorCodeList)
                  {
                    <MudSelectItem T="string" Value="@kc.Key">@kc.Name</MudSelectItem>
                  }
              </MudSelect>

Here is "KantoorCodeList" a List and GenericListItem is a class with properties. Both "kc.Key" and "kc.Name" are a nullable string. Also "@Gebruiker.KantoorCode" is a nullable string.

Everytime the page is rendered I get this error:

System.ObjectDisposedException: Cannot access a disposed object. at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder1.ThrowObjectDisposedException() at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder1.GrowBuffer(Int32 desiredCapacity) at Microsoft.AspNetCore.Components.RenderTree.ArrayBuilder1.Append(T[] source, Int32 startIndex, Int32 length) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext& diffContext, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext& diffContext, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.InsertNewFrame(DiffContext& diffContext, Int32 newFrameIndex) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.AppendDiffEntriesForRange(DiffContext& diffContext, Int32 oldStartIndex, Int32 oldEndIndexExcl, Int32 newStartIndex, Int32 newEndIndexExcl) at Microsoft.AspNetCore.Components.RenderTree.RenderTreeDiffBuilder.ComputeDiff(Renderer renderer, RenderBatchBuilder batchBuilder, Int32 componentId, ArrayRange1 oldTree, ArrayRange`1 newTree) at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder, RenderFragment renderFragment, Exception& renderFragmentException) at Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue()

What am I doing wrong here?

[edit]

I have created a TryMudBlazor page here

There the dropdown is shown, but there is a red error bar below it. On my page I don't get to see the dropdown, it just stops working.

[edit2]

Ok, this is weird. If I remove the MudSelectItem that is before the ForEach, it works with out a problem.

I don't get it...

[edit3]

This seems to work:

<MudSelectItem T="string" Value="@($"{0}")">Select one</MudSelectItem>

Still don't get it....


Solution

  • Figured it out (see question edits) Thanks to Dimitris for confirming that what I figured out is correct.