Htmx mit Asp-.-Net Core (Deutsch (German))

Htmx mit Asp-.-Net Core

Thursday, 01 August 2024

//

3 minute read

Einleitung

Die Verwendung von HTMX mit ASP-.-NET Core ist eine gute Möglichkeit, dynamische Webanwendungen mit minimalem JavaScript zu erstellen..-HTMX ermöglicht es Ihnen, Teile Ihrer Seite ohne einen vollständigen Seitenumladen zu aktualisieren.

Es ist das, was ich verwendet habe, um zu nennen: '.hybrid.'. Web-Design, wo Sie die Seite vollständig mit Server rendern.-.side Code und dann HTMX verwenden, um Teile der Seite dynamisch zu aktualisieren.

In diesem Artikel zeigen Sie, wie man mit HTMX in einer ASPA. NET Core Anwendung beginnt.

Voraussetzungen

Htmx ist ein JavaScript-Paket der easist Weg, um es in Ihrem Projekt ist die Verwendung eines CDN. Hierher )

<script src="https://unpkg.com/[email protected]" integrity="sha384-QWGpdj554B4ETpJJC9z+ZHJcA/i59TyjxEPXiiUgN2WmTyV5OEZWCD6gQhgkdpB/" crossorigin="anonymous"></script>

Sie können selbstverständlich auch eine Kopie herunterladen und sie mit einschließen.

ASP-.-NET-Bits

Ich empfehle auch die Installation der Htmx Tag Helper von Hierher

Diese sind beide von der wunderbaren Khalid Abuhakmeh

dotnet add package Htmx.TagHelpers

Und das Htmx Nuget-Paket von Hierher

 dotnet add package Htmx

Der Tag-Helfer lässt Sie dies tun

    <a hx-controller="Blog" hx-action="Show" hx-push-url="true" hx-get hx-target="#contentcontainer" hx-route-slug="@Model.Slug"
        class="block font-body text-lg font-semibold text-primary transition-colors hover:text-green dark:text-white dark:hover:text-secondary">@Model.Title</a>

Alternativer Ansatz

ANMERKUNG: Dieser Ansatz hat einen großen Nachteil: ;, es doesnses.',t produzieren ein href für den Beitrag link.MSC3, Dies ist ein Problem für SEO und Zugänglichkeit: MSC4, es bedeutet auch, dass diese Links fehlschlagen, wenn HTMX aus irgendeinem Grund nicht mehr geladen wird: (,CDNs DO go down...

Ein alternativer Ansatz besteht darin, die hx-boost="true" Attribut und normales asp-.-Netz-Kern-Tag-Helpers-. Hierher für weitere Informationen auf hx-- Boost .( , obwohl die docs sind ein wenig spärlich . Dies wird ein normales href ausgeben, wird aber von HTMX und dem dynamisch geladenen Inhalt abgefangen

So wie folgt:

 <a asp-controller="Blog" asp-action="Show" hx-boost="true"  hx-target="#contentcontainer" asp-route-slug="@Model.Slug"
       class="block font-body text-lg font-semibold text-primary transition-colors hover:text-green dark:text-white dark:hover:text-secondary">@Model.Title</a>

Teile

HTMX funktioniert gut mit Teilansichten......Sie können HTX verwenden, um eine Teilansicht in einen Container auf Ihrer Seite zu laden..........Dies ist ideal für das Laden von Teilen Ihrer Seite dynamisch ohne vollständiges Neuladen von Seiten....

In dieser App haben wir einen Container in der Layout-Datei, die wir eine Teilansicht laden möchten

    <div class="container mx-auto" id="contentcontainer">
   @RenderBody()

    </div>

Normalerweise gibt es den Server-Seiteninhalt, aber mit dem HTMX Tag Helfer über Sie sehen können wir Ziel hx-target="#contentcontainer" welche die Teilansicht in den Container laden wird

In unserem Projekt haben wir die BlogView Teilansicht, dass wir in den Container laden möchten .

img.png

Dann haben wir im Blog Controller

    [Route("{slug}")]
    [OutputCache(Duration = 3600)]
    public IActionResult Show(string slug)
    {
       var post =  blogService.GetPost(slug);
       if(Request.IsHtmx())
       {
              return PartialView("_PostPartial", post);
       }
       return View("Post", post);
    }

Sie können hier sehen, dass wir die HTMX-Anfrage haben - ..IsHtmx.(). Methode - MSV2. Dies wird true zurückgeben, wenn es sich um eine HTML-Anfrage handelt - MWS3. Wenn es sich darum handelt, geben wir die Teilansicht zurück.

Damit können wir sicherstellen, dass wir auch direkte Abfragen mit wenig echtem Aufwand unterstützen

In diesem Fall bezieht sich unsere volle Ansicht auf diese partielle

@model Mostlylucid.Models.Blog.BlogPostViewModel

@{
ViewBag.Title = "title";
Layout = "_Layout";
}
<partial name="_PostPartial" model="Model"/>

Und so haben wir jetzt eine super einfache Möglichkeit, Teilansichten in unsere Seite zu laden mit HTMX-.

Finding related posts...
logo

© 2026 Scott Galloway — Unlicense — All content and source code on this site is free to use, copy, modify, and sell.