CheckboxList
Das CheckboxList-EditorTemplate rendert eine Gruppe von Checkboxen für eine
Mehrfachauswahl. Der Wert ist eine IEnumerable<int> der ausgewählten Ids; die
Optionen kommen über [AdditionalMetadata("Selection", ...)]; Einbindung über
[UIHint("CheckboxList")]. Die Ausrichtung der Checkboxen (nebeneinander oder
nach unten) steuert [AdditionalMetadata("Direction", FlexDirection.Column)].
CheckboxList (Standard, nebeneinander)
Gruppe von Checkboxen (IEnumerable<int>); ohne Angabe werden die Einträge nebeneinander ausgerichtet.
@model CheckboxListBeispielViewModel
<form class="fmh-demo-form">
@Html.EditorFor(m => m.Auswahl)
</form>
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using FMH.Komponente.Basis.Ui.Controls;
using FMH.Komponente.Basis.Ui.Validation.DataAnnotation;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
public class CheckboxListBeispielViewModel
{
[Display(Name = "Interessen")]
[UIHint("CheckboxList")]
[AdditionalMetadata("Selection", nameof(Interessen))]
[AdditionalMetadata("Direction", FlexDirection.Row)]
public IEnumerable<int> Auswahl { get; set; } = new[] { 1, 3 };
public IEnumerable<SelectListItem> Interessen { get; } = new List<SelectListItem>
{
new ("Sport", "1"),
new ("Musik", "2"),
new ("Reisen", "3"),
};
}
}
Darstellung
Das CheckboxList-EditorTemplate rendert eine Gruppe von Checkboxen für eine Mehrfachauswahl. Der Wert ist eine IEnumerable<int> der ausgewählten Ids; die Optionen kommen über [AdditionalMetadata("Selection", nameof(...))] (die SelectListItem-Werte sind die Ids als Text).
[Display(Name = "Interessen")]
[UIHint("CheckboxList")]
[AdditionalMetadata("Selection", nameof(Interessen))]
public IEnumerable<int> Auswahl { get; set; }
public IEnumerable<SelectListItem> Interessen { get; } = new List<SelectListItem>
{
new("Sport", "1"), new("Musik", "2"), new("Reisen", "3"),
};
Voraussetzung: registrierter AdditionalMetadataProvider.
Weitere Konfigurationen
| Konfiguration | Wirkung |
|---|---|
[AdditionalMetadata("GroupLabel", false)] |
Blendet das Gruppen-Label aus (Standard: eingeblendet) |
[AdditionalMetadata("Direction", FlexDirection.Column)] |
Anordnung der Checkboxen (Zeile/Spalte), siehe unten |
CheckboxList untereinander
Ausrichtung nach unten über [AdditionalMetadata("Direction", FlexDirection.Column)] – die Checkboxen stehen untereinander.
@model CheckboxListSpalteBeispielViewModel
<form class="fmh-demo-form">
@Html.EditorFor(m => m.Auswahl)
</form>
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using FMH.Komponente.Basis.Ui.Controls;
using FMH.Komponente.Basis.Ui.Validation.DataAnnotation;
using Microsoft.AspNetCore.Mvc.Rendering;
namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
public class CheckboxListSpalteBeispielViewModel
{
[Display(Name = "Interessen")]
[UIHint("CheckboxList")]
[AdditionalMetadata("Selection", nameof(Interessen))]
[AdditionalMetadata("Direction", FlexDirection.Column)]
public IEnumerable<int> Auswahl { get; set; } = new[] { 1, 3 };
public IEnumerable<SelectListItem> Interessen { get; } = new List<SelectListItem>
{
new ("Sport", "1"),
new ("Musik", "2"),
new ("Reisen", "3"),
};
}
}
Darstellung
Standardmässig werden die Checkboxen nebeneinander ausgerichtet (FlexDirection.Row). Mit [AdditionalMetadata("Direction", FlexDirection.Column)] richtet das Template sie nach unten aus – jede Checkbox steht auf einer eigenen Zeile.
[Display(Name = "Interessen")]
[UIHint("CheckboxList")]
[AdditionalMetadata("Selection", nameof(Interessen))]
[AdditionalMetadata("Direction", FlexDirection.Column)]
public IEnumerable<int> Auswahl { get; set; }
FlexDirection liegt in FMH.Komponente.Basis.Ui.Controls.
| Wert | Wirkung |
|---|---|
FlexDirection.None |
Wie Row (Standard, keine Angabe) |
FlexDirection.Row |
Checkboxen nebeneinander – CSS-Klasse fmh-flex-direction-row |
FlexDirection.Column |
Checkboxen untereinander – CSS-Klasse fmh-flex-direction-column |
Das Gruppen-Label (GroupLabel) ist Teil desselben Flex-Containers: bei Column steht es über den Checkboxen, bei Row in derselben Zeile.