Skip to main content

Blazor Enum Input

The Blazor Bootstrap EnumInput component renders a dropdown list from an enumeration (enum), enabling users to select from a predefined set of options. It simplifies data entry by binding directly to enum types and supports customization with sizes.

Blazor Bootstrap: Enum Input Component

Parameters​

NameTypeDefaultRequiredDescriptionAdded Version
DisabledboolfalseGets or sets the disabled state.3.5.0
SizeEnumInputSizeEnumInputSize.NoneGets or sets the size of the input.3.5.0
TextstringnullGets or sets the display text.3.5.0
Valuestring0✔️Gets or sets the value.3.5.0

Methods​

NameReturnsDescriptionAdded Version
Disable()voidDisables the enum input.3.5.0
Enable()voidEnables the enum input.3.5.0

Events​

NameDescriptionAdded Version
ValueChangedThis event fires when the Value property changes.3.5.0
TextChangedThis event fires when the Text property changes.3.5.0

Examples​

How it works​

The EnumInput component displays enum values in a dropdown, allowing users to select from a predefined set of options. Enum labels use DisplayAttribute.GetName() when a DisplayAttribute is present, including resource-backed names, and fall back to the enum member name when no display metadata exists.

Blazor Bootstrap Enum Input Component - How it works
<EnumInput TEnum="Status" @bind-Value="@selectedStatusValue" />
<div class="mb-3">Selected value: @selectedStatusValue</div>

<EnumInput TEnum="Status" @bind-Text="@selectedStatusText" />
<div class="mb-3">Selected text: @selectedStatusText</div>
@using System.ComponentModel.DataAnnotations

@code {
private int selectedStatusValue;
private string? selectedStatusText;

override protected void OnInitialized()
{
selectedStatusValue = (int)Status.Active;
selectedStatusText = StatusLabels.Pending;
}

public enum Status
{
Active,
[Display(Name = "Inactive user")]
Inactive,

[Display(Name = nameof(StatusLabels.Pending), ResourceType = typeof(StatusLabels))]
Pending
}

public static class StatusLabels
{
public static string Pending => "Waiting for review";
}
}

See demo here

Sizes​

The EnumInput component can be rendered in various sizes to fit different UI requirements.

Blazor Bootstrap Enum Input Component - Sizes
<EnumInput TEnum="Status" Class="mb-3" @bind-Value="@value1" />
<EnumInput TEnum="Status" Size="EnumInputSize.Small" Class="mb-3" @bind-Value="@value2" />
<EnumInput TEnum="Status" Size="EnumInputSize.Normal" Class="mb-3" @bind-Value="@value3" />
<EnumInput TEnum="Status" Size="EnumInputSize.Large" @bind-Value="@value5" />
@code {
private int value1 = (int)Status.Pending;
private int value2 = (int)Status.Pending;
private int value3 = (int)Status.Pending;
private int value4 = (int)Status.Pending;
private int value5 = (int)Status.Pending;

public enum Status
{
Active,
Inactive,
Pending
}
}

See demo here

Disabled​

Use the Disabled parameter to disable the EnumInput.

Blazor Bootstrap Enum Input Component - Disable
<EnumInput TEnum="Status" @bind-Value="@value1" Disabled="true" />
@code {
private int value1 = (int)Status.Pending;

public enum Status
{
Active,
Inactive,
Pending
}
}

See demo here

Events​

The EnumInput component supports event callbacks for value and text changes, enabling custom logic when the selection changes.

ValueChanged Event

<EnumInput TEnum="Status" Class="mb-3" Value="@value1" ValueChanged="OnValueChanged" />
<div>Selected value: @value1</div>
@code {
private int value1 = (int)Status.Pending;

private void OnValueChanged(int value)
{
value1 = value;

if (value == (int)Status.Active)
{
// Do something when the value is Active
}
else if (value == (int)Status.Inactive)
{
// Do something when the value is Inactive
}
else if (value == (int)Status.Pending)
{
// Do something when the value is Pending
}
}

public enum Status
{
Active,
Inactive,
Pending
}
}

TextChanged Event

<EnumInput TEnum="Status" Class="mb-3" Text="@text1" TextChanged="OnTextChanged" />
<div>Selected text: @text1</div>
@code {
private string text1 = Status.Pending.ToString();

private void OnTextChanged(string value)
{
text1 = value;

if (value == "Active")
{
// Do something when the text is "Active"
}
else if (value == "Inactive")
{
// Do something when the text is "Inactive"
}
else if (value == "Pending")
{
// Do something when the text is "Pending"
}
}

public enum Status
{
Active,
Inactive,
Pending
}
}

See demo here

Methods​

The EnumInput component can be enabled or disabled dynamically at runtime.

<EnumInput TEnum="Status" Class="mb-3" @bind-Value="@value1" Disabled="isDisabled" />

<Buttons Size="ButtonSize.Small" Class="mt-3">
<Button Color="ButtonColor.Primary" @onclick="EnableInput">Enable</Button>
<Button Color="ButtonColor.Danger" @onclick="DisableInput">Disable</Button>
</Buttons>
@code {
private bool isDisabled = true;
private int value1 = (int)Status.Pending;

private void EnableInput()
{
isDisabled = false;
}

private void DisableInput()
{
isDisabled = true;
}

public enum Status
{
Active,
Inactive,
Pending
}
}

See demo here