在MVC中的javascript中嵌套foreach

问题描述

我正在创建一个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>
}