我从我的控制器返回一个显示网格的模型。工作良好。我还需要使用相同的数据在谷歌地图上生成点。我在我的原型中设置了以下代码,我需要替换它:
var locationsAll = [
["Pretty", 40.1508, -83.21],
["Little", 40.1308, -83.11],
["Smug", 40.001, -83.01],
["Troublemaker", 40.109, -83.291],
["Smallest", 40.08, -83.20]
];
PlotpointsonMap(locationsAll);
到目前为止一切顺利。这是有效的,所以我将其转换为像这样的javascript:
@{
var locations = "[";
foreach (var gmap in Model.MapPoints )
{
locations += "['" + gmap.EventStringData + "'," + gmap.Latitude + "," + gmap.Longitude + "],";
}
locations = locations.TrimEnd(',') + "]";
}
var myLocations = @locations;
PlotpointsonMap(myLocations);
然而,这一半起作用。当我查看生成的源时,我在我的javascript块中获得以下代码:
var myLocations = [["update",40.080398,-83.139141]
我需要它像这样呈现:
var myLocations = [["update",40.080398,-83.139141]
非常感谢有关如何实现这一目标的任何想法。我试过了:
var myLocations = @Server.HtmlDecode(locations);
它给了我同样的结果:(
答案 0 :(得分:0)
哇,不! 请不要手动JSON操作。没有逗号,没有引号,没有修剪,没有括号请。那颗心。
只需使用JSON解析器:
<script type="text/javascript">
var locationsAll = @Html.Raw(Json.Encode(
Model.MapPoints.Select(x => new object[]
{
x.EventStringData, x.Latitude, x.Longitude
})
));
PlotpointsonMap(locationsAll);
</script>
JSON解析器现在可以保证,无论您在MapPoints
中拥有什么数据,它都将被正确编码。