我想就此问题寻求帮助 验证从我的控制器传递给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;”
当页面加载时。
答案 0 :(得分:1)
您应该使用@Html.Raw(item.Title)
来阻止视图上的html编码
答案 1 :(得分:1)
您的代码@item.Title
对文本进行html编码。通常(当注入HTML时)这就是你想要的。如您所见,此编码会将>
变为>
。
但是,您正在创建一个javascript块!在这里,您必须使用不同的编码:@Ajax.JavaScriptStringEncode(item.Title)
。这将正确地为javascript转义文本。
当你的标题包含引号时,使用Html.Raw会导致问题,因为这会导致错误的javascript。
请参阅https://msdn.microsoft.com/en-US/library/system.web.mvc.ajaxhelper.javascriptstringencode.aspx