在javascript中迭代列表

时间:2014-09-22 13:38:32

标签: javascript asp.net google-maps asp.net-mvc-4 google-maps-api-3

我正在使用Google Maps API 开发.NET MVC 4网络应用程序。

在这个项目中,我必须在地图上表示几个多边形。我提出的解决方案是在database中创建两个表,一个具有每个多边形的标识符,另一个保存每个多边形每个角的纬度和经度。现在我必须将这些多边形加载到视图中的地图上。

我试图通过在ViewBag中加载一个列表并在脚本中执行此操作来实现此目的,该脚本将代表地图中的多边形。我发送给ViewBag的是List<List<string[]>>。 &#34; main&#34;的每个成员list表示一个多边形,由多个标记(List<string[]>)组成。在string[]我保存每个标记的纬度,经度和描述。

我现在的问题是在Javascript中查看此类列表。这甚至可能吗?或者是否有一个我没有考虑过的更顺畅的解决方案?

谢谢!

3 个答案:

答案 0 :(得分:0)

您可以这样做:

 <script>
   var arr = '@YourList`;

   arr .forEach(function(item) {
     // whatevery you want here
   });
 </script>

答案 1 :(得分:0)

我要做的是将一个对象中的数据传递给您的视图,并在您的视图中使用@Html.Raw(Json.Encode(polygons))。示例如下。

C#型号:

public class Polygon {
  public string Name { get; set; } // name of polygon
  public List<string> Markers { get; set; } // list of markers
}

MVC控制器:

List<Polygon> polygons = ...; // List of Polygons, retrieved from database

return View(polygons);

Razor查看:

@model List<Polygon>

<script>
  var polygons = @Html.Raw(Json.Encode(Model)); // will render as var polygons = [ { Name: 'Polygon1', Markers: [ 'marker1', 'marker2' ] }, { Name: 'Polygon2', Markers: [...] } ];

  // from @Kosmo's answer
  polygons.forEach(function(polygon) {
    console.log('Name is ' + polygon.Name);
    console.log('Markers are ' + polygon.Markers.join(','));
  });
</script>

你最终得到的是JSON格式的List,它是在Controller中创建它时传入的数据。

答案 2 :(得分:0)

是的,如果您将ViewBag值保存在javascript上的变量中,则已经可以。

你可以这样做:

<script>
var myViewBagValue = '@ViewBag.NameOfViewBag';

//then you can iterate using one of all those ways that javascript provides

//every(), filter(), forEach(), map(), some() and etc.

</script>

这样,您的内容将始终存储在javascript值中,您可以毫无问题地进行操作。

相关问题