Web核心中的WebUtility.HtmlDecode替换

时间:2016-02-16 16:13:17

标签: c# .net asp.net-core asp.net-core-mvc

我需要在.NET Core(MVC6)中解码HTML字符。看起来.NET Core没有WebUtility.HtmlDecode函数,之前每个人都用它。 .NET Core中是否存在替换?

7 个答案:

答案 0 :(得分:87)

这是System.Net.WebUtility类:

//
// 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);
}

答案 1 :(得分:17)

这是在Net Core 2.0中

using System.Text.Encodings.Web;

并称之为:

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

<强>更新: 同样在.Net Core 2.1中:

using System.Web;

HttpUtility.UrlEncode(code)
HttpUtility.UrlDecode(code)

答案 2 :(得分:12)

我发现WebUtility库中的HtmlDecode函数可以正常工作。

System.Net.WebUtility.HtmlDecode(string)

答案 3 :(得分:2)

这不是答案,但我的提示是如何解决这类问题的。 仅在您使用ReSharper时才有用。

我已经开始在.NET Core应用程序上开发并遇到了一些问题,比如我不知道我常用类所在的软件包名称。 ReShareper具有解决此问题的强大功能:

enter image description here

查看下一篇文章了解更多详情 - Finding, Exploring, and Installing NuGet Packages。这个功能节省了我很多时间。

编辑:您现在不需要ReSharper,因为Visual Studio 2017具有类似的功能 - Visual Studio 2017 can automatically recommend NuGet packages for unknown types.

答案 4 :(得分:2)

您需要添加引用System.Net.WebUtility

  • 它已包含在.Net Core 2中(Microsoft.AspNetCore.All

  • 或者您可以从NuGet安装 - .Net Core 1的预览版。

例如,您的代码将如下所示

public static string HtmlDecode(this string value)
{
     value = System.Net.WebUtility.HtmlDecode(value);
     return value;
}

答案 5 :(得分:1)

HtmlDecode并且大多数*Decode方法未移植到CoreFx。只有*Encode方法可用。

以下是今天可用的内容:https://github.com/dotnet/corefx/blob/1dfe38aeb2811fbbd6d4de36d210f060e80d50a6/src/System.Text.Encodings.Web/src/System/Text/Encodings/Web/HtmlEncoder.cs

答案 6 :(得分:1)

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);
    }
}

您可以使用HttpUtility中的.net core类进行解码或编码。

希望它能工作。