“>” 中符号显示为“>”何时加载页面

时间:2016-02-04 09:32:16

标签: javascript asp.net-mvc

我想就此问题寻求帮助 验证从我的控制器传递给ViewBag.data的数据有“>”符号

ChartService objMD = new ChartService();
ViewBag.data = objMD.GetAgingInc();

我遇到了VIEW的问题:

<script type="text/javascript">
google.load("visualization", "1.1", { packages: ["table"] });
google.setOnLoadCallback(drawTable);

function drawTable() {
    var data = new google.visualization.DataTable();
    data.addColumn('string', 'Count of Days');
    data.addColumn('number', 'Total');


    @foreach(var item in ViewBag.data)
    {
        @: data.addRow(['@item.Title',@item.Total]);
            }
    var table = new google.visualization.Table(document.getElementById('table_div'));

    table.draw(data, { showRowNumber: false, width: '100%', height: '100%' });
}

请告知为何@item.Title的值转为“&gt;” 当页面加载时。

2 个答案:

答案 0 :(得分:1)

您应该使用@Html.Raw(item.Title)来阻止视图上的html编码

答案 1 :(得分:1)

您的代码@item.Title对文本进行html编码。通常(当注入HTML时)这就是你想要的。如您所见,此编码会将>变为&gt;

但是,您正在创建一个javascript块!在这里,您必须使用不同的编码:@Ajax.JavaScriptStringEncode(item.Title)。这将正确地为javascript转义文本。

当你的标题包含引号时,使用Html.Raw会导致问题,因为这会导致错误的javascript。

请参阅https://msdn.microsoft.com/en-US/library/system.web.mvc.ajaxhelper.javascriptstringencode.aspx