From f227cbeca35f36e54b1731a6690520896f55efa3 Mon Sep 17 00:00:00 2001 From: "kishan.anem" Date: Sat, 19 May 2018 09:20:55 +0530 Subject: [PATCH] Added sperate option "IUrlHelper and support for RouteOptions.LowercaseUrls " @rynowak #518 #Issue: https://github.com/aspnet/Mvc/issues/7720 --- src/Microsoft.AspNetCore.Routing/RouteCollection.cs | 10 +++++----- src/Microsoft.AspNetCore.Routing/RouteOptions.cs | 7 ++++++- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.AspNetCore.Routing/RouteCollection.cs b/src/Microsoft.AspNetCore.Routing/RouteCollection.cs index 0d93c1f9ac..1d359cee57 100644 --- a/src/Microsoft.AspNetCore.Routing/RouteCollection.cs +++ b/src/Microsoft.AspNetCore.Routing/RouteCollection.cs @@ -139,7 +139,7 @@ namespace Microsoft.AspNetCore.Routing var url = pathData.VirtualPath; - if (!string.IsNullOrEmpty(url) && (_options.LowercaseUrls || _options.AppendTrailingSlash)) + if (!string.IsNullOrEmpty(url) && (_options.LowercaseUrls || _options.LowercaseQueryStrings || _options.AppendTrailingSlash)) { var indexOfSeparator = url.IndexOfAny(UrlQueryDelimiters); var urlWithoutQueryString = url; @@ -154,11 +154,11 @@ namespace Microsoft.AspNetCore.Routing if (_options.LowercaseUrls) { urlWithoutQueryString = urlWithoutQueryString.ToLowerInvariant(); + } - if (!string.IsNullOrEmpty(queryString)) - { - queryString = queryString.ToLowerInvariant(); - } + if (_options.LowercaseQueryStrings) + { + queryString = queryString.ToLowerInvariant(); } if (_options.AppendTrailingSlash && !urlWithoutQueryString.EndsWith("/")) diff --git a/src/Microsoft.AspNetCore.Routing/RouteOptions.cs b/src/Microsoft.AspNetCore.Routing/RouteOptions.cs index 1ae47ed13f..45f5589ed0 100644 --- a/src/Microsoft.AspNetCore.Routing/RouteOptions.cs +++ b/src/Microsoft.AspNetCore.Routing/RouteOptions.cs @@ -10,10 +10,15 @@ namespace Microsoft.AspNetCore.Routing public class RouteOptions { /// - /// Gets or sets a value indicating whether all generated URLs are lower-case. + /// Gets or sets a value indicating whether all generated URLs are lower-case. it doesn't include the query string. /// public bool LowercaseUrls { get; set; } + /// + /// Gets or sets a value indicating whether all generated QUERY STRINGS are lower-case. + /// + public bool LowercaseQueryStrings { get; set; } + /// /// Gets or sets a value indicating whether a trailing slash should be appended to the generated URLs. ///