Javascript &引用&燃气轮机&引用;符号显示为“&;燃气轮机&引用;当页面加载时

Javascript &引用&燃气轮机&引用;符号显示为“&;燃气轮机&引用;当页面加载时,javascript,asp.net-mvc,Javascript,Asp.net Mvc,我想在这个问题上寻求帮助 已验证从我的控制器传递到ViewBag.data的数据具有“>”符号 我的观点有问题: <script type="text/javascript"> google.load("visualization", "1.1", { packages: ["table"] }); google.setOnLoadCallback(drawTable); function drawTable() { var data = new google.visual

我想在这个问题上寻求帮助 已验证从我的控制器传递到ViewBag.data的数据具有“>”符号

我的观点有问题:

<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%' });
}

load(“可视化”、“1.1”、{packages:[“表”]});
setOnLoadCallback(drawTable);
函数drawTable(){
var data=new google.visualization.DataTable();
data.addColumn('string','countofdays');
data.addColumn('number','Total');
@foreach(ViewBag.data中的var项)
{
@:data.addRow(['@item.Title',@item.Total]);
}
var table=新的google.visualization.table(document.getElementById('table_div');
table.draw(数据,{showRowNumber:false,宽度:'100%,高度:'100%});
}
请告知为什么将
@item.Title
的值改为“>”
加载页面时。

您应该使用
@Html.Raw(item.Title)
防止视图上的Html编码您的代码
@item.Title
Html编码文本。通常(在注入HTML时)这是您想要的。如您所见,此编码将
转换为

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

当标题包含引号时,使用Html.Raw将导致问题,因为这将导致不正确的javascript


请参见

如果标题是“关于奥马利”怎么办?这将导致javascript错误。@HansKesting完全同意
<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%' });
}