Nummer

Das NummerAttribute validiert eine Zeichenkette gegen Dezimalzahlen (Punkt oder Komma als Dezimaltrenner). Server- und clientseitig wirksam.

Dezimalzahl

Prüft eine Zeichenkette gegen Dezimalzahlen (Punkt oder Komma).

@model NummerBeispielViewModel

<form asp-area="Basis" asp-controller="Nummer" asp-action="Index" method="post">
    <div asp-validation-summary="All" class="text-danger"></div>
    @Html.EditorFor(m => m.Betrag)
    @Html.Fmh(Fmh.Button()
        .Text("Absenden")
        .Size(ButtonSize.Sm)
        .Attributes(new { @class = "mt-2" }))
</form>
using System.ComponentModel.DataAnnotations;
using FMH.Komponente.Basis.Ui.Validation;

namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
    public class NummerBeispielViewModel
    {
        [Display(Name = "Betrag")]
        [Nummer]
        public string Betrag { get; set; }
    }
}
using FMH.Komponente.Basis.Erweiterungen;
using FMH.Komponente.Basis.Ui.Feedback.Alert;
using FMH.Komponente.WebUI.Areas.Basis.Models;
using Microsoft.AspNetCore.Mvc;

namespace FMH.Komponente.WebUI.Areas.Basis.Controllers.Beispiele
{
    [Area("Basis")]
    public class NummerController : Controller
    {
        [HttpGet]
        public IActionResult Index()
        {
            return this.View(new NummerBeispielViewModel());
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Index(NummerBeispielViewModel modell)
        {
            if (this.ModelState.IsValid)
            {
                // Gültig: Eingabe ist eine Dezimalzahl -> PRG-Redirect auf die GET-Action.
                this.AddAlert("Formular ist gültig – Validierung erfolgreich.", AlertType.Success, autoHide: true);
                return this.RedirectToAction(nameof(this.Index));
            }

            // Ungültig: dieselbe View mit den Validierungsfehlern erneut anzeigen.
            return this.View(modell);
        }
    }
}

Darstellung

Das NummerAttribute (FMH.Komponente.Basis.Ui.Validation) validiert eine Zeichenkette gegen Dezimalzahlen (Muster ^-?[0-9]+([\.\,][0-9]+)?$, Punkt oder Komma als Dezimaltrenner). Es wird über das String-EditorTemplate gerendert und wirkt server- und clientseitig (data-val-nummer, Adapter jquery.validate.unobtrusive.nummer.js).

[Display(Name = "Betrag")]
[Nummer]
public string Betrag { get; set; }
  • Gültig: 123, 12.5, 12,5, -42,7. Ungültig: 12. (Trenner ohne Nachkommastellen), abc.
  • Ein leeres Feld ist gültig — für ein Pflichtfeld zusätzlich [Required] setzen.
  • Für ganze Zahlen stattdessen [Ganzzahl] verwenden.