Das EmailAttribute validiert eine Zeichenkette gegen ein E-Mail-Format (inkl. Prüfung
der Top-Level-Domain). Server- und clientseitig wirksam; ein leeres Feld gilt als gültig.
E-Mail-Format
Prüft eine Zeichenkette gegen ein E-Mail-Format inkl. Top-Level-Domain.
@model EmailBeispielViewModel
<form asp-area="Basis" asp-controller="Email" asp-action="Index" method="post">
<div asp-validation-summary="All" class="text-danger"></div>
@Html.EditorFor(m => m.EmailAdresse)
@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 EmailBeispielViewModel
{
[Display(Name = "E-Mail")]
[Email]
public string EmailAdresse { 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 EmailController : Controller
{
[HttpGet]
public IActionResult Index()
{
return this.View(new EmailBeispielViewModel());
}
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Index(EmailBeispielViewModel modell)
{
if (this.ModelState.IsValid)
{
// Gültig: Eingabe entspricht dem [Email]-Format -> 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 EmailAttribute (FMH.Komponente.Basis.Ui.Validation) validiert eine Zeichenkette gegen ein E-Mail-Format inklusive Prüfung der Top-Level-Domain. Es wird über das String-EditorTemplate gerendert (Textfeld) und wirkt server- und clientseitig (data-val-email, Adapter jquery.validate.unobtrusive.email.js).
[Display(Name = "E-Mail")]
[Email]
public string EmailAdresse { get; set; }
- Ein leeres Feld ist gültig — für ein Pflichtfeld zusätzlich
[Required](oder[RequiredIf]) setzen. - Die Standard-Fehlermeldung kommt lokalisiert aus der Ressource; eine eigene Meldung via
ErrorMessage/ErrorMessageResourceType.
Hinweis: Es gibt auch das Framework-Attribut [EmailAddress] — die FMH-Variante [Email] prüft zusätzlich die Top-Level-Domain gegen eine bekannte Liste.