CheckboxRequired
Das CheckboxRequired-Attribut verlangt eine angekreuzte Checkbox (z. B. Zustimmung zu
Bedingungen). Serverseitig wirksam; ohne eigene ErrorMessage bliebe die Meldung leer.
Angekreuzte Checkbox
Verlangt eine angekreuzte Checkbox (z. B. Zustimmung).
@model CheckboxRequiredBeispielViewModel
<form asp-area="Basis" asp-controller="CheckboxRequired" asp-action="Index" method="post">
<div asp-validation-summary="All" class="text-danger"></div>
@Html.EditorFor(m => m.Angenommen)
@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.DataAnnotation;
namespace FMH.Komponente.WebUI.Areas.Basis.Models
{
public class CheckboxRequiredBeispielViewModel
{
[Display(Name = "Ich akzeptiere die Bedingungen")]
[UIHint("Checkbox")]
[CheckboxRequired(ErrorMessage = "Bitte akzeptieren Sie die Bedingungen")]
public bool? Angenommen { 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 CheckboxRequiredController : Controller
{
[HttpGet]
public IActionResult Index()
{
return this.View(new CheckboxRequiredBeispielViewModel());
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Index(CheckboxRequiredBeispielViewModel modell)
{
if (this.ModelState.IsValid)
{
// Gültig: Checkbox ist angekreuzt -> 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 CheckboxRequired-Attribut (FMH.Komponente.Basis.Ui.Validation.DataAnnotation) verlangt eine angekreuzte Checkbox — typisch für die Zustimmung zu Bedingungen. Die Eigenschaft ist ein bool?; über [UIHint("Checkbox")] wird das Checkbox-EditorTemplate gerendert. Die Validierung läuft serverseitig (kein eigener Client-Adapter).
[Display(Name = "Ich akzeptiere die Bedingungen")]
[UIHint("Checkbox")]
[CheckboxRequired(ErrorMessage = "Bitte akzeptieren Sie die Bedingungen")]
public bool? Angenommen { get; set; }
- Gültig nur, wenn die Checkbox angekreuzt ist (
true);falseoder kein Wert sind ungültig. - Das Attribut hat keine Ressourcen-Standardmeldung — ohne gesetzte
ErrorMessagebliebe die Meldung leer. DaherErrorMessage(oderErrorMessageResourceType/-Name) immer setzen.