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

">" symbol is showing as ">" when page is loaded

本文关键字:符号 显示 加载      更新时间:2023-09-26

我想就此问题寻求帮助已验证从控制器传递到 ViewBag.data 的数据是否具有">"符号。

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

我在查看时遇到问题:

<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的值变为">"加载页面时。

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

您的代码@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