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
ErrorMessageerscheint die lokalisierte Standardmeldung aus der Ressource.