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 med Asp.Net Core
Thursday, 01 August 2024
Inleiding
Att använda HTMX med ASP.NET Core är ett bra sätt att bygga webapplikationer med minimal JavaScript
Det är vad jag brukade kalla ', hybrid, ', webdesign , där du renderar sidan fullkomligt med hjälp av servern, -, sidakod och sedan använder HTMX för att uppdatera delar av sidan
I denna artikel kommer jag att visa hur man börjar med HTMX i en ASP-version.
Förberedelser
HTMX - Htmx är ett JavaScript-paket, det enklaste sättet att inkludera det i ditt projekt är att använda en CDN här )
<script src="https://unpkg.com/[email protected]" integrity="sha384-QWGpdj554B4ETpJJC9z+ZHJcA/i59TyjxEPXiiUgN2WmTyV5OEZWCD6gQhgkdpB/" crossorigin="anonymous"></script>
Du kan naturligtvis också ladda ner en kopia och inkludera den 'manuellt' (eller använda LibMan eller npmM SK3
ASP.NET-biter
Jag rekommenderar också att installera Htmx Tag Helper från här
De två är från den underbara Khalid Abuhakmeh
dotnet add package Htmx.TagHelpers
Och Htmx Nuget-paketet från här
dotnet add package Htmx
Begreppet tag helper låter dig göra detta.
<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>
Alternativ tillvägagångssätt.
NOTA: Det här tillvägagångssättet har en stor nackdel ; det producerar inget href för postlinken M SK3 Det är ett problem för SEO och tillgänglighet . Det betyder också att dessa länkar kommer att misslyckas om HTMX av någon anledning inte loadar MSC6 CDNs går ner
Ett annat sätt är att använda hx-boost="true" attribut and normal asp.net core tag helpers. Se här för mer information om hx-boost (men dokumenten är lite grova
Detta kommer att skicka ut en normal href men kommer att intercepteras av HTMX och innehållet lades dynamiskt.
Så som här::
<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>
Delpartier
HTMX fungerar bra med partiella bilder. Du kan använda HT MX för att ladda en partiell bild in i en behållare på din sida
I den här appen har vi en behållare i Layout.cshtml-filet som vi vill ladda upp en partiell bild i
<div class="container mx-auto" id="contentcontainer">
@RenderBody()
</div>
Vanligtvis renderar den serverseitiga innehållet men med hjälp av HTMX-tagassistenten kan du se att vi målar hx-target="#contentcontainer" som lader in den delliga bilden i behållaren.
I vårt projekt har vi en partiell bild av BlogView som vi vill ladda in i behållaren.

Sedan i Blog Controller har vi
[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);
}
Här kan ni se att vi har HTMX-Ansökan.IsHtmx()metodenM SK2 det här kommer återvända sant om begäran är en HT MX-ansökan
Med det här kan vi försäkra oss om att vi även stödjer direkt sökningar med lite verklig ansträngning
I det här fallet är vår fulla syn på detta partiella
@model Mostlylucid.Models.Blog.BlogPostViewModel
@{
ViewBag.Title = "title";
Layout = "_Layout";
}
<partial name="_PostPartial" model="Model"/>
Så nu har vi ett super enkelt sätt att ladda partiella seder till vår sida med hjälp av HTMX.