NoHtml

Das NoHtmlAttribute lehnt Eingaben mit HTML-Code ab (öffnende/schliessende Tags). Server- und clientseitig wirksam.

Kein HTML

Lehnt Eingaben mit HTML-Code (Tags) ab.

@model NoHtmlBeispielViewModel

<form asp-area="Basis" asp-controller="NoHtml" asp-action="Index" method="post">
    <div asp-validation-summary="All" class="text-danger"></div>
    @Html.EditorFor(m => m.Kommentar)
    @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 NoHtmlBeispielViewModel
    {
        [Display(Name = "Kommentar")]
        [NoHtml]
        public string Kommentar { 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 NoHtmlController : Controller
    {
        [HttpGet]
        public IActionResult Index()
        {
            return this.View(new NoHtmlBeispielViewModel());
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Index(NoHtmlBeispielViewModel modell)
        {
            if (this.ModelState.IsValid)
            {
                // Gültig: Eingabe enthält keinen HTML-Code -> 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 NoHtmlAttribute (FMH.Komponente.Basis.Ui.Validation) lehnt Eingaben mit HTML-Code ab (öffnende oder schliessende Tags, Muster .*<[a-zA-Z/].*). Es wird über das String-EditorTemplate gerendert und wirkt server- und clientseitig (data-val-nohtml, Adapter jquery.validate.unobtrusive.nohtml.js).

[Display(Name = "Kommentar")]
[NoHtml]
public string Kommentar { get; set; }
  • Gültig: Ein ganz normaler Text, 3 < 5. Ungültig: Text mit <b>Auszeichnung</b>, </div>.
  • Ein leeres Feld ist gültig — für ein Pflichtfeld zusätzlich [Required] setzen.
  • Ohne eigene ErrorMessage erscheint die lokalisierte Standardmeldung aus der Ressource.