在服务器端解码html

时间:2012-11-22 17:18:32

标签: jquery asp.net web-services

我有一个字符串,我想在客户端使用JavaScript进行编码:

/* JS code */
var blogBody = $(".editor").val();
var blogBodyEnc = encodeURIComponent(blogBody)
// blogBody = "<p>text</p><p><br></p><p><br></p><p>text</p>";
// blogBodyEnc = "%3Cp%3Etext%3C%2Fp%3E%3Cp%3E%3Cbr%3E%3C%2Fp%3E%3Cp%3E%3Cbr%3E%3C%2Fp%3E%3Cp%3Etext%3C%2Fp%3E"

然后我使用jquery ajax将编码字符串blogBodyEnc传递给服务器。现在我想在服务器上解码这个字符串。我在尝试:

/* ASP.NET code */
string msg = HttpUtility.HtmlDecode(blogBodyEnc);
// blogBodyEnc = "%3Cp%3Etext%3C%2Fp%3E%3Cp%3E%3Cbr%3E%3C%2Fp%3E%3Cp%3E%3Cbr%3E%3C%2Fp%3E%3Cp%3Etext%3C%2Fp%3E"
// msg =         "%3Cp%3Etext%3C%2Fp%3E%3Cp%3E%3Cbr%3E%3C%2Fp%3E%3Cp%3E%3Cbr%3E%3C%2Fp%3E%3Cp%3Etext%3C%2Fp%3E"

有人可以说出了什么问题吗?我期望在服务器端解码后看到html代码......但它仍然编码。

2 个答案:

答案 0 :(得分:4)

您需要UrlDecode,而不是HtmlDecode

答案 1 :(得分:1)

我认为他真的想要:

function htmlEncode(value){
   return $('<div/>').text(value).html();
}

并将其称为:

var blogBodyEnc = htmlEncode($(".editor").val());

然后使用

string msg = HttpUtility.HtmlDecode(blogBodyEnc);

添加样本jsfiddle