So if I run the following code in my Blazor WASM application with MudBlazor.
<MudSelect T="int?" @bind-Value="_registerProfileViewModel.DayOfBirth" Label="Day:" Variant="Variant.Outlined">
@for (var day = 1; day <= 31; day++)
{
<MudSelectItem T="int?" Value="@day">@day</MudSelectItem>
}
</MudSelect>
I get a select box with 31 options that are all 32. I am not sure what I am doing wrong.
EDIT I can do the following, but I want to make sure I am not doing something incorrectly.
<MudSelect T="int?" @bind-Value="_registerProfileViewModel.DayOfBirth" Label="Day:" Variant="Variant.Outlined">
@for (var day = 1; day <= 31; day++)
{
var number = day;
<MudSelectItem T="int?" Value="@number">@number</MudSelectItem>
}
</MudSelect>
You use a variable day
that is later updated (once for each iteration of the loop). To fix this add a local variable inside the loop and use that instead.
<MudSelect T="int?" @bind-Value="_registerProfileViewModel.DayOfBirth" Label="Day:" Variant="Variant.Outlined">
@for (var day = 1; day <= 31; day++)
{
var localDay = day;
<MudSelectItem T="int?" Value="@localDay">@localDay</MudSelectItem>
}