WebUtility.HtmlDecode-Ersatz in .NET Core

90

Ich muss HTML-Zeichen in .NET Core (MVC6) dekodieren. Es sieht so aus, als ob .NET Core nicht über die Funktion WebUtility.HtmlDecode verfügt, die zuvor von allen für diesen Zweck verwendet wurde. Gibt es einen Ersatz in .NET Core?

sibvic
quelle
1
Schauen Sie sich das an: msdn.microsoft.com/library/73z22y6h%28v=vs.100%29.aspx
Leo Chapiro
2
@duDE, er fragt eher .NET Core als .NET 4.
Schauen Sie sich meine Antwort an. Es ersetzt webutility.htmldecode im .net-Kern als httputility.HtmlDecode.

Antworten:

114

Dies ist in der System.Net.WebUtility- Klasse (seit .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);
}
Scott Dorman
quelle
8
Verwenden Sie
wolfyuk
4
Für .NET Core 2.1 siehe Gerardos Antwort unten, es ist nicht erforderlich, ein weiteres Nuget-Paket zu installieren.
Vlad Iliescu
33

Dies ist in Net Core 2.0

using System.Text.Encodings.Web;

und nenne es:

$"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(link)}'>clicking here</a>.");

UPDATE : Auch in .Net Core 2.1:

using System.Web;

HttpUtility.UrlEncode(code)
HttpUtility.UrlDecode(code)
Gerardo Buenrostro González
quelle
Es gibt auch die Methoden HttpUtility.HtmlEncode und HttpUtility.HtmlDecode.
Xhafan
16

Ich habe festgestellt, dass die HtmlDecode-Funktion in der WebUtility-Bibliothek funktioniert.

System.Net.WebUtility.HtmlDecode(string)
Pipding
quelle
3

Sie müssen eine Referenz hinzufügen System.Net.WebUtility.

  • Es ist bereits in .Net Core 2 ( Microsoft.AspNetCore.All) enthalten

  • Oder Sie können von NuGet - Vorschau-Version für .Net Core 1 installieren .

So sieht Ihr Code beispielsweise wie folgt aus

public static string HtmlDecode(this string value)
{
     value = System.Net.WebUtility.HtmlDecode(value);
     return value;
}
Nguyễn Top
quelle
3
Oder rufen Sie einfach an, WebUtility.HtmlDecodees gibt keinen Grund, es in eine Erweiterungsmethode zu verpacken ...
Jamie Rees
3
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);
    }
}

Sie können HttpUtility class in .net corezum Dekodieren oder Kodieren verwenden.

hoffe es wird funktionieren


quelle