Textbox (DisplayTemplate)

Konfigurationen des TextboxDisplay-DisplayTemplates. Es stellt einen Wert schreibgeschützt als Schlüssel/Wert-Paar dar (Einbindung über @Html.DisplayFor(...) mit [UIHint("TextboxDisplay")]). Jedes Beispiel zeigt in Tabs die cshtml und das ViewModel; darunter die Darstellung mit der aufklappbaren Rubrik Anleitung.

Textbox horizontal

Label und Wert nebeneinander über [DisplayAlignment(Alignment.Horizontal)].

@model DisplayTextboxHorizontalBeispielViewModel

@Html.DisplayFor(m => m.Vorname)
using System.ComponentModel.DataAnnotations;
using FMH.Komponente.Basis.Ui.Validation.DataAnnotation;

namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
    public class DisplayTextboxHorizontalBeispielViewModel
    {
        [Display(Name = "Vorname")]
        [UIHint("TextboxDisplay")]
        [DisplayAlignment(Alignment.Horizontal)]
        public string Vorname { get; set; } = "Hans Muster";
    }
}

Darstellung

Vorname
Hans Muster

Über [DisplayAlignment(Alignment.Horizontal)] werden Label und Wert nebeneinander dargestellt (CSS-Klasse siwf-display-horizontal) statt im Standard untereinander.

[Display(Name = "Vorname")]
[UIHint("TextboxDisplay")]
[DisplayAlignment(Alignment.Horizontal)]
public string Vorname { get; set; }

Ohne das Attribut gilt Alignment.Vertical (Standard). Das Attribut wird zur Renderzeit direkt über die Model-Metadaten (ToDisplayAlignment()) gelesen — kein zusätzlicher Provider nötig.

Textbox mit Hilfetext

Info-Icon mit Tooltip neben dem Label über [HelpText].

@model DisplayTextboxHilfetextBeispielViewModel

@Html.DisplayFor(m => m.Vorname)
using System.ComponentModel.DataAnnotations;
using FMH.Komponente.Basis.Ui.Validation.DataAnnotation;

namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
    public class DisplayTextboxHilfetextBeispielViewModel
    {
        [Display(Name = "Vorname")]
        [UIHint("TextboxDisplay")]
        [HelpText(Name = "Der amtliche Vorname gemäss Ausweis.")]
        public string Vorname { get; set; } = "Hans Muster";
    }
}

Darstellung

Vorname info
Hans Muster

Über [HelpText] erscheint neben dem Label ein Info-Icon; der hinterlegte Text wird als Tooltip angezeigt. Der Text kommt direkt aus Name oder – mit gesetztem ResourceType – lokalisiert aus einer Ressource.

[Display(Name = "Vorname")]
[UIHint("TextboxDisplay")]
[HelpText(Name = "Der amtliche Vorname gemäss Ausweis.")]
public string Vorname { get; set; }

Textbox (Standard, vertikal)

Schreibgeschützte Darstellung eines Textwerts als Schlüssel/Wert-Paar; Label über dem Wert.

@model DisplayTextboxBeispielViewModel

@Html.DisplayFor(m => m.Vorname)
using System.ComponentModel.DataAnnotations;
using FMH.Komponente.Basis.Ui.Validation.DataAnnotation;

namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
    public class DisplayTextboxBeispielViewModel
    {
        [Display(Name = "Vorname")]
        [UIHint("TextboxDisplay")]
        [DisplayAlignment(Alignment.Vertical)]
        public string Vorname { get; set; } = "Hans Muster";
    }
}

Darstellung

Vorname
Hans Muster

Das TextboxDisplay-DisplayTemplate (Views/Shared/DisplayTemplates/TextboxDisplay.cshtml aus FMH.Komponente.Basis) stellt einen Textwert schreibgeschützt als Schlüssel/Wert-Paar dar — Label und Wert, ohne Eingabefeld. Eingebunden wird es über den ASP.NET-Core-Standardmechanismus Html.DisplayFor(...) in Kombination mit [UIHint("TextboxDisplay")] am Modell:

@Html.DisplayFor(m => m.Vorname)
[Display(Name = "Vorname")]
[UIHint("TextboxDisplay")]
public string Vorname { get; set; }

Standardmässig steht das Label über dem Wert (vertikal). Der Anzeigename kommt aus [Display(Name = "…")].

Weitere Konfigurationen

Attribut Wirkung
[Display(Name = "…")] Setzt das Label des Schlüssel/Wert-Paars
[DisplayAlignment(Alignment.Horizontal)] Label und Wert nebeneinander statt untereinander (siehe Beispiel «Textbox horizontal»)
[HelpText(Name = "…")] Info-Icon mit Tooltip neben dem Label (siehe Beispiel «Textbox mit Hilfetext»)
[AdditionalMetadata(DisplayConst.Bold, true)] Stellt den Wert fett dar — Voraussetzung: AdditionalMetadataProvider als IDisplayMetadataProvider in den MvcOptions registriert (sonst wirkungslos)
[AdditionalMetadata(DisplayConst.ValueColorClass, "…")] Hinterlegt den Wert farblich (bg-light) — gleiche Provider-Voraussetzung wie Bold