RadioList

Das RadioList-EditorTemplate rendert eine Gruppe von Radio-Buttons. Die Optionen kommen über [AdditionalMetadata("Selection", ...)]; Einbindung über [UIHint("RadioList")]. Die Ausrichtung der Radio-Buttons (nebeneinander oder nach unten) steuert [AdditionalMetadata("Direction", FlexDirection.Column)].

RadioList (Standard, nebeneinander)

Gruppe von Radio-Buttons; ohne Angabe werden die Einträge nebeneinander ausgerichtet.

@model RadioListBeispielViewModel

<form class="fmh-demo-form">
    @Html.EditorFor(m => m.Anrede)
</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 RadioListBeispielViewModel
    {
        [Display(Name = "Anrede")]
        [UIHint("RadioList")]
        [AdditionalMetadata("Selection", nameof(Anreden))]
        [AdditionalMetadata("Direction", FlexDirection.Row)]
        public string Anrede { get; set; } = "f";

        public IEnumerable<SelectListItem> Anreden { get; } = new List<SelectListItem>
                                                              {
                                                                  new ("Frau", "f"),
                                                                  new ("Herr", "m"),
                                                                  new ("Keine Angabe", "x"),
                                                              };
    }
}

Darstellung

Das RadioList-EditorTemplate rendert eine Gruppe von Radio-Buttons (Single-Select). Die Optionen kommen über [AdditionalMetadata("Selection", nameof(...))].

[Display(Name = "Anrede")]
[UIHint("RadioList")]
[AdditionalMetadata("Selection", nameof(Anreden))]
public string Anrede { get; set; }

public IEnumerable<SelectListItem> Anreden { get; } = new List<SelectListItem> { /* ... */ };

Voraussetzung: registrierter AdditionalMetadataProvider.

Weitere Konfigurationen

Konfiguration Wirkung
[AdditionalMetadata("GroupLabel", false)] Blendet das Gruppen-Label aus (Standard: eingeblendet)
[AdditionalMetadata("Direction", FlexDirection.Column)] Anordnung der Radio-Buttons (Zeile/Spalte), siehe unten
[Required] / [RequiredIf] Pflichtauswahl

RadioList untereinander

Ausrichtung nach unten über [AdditionalMetadata("Direction", FlexDirection.Column)] – die Radio-Buttons stehen untereinander.

@model RadioListSpalteBeispielViewModel

<form class="fmh-demo-form">
    @Html.EditorFor(m => m.Anrede)
</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 RadioListSpalteBeispielViewModel
    {
        [Display(Name = "Anrede")]
        [UIHint("RadioList")]
        [AdditionalMetadata("Selection", nameof(Anreden))]
        [AdditionalMetadata("Direction", FlexDirection.Column)]
        public string Anrede { get; set; } = "f";

        public IEnumerable<SelectListItem> Anreden { get; } = new List<SelectListItem>
                                                              {
                                                                  new ("Frau", "f"),
                                                                  new ("Herr", "m"),
                                                                  new ("Keine Angabe", "x"),
                                                              };
    }
}

Darstellung

Standardmässig werden die Radio-Buttons nebeneinander ausgerichtet (FlexDirection.Row). Mit [AdditionalMetadata("Direction", FlexDirection.Column)] richtet das Template sie nach unten aus – jeder Radio-Button steht auf einer eigenen Zeile.

[Display(Name = "Anrede")]
[UIHint("RadioList")]
[AdditionalMetadata("Selection", nameof(Anreden))]
[AdditionalMetadata("Direction", FlexDirection.Column)]
public string Anrede { get; set; }

FlexDirection liegt in FMH.Komponente.Basis.Ui.Controls.

Wert Wirkung
FlexDirection.None Wie Row (Standard, keine Angabe)
FlexDirection.Row Radio-Buttons nebeneinander – CSS-Klasse fmh-flex-direction-row
FlexDirection.Column Radio-Buttons untereinander – CSS-Klasse fmh-flex-direction-column

Das Gruppen-Label (GroupLabel) ist Teil desselben Flex-Containers: bei Column steht es über den Radio-Buttons, bei Row in derselben Zeile.