Email

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.