Select
Displays a list of options for the user to pick from
<dui-select>
<option value="">-- Select cabin class --</option>
<option value="economy">Economy</option>
<option value="premium-economy">Premium Economy</option>
<option value="business">Business</option>
<option value="first">First</option>
</dui-select>Usage
<dui-select>
<option value="...">...</option>
</dui-select>Examples
Model binding
The dui-select Tag Helper has full support for ASP.NET Core model binding using the asp-for and asp-items attributes. When using model binding, DuneUI will automatically wrap the select inside a Field with the correct label, description, and placeholder text derived from data attributes. You can opt out of this behavior by setting the render-field attribute to false
<dui-select asp-for="CabinClass" asp-items="@Html.GetEnumSelectList<CabinClass>()">
</dui-select>public class BookingFormModel
{
[Display(
Name = "Cabin Class",
Description = "Higher classes offer more legroom, priority boarding, and flexible refund policies."
)]
public CabinClass CabinClass { get; set; }
}Model binding validation
When using model binding, validation errors from Model state are displayed correctly.
<dui-select asp-for="CabinClass" asp-items="@Html.GetEnumSelectList<CabinClass>()">
<option value="">-- Select cabin class --</option>
</dui-select>public class BookingFormValidationModel
{
[Display(
Name = "Cabin Class",
Description = "Higher classes offer more legroom, priority boarding, and flexible refund policies."
)]
[Required(ErrorMessage = "Please select a valid cabin class")]
public CabinClass? CabinClass { get; set; }
}With Field
If you are not using model binding, you can use the various Field Tag Helpers to wrap your select inside a field.
<dui-field>
<dui-field-label for="native-select-cabin-class">Cabin Class</dui-field-label>
<dui-select id="native-select-cabin-class">
<option value="">-- Select cabin class --</option>
<option value="economy">Economy</option>
<option value="premium-economy">Premium Economy</option>
<option value="business">Business</option>
<option value="first">First</option>
</dui-select>
<dui-field-description>Higher classes offer more legroom, priority boarding, and flexible refund policies.</dui-field-description>
</dui-field>Implicit Field
You can also implicitly wrap the select inside a Field using the shorthand syntax and setting the label and description attributes.
<dui-select label="Cabin Class"
description="Higher classes offer more legroom, priority boarding, and flexible refund policies.">
<option value="">-- Select cabin class --</option>
<option value="economy">Economy</option>
<option value="premium-economy">Premium Economy</option>
<option value="business">Business</option>
<option value="first">First</option>
</dui-select>Manual Validation
If you're not using ASP.NET Core model binding, you can manually indicate validation errors by setting the aria-invalid attribute to true. This will display a red border around the select.
The error message can be displayed using either a dui-field-error Tag Helper (when using explicit fields) or the error attribute (when using implicit fields).
<dui-field>
<dui-field-label for="native-select-cabin-class">Cabin Class</dui-field-label>
<dui-select id="native-select-cabin-class" aria-invalid="true">
<option value="">-- Select cabin class --</option>
<option value="economy">Economy</option>
<option value="premium-economy">Premium Economy</option>
<option value="business">Business</option>
<option value="first">First</option>
</dui-select>
<dui-field-error>Please select a valid cabin class</dui-field-error>
<dui-field-description>Higher classes offer more legroom, priority boarding, and flexible refund policies.</dui-field-description>
</dui-field><dui-select label="Cabin Class"
description="Higher classes offer more legroom, priority boarding, and flexible refund policies."
error="Please select a valid cabin class"
aria-invalid="true">
<option value="">-- Select cabin class --</option>
<option value="economy">Economy</option>
<option value="premium-economy">Premium Economy</option>
<option value="business">Business</option>
<option value="first">First</option>
</dui-select>Sizes
Use the size attribute to control the size of the select.
<div class="flex flex-col gap-4">
<dui-select size="SelectSize.Small">
<option value="">-- Select cabin class --</option>
<option value="economy">Economy</option>
<option value="premium-economy">Premium Economy</option>
<option value="business">Business</option>
<option value="first">First</option>
</dui-select>
<dui-select>
<option value="">-- Select cabin class --</option>
<option value="economy">Economy</option>
<option value="premium-economy">Premium Economy</option>
<option value="business">Business</option>
<option value="first">First</option>
</dui-select>
</div>Groups
<dui-select>
<option value="">-- Select your program --</option>
<optgroup label="Star Alliance">
<option value="united">United MileagePlus</option>
<option value="lufthansa">Lufthansa Miles & More</option>
<option value="air-canada">Air Canada Aeroplan</option>
<option value="ana">ANA Mileage Club</option>
<option value="singapore">Singapore Airlines KrisFlyer</option>
</optgroup>
<optgroup label="Oneworld">
<option value="american">American Airlines AAdvantage</option>
<option value="british">British Airways Executive Club</option>
<option value="cathay">Cathay Pacific Asia Miles</option>
<option value="qantas">Qantas Frequent Flyer</option>
<option value="qatar">Qatar Airways Privilege Club</option>
</optgroup>
<optgroup label="SkyTeam">
<option value="delta">Delta SkyMiles</option>
<option value="air-france">Air France-KLM Flying Blue</option>
<option value="korean">Korean Air SKYPASS</option>
<option value="aeromexico">Aeromexico Club Premier</option>
<option value="virgin-atlantic">Virgin Atlantic Flying Club</option>
</optgroup>
<optgroup label="Other Partners">
<option value="emirates">Emirates Skywards</option>
<option value="etihad">Etihad Guest</option>
<option value="jetblue">JetBlue TrueBlue</option>
</optgroup>
</dui-select>Disabled
<dui-select disabled>
<option value="">Disabled</option>
<option value="apple">Apple</option>
<option value="banana">Banana</option>
<option value="blueberry">Blueberry</option>
</dui-select>