Alert

Der AlertBuilder (Fmh.Alert(...)) zeigt eine Meldung als Bootstrap-Toast unten in der Seitenmitte — mit Icon je Meldungsart, optionalem Schliessen-Knopf und optionalem automatischem Ausblenden. Der übliche Weg führt über AddAlert(...) im Controller und die Ausgabe im Layout.

Meldung als Toast

Der Toast erscheint unten in der Seitenmitte, sobald die Seite geladen ist. Auf dieser Seite steht bewusst nur ein Beispiel: Jede weitere Meldung landet an derselben Position und würde die erste verdecken.

@using FMH.Komponente.Basis.Ui.Feedback.Alert

@* Der Builder gibt an dieser Stelle nichts aus: Das Toast-Markup landet über den BodyPlacer am
   Ende des Body, das Anzeige-Skript über die Skript-Sammlung des Layouts. Die Position ist fest
   (unten, mittig) – deshalb steht auf dieser Seite nur ein Beispiel. *@

@Html.Fmh(Fmh.Alert("Die Angaben wurden gespeichert.", AlertType.Success))

<p class="mb-0">Der Toast erscheint unten in der Seitenmitte. Ohne <code>CanAutoHide()</code> bleibt
    er stehen, bis er über das Kreuz geschlossen wird – Seite neu laden bringt ihn zurück.</p>

Darstellung

Der Toast erscheint unten in der Seitenmitte. Ohne CanAutoHide() bleibt er stehen, bis er über das Kreuz geschlossen wird – Seite neu laden bringt ihn zurück.

Der AlertBuilder wird über Fmh.Alert(...) erzeugt und mit @Html.Fmh(...) gerendert. Er zeigt eine Meldung als Bootstrap-Toast unten in der Seitenmitte, mit Icon je Meldungsart:

@Html.Fmh(Fmh.Alert("Die Angaben wurden gespeichert.", AlertType.Success))

Standardwerte ohne weitere Angabe: Art Success, Schliessen-Knopf an, kein automatisches Ausblenden, Id ein neues Guid.

Methoden

Methode Erklärung
Fmh.Alert(text, AlertType) Kurzform für Fmh.Alert().Text(text, art).
.Text(string, AlertType) Meldungstext (wird HTML-kodiert) und Art.
.ShowCloseButton(bool = true) Blendet den Schliessen-Knopf ein oder aus.
.CanAutoHide(bool = true) Lässt den Toast nach einer Weile von selbst verschwinden.
.AutoHideInSeconds(int) Wartezeit dafür; Standard 10 Sekunden. Wirkt nur zusammen mit CanAutoHide().
.Id(string) Eigene Id statt des Guid — nötig, wenn der Toast per Skript angesprochen werden soll.

AlertType: Success (Haken), Info (i), Warning (Ausrufezeichen), Danger (Fehler-Icon).

Der übliche Weg: Meldung nach einem Redirect

Nach dem PRG-Muster (Post-Redirect-Get) überlebt die Meldung den Redirect in TempData. Im Controller:

this.AddAlert("Die Angaben wurden gespeichert.", AlertType.Success, autoHide: true, autoHideSeconds: 5);
return this.RedirectToAction(nameof(this.Index));

Und einmalig im Layout:

@if (TempData[MvcConst.AlertText] != null)
{
    @Html.Fmh(Fmh.Alert(TempData))
}

AddAlert(...) (Erweiterung auf Controller) legt Text, Art, Schliessen-Knopf, Auto-Hide und Wartezeit in TempData ab; Fmh.Alert(ITempDataDictionary) liest sie dort wieder aus und setzt die entsprechenden Optionen. So bleibt die Anzeige an einer Stelle, und jede Action meldet mit einer Zeile.

Wo die Ausgabe landet

Der Builder gibt an der Aufrufstelle nichts aus (HtmlString.Empty):

  • Das Toast-Markup geht über den BodyPlacer ans Ende des Body — dafür braucht das Layout @Html.RenderBodyPlacer().
  • Das Anzeige-Skript ($(...).toast("show")) geht in die Skript-Sammlung — dafür braucht das Layout @Html.RenderFmhScripts().

Beides steht in _BodyIncludes.cshtml der Basis-Komponente. Wo im View der Aufruf steht, spielt deshalb keine Rolle.

Was zu beachten ist

  • Die Position ist fest (unten, mittig). Mehrere Alerts auf derselben Seite erzeugen je einen eigenen Container an derselben Stelle und verdecken sich gegenseitig — daher steht auf dieser Demo-Seite bewusst nur ein Beispiel.
  • Ohne CanAutoHide() bleibt der Toast stehen, bis er geschlossen wird. Für Erfolgsmeldungen ist automatisches Ausblenden angenehmer, für Fehlermeldungen nicht.
  • Der Text wird kodiert; Markup darin erscheint als Zeichen.