[英]Iterate through list in javascript
我正在使用Google Maps API开发.NET MVC 4
Web应用程序。
在这个项目中,我必须在地图上表示几个多边形。 我想到的解决方案是在database
创建两个表,一个表具有每个多边形的标识符,另一个表保存每个多边形每个角的纬度和经度。 现在,我必须将这些多边形加载到“视图”中的地图上。
我试图通过在ViewBag
加载列表并在脚本中进行遍历来实现此ViewBag
,该脚本将表示地图中的多边形。 我发送给ViewBag
是List<List<string[]>>
。 “主”列表的每个成员代表一个多边形,该多边形由多个标记( List<string[]>
)组成。 在string[]
我保存每个标记的纬度,经度和描述。
我现在的问题是遍历Javascript
此类列表。 那有可能吗? 还是有我没有考虑过的更流畅的解决方案?
谢谢!
您可以执行以下操作:
<script>
var arr = '@YourList`;
arr .forEach(function(item) {
// whatevery you want here
});
</script>
我要做的是将一个对象中的数据传递到您的视图,然后在您的视图中使用@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);
剃刀视图:
@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格式的列表,该列表是您在Controller中创建该列表时传入的数据。
是的,如果您将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值中,并且您可以毫无问题地进行操作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.