问题描述
我正在创建一个ASP.NET MVC应用程序,在其中显示带有数据库坐标的Google地图。我是一个菜鸟,我陷入了嵌套的foreach循环的问题... 在C#Razor页面上,我有一个JavaScript函数“ Initialize”,在其中循环遍历包含坐标的对象数组,并基于它们创建折线,然后将其添加到地图中。效果很好,代码如下:
var latLongCoordinates =
[
@foreach(var itemFlightState in Model.QARFlights[0].FlightStates)
{
<text> new google.maps.LatLng(@itemFlightState.PresentPosLatDec.ToString().Replace(",","."),@itemFlightState.PresentPoslongDec.ToString().Replace(",".")),</text>
}
];
var flightPath = new google.maps.polyline({
path: latLongCoordinates,geodesic: true,strokeColor: '#FF0000',strokeOpacity: 1.0,strokeWeight: 2
});
flightPath.setMap(map);
但是,我需要显示几条不同的折线(每次飞行一个),因此需要使用嵌套的foreach循环来实现这一点,但是它不起作用。我想用另一个foreach循环包围上面的示例,以绘制所有航班,而不仅仅是上面示例中的索引为0的航班。以下是我想做的事情:
@foreach (var itemQARFlight in Model.QARFlights) {
var latLongCoordinates =
[
@foreach(var itemFlightState in itemQARFlight.FlightStates)
{
<text> new google.maps.LatLng(@itemFlightState.PresentPosLatDec.ToString().Replace(",</text>
}
];
var flightPath = new google.maps.polyline({
path: latLongCoordinates,strokeWeight: 2
});
flightPath.setMap(map);
}
在添加周围的@foreach时,下面的所有内容都会变为红色,并且解析器似乎根本无法理解我的意思。
很抱歉,如果这是一个琐碎的问题,但我真的无法解决。任何帮助将不胜感激! 最好的祝福 Ulrika
解决方法
请注意,@foreach
带您回到C#,因此您需要再次将JavaScript包装在<text>
中。
@foreach (var itemQARFlight in Model.QARFlights) {
<text>
var latLongCoordinates =
...
flightPath.setMap(map);
</text>
}