ComboboxList
Das ComboboxList-EditorTemplate rendert ein durchsuchbares Auswahlfeld (Single-Select).
Die Auswahlliste kommt wie bei der DropdownList aus einer Eigenschaft, deren Name über
[AdditionalMetadata("Selection", ...)] angegeben wird; Einbindung über
[UIHint("ComboboxList")]. Ob ein leerer Platzhalter-Eintrag gerendert wird, steuert
[EmptyEntry(false)].
ComboboxList ohne leeren Eintrag
[EmptyEntry(false)] unterdrückt den leeren Platzhalter – die Liste beginnt beim ersten Eintrag.
@model ComboboxListOhneLeereintragBeispielViewModel
<form class="fmh-demo-form">
@Html.EditorFor(m => m.Land)
</form>
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using FMH.Komponente.Basis.Ui.Validation.DataAnnotation;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
public class ComboboxListOhneLeereintragBeispielViewModel
{
public IEnumerable<SelectListItem> Laender { get; } = new List<SelectListItem>
{
new ("Schweiz", "CH"),
new ("Deutschland", "DE"),
new ("Österreich", "AT"),
};
// Ohne Vorbelegung: mit [EmptyEntry(false)] gibt es keinen leeren Eintrag,
// die Liste startet direkt beim ersten Eintrag.
[Display(Name = "Land (durchsuchbar)")]
[UIHint("ComboboxList")]
[AdditionalMetadata("Selection", nameof(Laender))]
[EmptyEntry(false)]
public string Land { get; set; }
}
}
Darstellung
Ohne weitere Angabe rendert das Template als erste Option einen leeren Eintrag (<option value=""></option>) – der Platzhalter für „nichts ausgewählt". [EmptyEntry(false)] unterdrückt ihn; die Liste beginnt dann direkt beim ersten echten Eintrag.
[Display(Name = "Land (durchsuchbar)")]
[UIHint("ComboboxList")]
[AdditionalMetadata("Selection", nameof(Laender))]
[EmptyEntry(false)]
public string Land { get; set; }
EmptyEntry liegt in FMH.Komponente.Basis.Ui.Validation.DataAnnotation und wird über ModelMetadata.HasEmptyEntry() reflektiv am Property gelesen – also ohne AdditionalMetadataProvider.
| Angabe | Wirkung |
|---|---|
| kein Attribut | leerer Eintrag wird gerendert (Standard) |
[EmptyEntry] / [EmptyEntry(true)] |
leerer Eintrag wird gerendert |
[EmptyEntry(false)] |
kein leerer Eintrag |
Zu beachten: Ohne leeren Eintrag gibt es keinen „nichts ausgewählt"-Zustand – ist der Wert nicht vorbelegt, zeigt die Combobox den ersten Eintrag an und dieser wird beim Absenden übermittelt. Für Pflichtfelder mit [Required] daher den leeren Eintrag stehen lassen, damit die Validierung greift.
Dasselbe Attribut wirkt gleich bei DropdownList und MultiselectList.
ComboboxList (Standard, mit leerem Eintrag)
Durchsuchbares Auswahlfeld (Single-Select); ohne Angabe wird ein leerer Platzhalter-Eintrag gerendert.
@model ComboboxListBeispielViewModel
<form class="fmh-demo-form">
@Html.EditorFor(m => m.Land)
</form>
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using FMH.Komponente.Basis.Ui.Validation.DataAnnotation;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
public class ComboboxListBeispielViewModel
{
public IEnumerable<SelectListItem> Laender { get; } = new List<SelectListItem>
{
new ("Schweiz", "CH"),
new ("Deutschland", "DE"),
new ("Österreich", "AT"),
};
[Display(Name = "Land (durchsuchbar)")]
[UIHint("ComboboxList")]
[AdditionalMetadata("Selection", nameof(Laender))]
[EmptyEntry(true)]
public string Land { get; set; } = "CH";
}
}
Darstellung
Das ComboboxList-EditorTemplate rendert ein durchsuchbares Auswahlfeld (Single-Select). Die Auswahlliste wird wie bei der DropdownList über eine IEnumerable<SelectListItem>-Eigenschaft bereitgestellt, deren Name über [AdditionalMetadata("Selection", nameof(...))] angegeben wird.
[Display(Name = "Land")]
[UIHint("ComboboxList")]
[AdditionalMetadata("Selection", nameof(Laender))]
public string Land { get; set; }
public IEnumerable<SelectListItem> Laender { get; } = new List<SelectListItem> { /* ... */ };
Voraussetzung: registrierter AdditionalMetadataProvider.
Weitere Konfigurationen
| Konfiguration | Wirkung |
|---|---|
[EmptyEntry(false)] |
Unterdrückt den leeren Platzhalter-Eintrag, siehe unten |
[AdditionalMetadata("FavSelection", nameof(...))] |
Favoriten-Liste |
[Required] / [RequiredIf] |
Pflichtauswahl |