From 6e5253ce28fccc5b1c31714ac3ddd785aa5c1b23 Mon Sep 17 00:00:00 2001 From: rameel Date: Mon, 5 Oct 2026 23:43:27 +0500 Subject: [PATCH 1/2] http: unify HTMX request detection --- src/Ramstack.HtmxToolkit/HtmxRequestHeaders.cs | 2 +- src/Ramstack.HtmxToolkit/HttpRequestExtensions.cs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Ramstack.HtmxToolkit/HtmxRequestHeaders.cs b/src/Ramstack.HtmxToolkit/HtmxRequestHeaders.cs index 16c098d..07783dd 100644 --- a/src/Ramstack.HtmxToolkit/HtmxRequestHeaders.cs +++ b/src/Ramstack.HtmxToolkit/HtmxRequestHeaders.cs @@ -65,7 +65,7 @@ internal HtmxRequestHeaders(HttpRequest request) => /// /// The header name is . /// - public bool Request => GetBoolean(_headers, HtmxRequestHeaderNames.Request); + public bool Request => _headers.ContainsKey(HtmxRequestHeaderNames.Request); /// /// Gets the type of the expected response, either a partial or a full page. diff --git a/src/Ramstack.HtmxToolkit/HttpRequestExtensions.cs b/src/Ramstack.HtmxToolkit/HttpRequestExtensions.cs index 06b3e94..96cb6ce 100644 --- a/src/Ramstack.HtmxToolkit/HttpRequestExtensions.cs +++ b/src/Ramstack.HtmxToolkit/HttpRequestExtensions.cs @@ -16,7 +16,7 @@ public static class HttpRequestExtensions /// otherwise, . /// public static bool IsHtmxRequest(this HttpRequest request) => - request.Headers.ContainsKey(HtmxRequestHeaderNames.Request); + request.GetHtmxHeaders().Request; /// /// Determines whether the specified HTTP request is an HTMX request. @@ -31,11 +31,11 @@ public static bool IsHtmxRequest(this HttpRequest request) => public static bool IsHtmxRequest(this HttpRequest request, out HtmxRequestHeaders headers) { headers = new HtmxRequestHeaders(request); - return request.IsHtmxRequest(); + return headers.Request; } /// - /// Determines whether the specified HTTP request was made using AJAX instead of a normal navigation. + /// Determines whether the request came from a link or form enhanced with hx-boost. /// /// The HTTP request. /// @@ -43,7 +43,7 @@ public static bool IsHtmxRequest(this HttpRequest request, out HtmxRequestHeader /// otherwise, . /// public static bool IsHtmxBoosted(this HttpRequest request) => - request.Headers.TryGetValue(HtmxRequestHeaderNames.Boosted, out var value) && value is ["true"]; + request.GetHtmxHeaders().Boosted; /// /// Determines whether the specified HTTP request has an HX-Request-Type value of "full". From 13922bf7993615cec2f2df68dbd3c2297a04ec3a Mon Sep 17 00:00:00 2001 From: rameel Date: Mon, 5 Oct 2026 23:44:02 +0500 Subject: [PATCH 2/2] http: remove response headers when assigned null or empty values --- src/Ramstack.HtmxToolkit/HtmxResponseHeaders.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Ramstack.HtmxToolkit/HtmxResponseHeaders.cs b/src/Ramstack.HtmxToolkit/HtmxResponseHeaders.cs index b0cc14a..5fd5f41 100644 --- a/src/Ramstack.HtmxToolkit/HtmxResponseHeaders.cs +++ b/src/Ramstack.HtmxToolkit/HtmxResponseHeaders.cs @@ -202,7 +202,9 @@ public string Reselect /// The header value. private static void SetHeader(IHeaderDictionary headers, string key, string? value) { - if (value is not null) + if (string.IsNullOrEmpty(value)) + headers.Remove(key); + else headers[key] = value; }