0

在将标签替换为其他字符后,我正在使用 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;

}

有没有其他方法可以做到这一点。

4

2 回答 2

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或类似的东西。

于 2013-03-02T16:36:26.867 回答
0

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

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

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

于 2013-03-02T16:47:33.033 回答