J'ai besoin de décoder les caractères HTML dans .NET Core (MVC6). Il semble que .NET Core ne dispose pas de la fonction WebUtility.HtmlDecode que tout le monde utilisait auparavant à cette fin. Existe-t-il un remplacement dans .NET Core?
c#
.net
asp.net-core
asp.net-core-mvc
sibvic
la source
la source
Réponses:
C'est dans la classe System.Net.WebUtility (depuis .NET Standard 1.0):
// // Summary: // Provides methods for encoding and decoding URLs when processing Web requests. public static class WebUtility { public static string HtmlDecode(string value); public static string HtmlEncode(string value); public static string UrlDecode(string encodedValue); public static byte[] UrlDecodeToBytes(byte[] encodedValue, int offset, int count); public static string UrlEncode(string value); public static byte[] UrlEncodeToBytes(byte[] value, int offset, int count); }
la source
C'est dans Net Core 2.0
using System.Text.Encodings.Web;
et appelez-le:
$"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(link)}'>clicking here</a>.");
MISE À JOUR : également dans .Net Core 2.1:
using System.Web; HttpUtility.UrlEncode(code) HttpUtility.UrlDecode(code)
la source
J'ai trouvé la fonction HtmlDecode dans la bibliothèque WebUtility pour fonctionner.
System.Net.WebUtility.HtmlDecode(string)
la source
Vous devez ajouter une référence
System.Net.WebUtility
.Il est déjà inclus dans .Net Core 2 (
Microsoft.AspNetCore.All
)Ou vous pouvez installer à partir de NuGet - version préliminaire pour .Net Core 1.
Ainsi, par exemple, votre code ressemblera à celui ci-dessous
public static string HtmlDecode(this string value) { value = System.Net.WebUtility.HtmlDecode(value); return value; }
la source
WebUtility.HtmlDecode
il n'y a aucune raison de l'envelopper dans une méthode d'extension ...namespace System.Web { // // Summary: // Provides methods for encoding and decoding URLs when processing Web requests. // This class cannot be inherited. public sealed class HttpUtility { public HttpUtility(); public static string HtmlAttributeEncode(string s); public static void HtmlAttributeEncode(string s, TextWriter output); public static string HtmlDecode(string s); public static void HtmlDecode(string s, TextWriter output); public static string HtmlEncode(string s); public static string HtmlEncode(object value); public static void HtmlEncode(string s, TextWriter output); public static string JavaScriptStringEncode(string value); public static string JavaScriptStringEncode(string value, bool addDoubleQuotes); public static NameValueCollection ParseQueryString(string query); public static NameValueCollection ParseQueryString(string query, Encoding encoding); public static string UrlDecode(string str, Encoding e); public static string UrlDecode(byte[] bytes, int offset, int count, Encoding e); public static string UrlDecode(string str); public static string UrlDecode(byte[] bytes, Encoding e); public static byte[] UrlDecodeToBytes(byte[] bytes, int offset, int count); public static byte[] UrlDecodeToBytes(string str, Encoding e); public static byte[] UrlDecodeToBytes(byte[] bytes); public static byte[] UrlDecodeToBytes(string str); public static string UrlEncode(string str); public static string UrlEncode(string str, Encoding e); public static string UrlEncode(byte[] bytes); public static string UrlEncode(byte[] bytes, int offset, int count); public static byte[] UrlEncodeToBytes(string str); public static byte[] UrlEncodeToBytes(byte[] bytes); public static byte[] UrlEncodeToBytes(string str, Encoding e); public static byte[] UrlEncodeToBytes(byte[] bytes, int offset, int count); [Obsolete("This method produces non-standards-compliant output and has interoperability issues. The preferred alternative is UrlEncode(String).")] public static string UrlEncodeUnicode(string str); [Obsolete("This method produces non-standards-compliant output and has interoperability issues. The preferred alternative is UrlEncodeToBytes(String).")] public static byte[] UrlEncodeUnicodeToBytes(string str); public static string UrlPathEncode(string str); } }
Vous pouvez utiliser la
HttpUtility
classe.net core
pour le décodage ou l'encodage.espérons que cela fonctionnera.
la source
HtmlDecode
et la plupart des*Decode
méthodes n'ont pas été portées sur CoreFx. Seules les*Encode
méthodes sont disponibles.Voici ce qui est disponible aujourd'hui: https://github.com/dotnet/corefx/blob/1dfe38aeb2811fbbd6d4de36d210f060e80d50a6/src/System.Text.Encodings.Web/src/System/Text/Encodings/Web/HtmlEncoder.cs
la source