ClassicSidebar Layout

NumberBox

Numerisches Eingabefeld für int, decimal und double – mit Validierung, ReadOnly, Disabled, AutoSave und Custom-Validierung.

Grundvarianten

int?, decimal?, double? – alle mit Binding und Wertenanzeige.

int?
Wert:
decimal?
Wert:
double?
Wert:
Mit Placeholder
Ohne Label
Floating Label deaktiviert

Zustände

ReadOnly: Wert ist sichtbar und kopierbar, aber nicht editierbar – gestrichelter Rahmen, normaler Text, kein Sperr-Cursor.
Disabled: Feld ist vollständig deaktiviert – ausgegraut, halbtransparent, Cursor zeigt Sperre.


ReadOnly
ReadOnly (leer)
Disabled
Disabled (leer)

AfterValueChanged

AfterValueChanged wird nach jeder Wertänderung ausgelöst.

AfterValueChanged
Änderungen:

AutoSaveCallback

AutoSaveCallback wird nach jeder Wertänderung ausgelöst – standardmäßig nur wenn das Feld gültig ist (TriggerAutoSaveCallbackOnlyIfValid).

Nur bei gültigem Wert
Gespeichert:
Immer speichern
Gespeichert:

CustomValidationMethod

Eigene Validierungslogik ohne DataAnnotations – direkt als Func<TValue, bool>.

Nur positive Werte
Bereich 1–100
Max. 2 Nachkommastellen

Validierung mit DataAnnotations

Integration in EditContext via Form-Komponente und DataAnnotationsValidator. ShowValidationTooltip zeigt Fehlermeldungen inline.

ValidateOnInput

ValidateOnInput="true" (Standard): Validierung sofort beim Tippen. false: erst nach Verlassen des Feldes.

ValidateOnInput = true
ValidateOnInput = false

Size

Alle fünf Größen von Xs bis Xl – alle Felder teilen denselben Bindewert.

Xs
Sm
Md (Standard)
Lg
Xl
Aktueller Wert

class & style

Beliebige HTML-Attribute (class, style, data-*, aria-*) werden an den Input-Wrapper durchgereicht.

class
style
aria-label
data-testid
SKILL.md – Numberbox
---
name: NumberBox
description: Onesown Blazor Komponente NumberBox (Inputs). Verwende diesen Skill wenn du die NumberBox-Komponente verwenden, konfigurieren oder debuggen moechtest.
---

# NumberBox

**Namespace:** `Onesown.Blazor.Components`  
**Kategorie:** Inputs  
**Basisklasse:** `FormControlBase`  
**Generisch:** Ja (`NumberBox<TItem>` o.ae.)  

Generisches Zahlen-Eingabefeld (int, long, short, float, double, decimal) mit Floating-Label und DataAnnotations-Validierung. Ungültige Eingaben werden sofort als invalid markiert, ohne den gebundenen Wert zu überschreiben.

**Live-Demo:** https://components.schini.com/demo/numberbox  

## Parameter

| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| ``ValidateOnInput`` | ``bool`` | ``true`` | Validiert das Feld bei jeder Eingabe (oninput). Standard: true. |
| ``ValueExpression`` | ``Expression<Func<object>>`` |  | LINQ-Expression auf die gebundene Model-Property. Wird benötigt für DataAnnotations-Validierung und Floating-Label-Text. |
| ``ValueChanged`` | ``EventCallback<TValue>`` |  | EventCallback für Two-Way-Binding mit @bind-Value. Wird nach jeder gültigen Wertänderung ausgelöst. |
| ``Value`` | ``TValue`` |  | Aktuell gebundener Zahlenwert. |
| ``CustomValidationMethod`` | ``Func<TValue, bool>`` |  | Optionale zusätzliche Validierungsfunktion. Gibt true zurück wenn der Wert gültig ist, false wenn nicht. Ergänzt DataAnnotations-Validierung. |
| ``ReadOnly`` | ``bool`` | ``false`` | Setzt das Feld in den Nur-Lesen-Modus: Eingabe gesperrt, aber nicht ausgegraut. Standard: false. |

## Geerbte Parameter (FormControlBase)

| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| ``Size`` | ``string`` | ``OoSize.Md`` | Größe der Komponente. Mögliche Werte: OoSize.Xs, OoSize.Sm, OoSize.Md, OoSize.Lg, OoSize.Xl. Wird als CSS-Klasse am Root-Element gesetzt. |
| ``Id`` | ``string`` | ``Generator.GenerateRandomHtmlTagID()`` | Eindeutige HTML-ID des Input-Elements. Wird automatisch generiert und kann überschrieben werden (z. B. für Labels mit for-Attribut). |
| ``ShowLabel`` | ``bool`` | ``true`` | Blendet das Label über dem Eingabefeld ein oder aus. Standard: true. |
| ``IsFloatingLabel`` | ``bool`` | ``true`` | Aktiviert das schwebende Label (Floating Label), das beim Fokus oder bei Eingabe nach oben animiert. Standard: true. |
| ``Label`` | ``string`` |  | Beschriftung des Eingabefelds. Wird auch als Accessible-Name für Screenreader verwendet. |
| ``Placeholder`` | ``string`` | ``" "`` | Platzhaltertext im leeren Eingabefeld. Standard: Leerzeichen (verhindert Floating-Label-Sprung in Chrome). |
| ``AutoSaveCallback`` | ``EventCallback`` |  | Wird nach jeder Wertänderung ausgelöst und signalisiert der Seite, dass gespeichert werden soll. Kombinierbar mit TriggerAutoSaveCallbackOnlyIfValid. |
| ``TriggerAutoSaveCallbackOnlyIfValid`` | ``bool`` | ``true`` | Steuert ob AutoSaveCallback nur bei gültigem Wert ausgelöst wird. Standard: true. |
| ``AfterValueChanged`` | ``EventCallback`` |  | Wird nach jeder Wertänderung ausgelöst, unabhängig von der Gültigkeit des Werts. Geeignet für Live-Vorschau oder Seiteneffekte. |
| ``ShowValidationTooltip`` | ``bool`` | ``false`` | Zeigt Validierungsmeldungen als Tooltip neben dem Feld statt als Text darunter. Standard: false. |

## Hinweise

- Immer @bind-Value für Two-Way-Binding verwenden
- Für Formular-Validierung ValueExpression="() => _model.Property" setzen
- Komponente muss innerhalb eines &lt;Form&gt;- oder &lt;EditForm&gt;-Containers liegen, damit der EditContext greift
- AutoSaveCallback wird nach jeder gültigen Änderung ausgelöst, wenn TriggerAutoSaveCallbackOnlyIfValid=true (Standard)
- AfterValueChanged wird nach jeder Änderung ausgelöst, unabhängig von der Gültigkeit
- ShowValidationTooltip=true zeigt Validierungsmeldungen als Tooltip statt unter dem Feld
- Typparameter TValue: unterstützt int, long, short, float, double, decimal (nullable-Varianten ebenfalls)
- Ungültige Werte: werden im Feld angezeigt und als invalid markiert, TValue-Binding bleibt unverändert
- Nur-Lesen-Modus: ReadOnly="true" sperrt Eingabe, aber nicht ausgegraut
- Echtzeit-Validierung: ValidateOnInput="true" (Standard) validiert bei jeder Eingabe
- Eigene Validierung: CustomValidationMethod ergänzt DataAnnotations-Validierung mit eigenem Delegate


Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.