使用json格式在ajax请求中传递Html标记

时间:2013-03-02 16:34:43

标签: jquery ajax asp.net-mvc json

我用以下其他字符替换标签后,使用json格式在Ajax请求中传递html标签:

function changeJson(json) {
var ResultValue = "";
ResultValue = json;
var resultlength = ResultValue.length;

for (var wordlength = 0; wordlength < resultlength + 1; wordlength++) {
    ResultValue = ResultValue.replace("<", " l_ ");
    ResultValue = ResultValue.replace(">", " r_ ");
    ResultValue = ResultValue.replace("&", " and ");
}
return ResultValue;

}

还有其他方法可以做到。

2 个答案:

答案 0 :(得分:3)

你为什么这样做?这不是必需的。

只需使用[AllowHtml]属性修饰视图模型属性即可。就像那样:

public class MyViewModel
{
    [AllowHtml]
    public string SomeHtmlProperty { get; set; }
}

然后你可以有一个控制器动作来处理AJAX调用:

[HttpPost]
public ActionResult SomeAction(MyViewModel model)
{
    // do something with the model.SomeHtmlProperty here
    ...
}

最后你可以使用$ .ajax方法调用这个控制器动作:

$.ajax({
    url: '/somecontroller/someaction',
    type: 'POST',
    data: { someHtmlProperty: 'some value that could contain <, >, &, and whatever you want characters' },
    success: function(result) {
        // handle the results from your AJAX call here
    }
});

正如您所看到的,您并不需要编写名为changeJson的函数或类似的函数。

答案 1 :(得分:0)

Darin Dimitrov的解决方案非常好但是如果你想要你可以使用encodeURIComponent和decodeURIComponent来编码和解码客户端的html字符串。在服务器端,您可以使用HttpUtility.HtmlDecode解码编码的字符串。

encodeURIComponent("<a>& abc</a>");

演示:http://jsfiddle.net/9tYgm/