2

NewtonSoft.Json.JsonConvert.SerializeObject()ASP.NETディクショナリオブジェクトをJSON文字列にシリアル化するために使用しています。次に、ViewBagを使用してこの文字列をMVCビューに渡します。

MVC Razor by Razor構文でJSON文字列をViewBagからJavaScript変数にロードしようとすると、構文エラーが原因でJavaScriptがクラッシュします。ソースコードを調べると、次のことがわかります。

var hf = {"Test0":65,"Test1":23,"Test2":43,"Test3":6,"Test4":31,"Test5":78,"Test6":1,"Test7":53,"Test8":74,"Test9":54};

これは、ViewBagのコンテンツをビューにロードするための私のロジックです。

@section RenderChart
{
<script type="text/javascript">
    google.load("visualization", "1", { packages: ["corechart"] });
    function drawChart() {
        var hf = @ViewBag.ChartJsonData;

何らかの理由で、私のJSON文字列はHTMLエンコードされています。実行した後、ViewBagに渡してみましたが、役に立ちServer.HtmlDecode()ませんでした。この文字列をHTMLエンティティに変換せずにデコードしたり、MVCビューのJavaScriptに渡したりする方法を知っている人はいますか?

4

1 に答える 1

5

Razorは、。で出力された場合、すべての文字列を自動的にHTMLエンコードします@

HTMLエンコーディングが必要ない場合は、文字列をHtml.Rawでラップする必要があります。

<script type="text/javascript">
    google.load("visualization", "1", { packages: ["corechart"] });
    function drawChart() {
        var hf = @Html.Raw(ViewBag.ChartJsonData)
    }
</script>
于 2013-02-02T13:12:03.873 に答える