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 に答える