This is a viewer only at the moment see the article on how this works.
To update the preview hit Ctrl-Alt-R (or ⌘-Alt-R on Mac) or Enter to refresh. The Save icon lets you save the markdown file to disk
This is a preview from the server running through my markdig pipeline
Htmx met Asp.Net Core
Thursday, 01 August 2024
Inleiding
Het gebruik van HTMX met ASP.NET Core is een geweldige manier om dynamische web-applicaties te bouwen met minimale JavaScript. HT MX laat toe dat je delen van je pagina kunt updaten zonder de hele pagina opnieuw te ladenM SK2 waardoor je applicatie meer responsief en interactief voelt.
Het is wat ik noemde 'hybriden' webdesign, waarbij je de pagina volledig met behulp van servers weergeeft en HTMX gebruikt om delen van de pagina dynamisch te updaten.
In dit artikel zal ik jullie laten zien hoe je begint met HTMX in een ASP-applicatie.
Voorwaarden
HTMX - Htmx is een JavaScript pakket, de makkelijkste manier om het in je project te betrekken is een CDN te gebruiken. Hier. )
<script src="https://unpkg.com/[email protected]" integrity="sha384-QWGpdj554B4ETpJJC9z+ZHJcA/i59TyjxEPXiiUgN2WmTyV5OEZWCD6gQhgkdpB/" crossorigin="anonymous"></script>
Je kan natuurlijk ook een kopie downloaden en erin betrekken 'manueelM SK1 (of LibMan of npm). gebruiken.
ASP.NET Bits
Ik raad ook aan om de Htmx Tag Helper te installeren. Hier.
Deze twee zijn van de prachtige Khalid Abuhakmeh
dotnet add package Htmx.TagHelpers
En het Htmx Nuget pakket van Hier.
dotnet add package Htmx
De tag helper laat je dit doen:
<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>
Alternatieve aanpak.
NOTA: Deze aanpak heeft één groot drawback; het produceert geen href voor de postlinkM SK3 Dit is een probleem voor SEO en toegankelijkheidMSC4 Het betekent ook dat deze links zullen falen als HTMX om een of andere reden niet laadt ' het laads niet ≥( CDN's DO gaan naar beneden
Een alternatieve aanpak is het gebruik van de hx-boost="true" attribute en normale asp.net core tag helpers. Zie Hier. om meer informatie te krijgen over hx-boost ( hoewel de docs een beetje ruw zijn.
Dit geeft een normale href uit, maar wordt door HTMX geintercepteerd en de inhoud dynamisch gelaad.
Dus als volgt:
<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>
Voordelen
HTMX werkt goed met gedeeltelijke aansigten. Je kan HT MX gebruiken om een gedeeltelijk aanzicht in een container te laden op je pagina. Dit is geweldig voor het dynamisch laden van delen van je pagina zonder een volledige pagina herlaaien .
In deze app hebben we een container in de Layout.cshtml-file die we een gedeeltelijke kijk in moeten laden.
<div class="container mx-auto" id="contentcontainer">
@RenderBody()
</div>
Normaal gesproken geeft het de serverside-inhoud weer, maar met behulp van de HTMX tag helper kun je zien dat we het doel bereiken. hx-target="#contentcontainer" Die zal het gedeeltelijke beeld in de container laden.
In ons project hebben we de BlogView gedeeltelijke kijk die we in de container willen laden.

Dan hebben we in de 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);
}
Hier zie je dat we de HTMX-request hebben.IsHtmx()methodeM SK2 dit zal waar zijn als het een HT MX-requête is.
Door dit te gebruiken kunnen we ervoor zorgen dat we ook directe vragen ondersteunen met weinig echte moeite.
In dit geval verwijst onze volledige visie naar deze gedeeltelijke:.
@model Mostlylucid.Models.Blog.BlogPostViewModel
@{
ViewBag.Title = "title";
Layout = "_Layout";
}
<partial name="_PostPartial" model="Model"/>
We hebben nu een super eenvoudige manier om gedeeltelijke aansigten in onze pagina te laden met behulp van HTMX.