HttpContext.Current.Server.UrlEncode
Cela ne fonctionne que dans .NET Framework. Comment puis-je encoder ou décoder des arguments URI dans un projet ASP.NET Core?
Pour ASP.NET Core 2.0+, ajoutez simplement System.Net
espace de nom - WebUtility
la classe est fournie avec le package System.Runtime.Extensions
nuget, référencé par défaut dans le projet ASP.NET Core.
Pour la version précédente, ajoutez le package Microsoft.AspNetCore.WebUtilities
nuget.
Ensuite, la classe WebUtility
sera disponible pour vous:
public static class WebUtility
{
public static string UrlDecode(string encodedValue);
public static string UrlEncode(string value);
}
Il est disponible sur version 2.0.0 du .Net Core SDK , dans System.Net.WebUtility.UrlEncode
( voir documentation )
Pour ASP.Net Core 2.0+ et si vous souhaitez que les espaces soient codés comme suit: %20
par opposition à +
;
Utilisation:
Uri.EscapeDataString(someString);
Ne perdez pas votre temps, j'ai beaucoup d'expérience avec ces soi-disant codeurs d'URL, ils sont tous inutiles et ont des bizarreries différentes. Par exemple, WebUtility.UrlEncode ne prend pas en charge le signe "+".
Si vous souhaitez coder les paramètres d'URL, utilisez un codage BASE58. Il utilise uniquement des lettres de l'alphabet + des chiffres, vous n'avez donc pas besoin de coder l'URL.
J'utilise une redirection et UrlEncode n'a pas fonctionné pour moi car il code l'intégralité de l'URL. J'ai résolu ce problème en utilisant plutôt UriHelper.Encode, présenté ci-dessous.
// generate url string...
return Redirect(Microsoft.AspNetCore.Http.Extensions.UriHelper.Encode(new System.Uri(url)));